Ответ
 
Опции темы
11.03.2016, 15:06
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от egorr007 Посмотреть сообщение
А пример, будьте добры, если не затруднит.
Ну так я дал пример. Единственная поправка это размерность массива не учёл.
Код:
 double Mass[2][2];
/********************Script program start function********************/
void OnStart()
{
 STORY(Mass);
 
 Print("Mass[0][0] ", Mass[0][0], " Mass[0][1] ", Mass[0][1], " Mass[1][0] ", Mass[1][0], " Mass[1][1] ", Mass[1][1]);
}/********************************************************************/

void STORY(double & arr[][])
{
   arr[0][0] = 1.0;
   arr[0][1] = 2.0;
   arr[1][0] = 10.0;
   arr[1][1] = 20.0;
}/********************************************************************/
А зачем тебе двухмерный массив? Ведь индекс и так присутствует.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
11.03.2016, 16:42
Аватар для egorr007
egorr007 Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Сообщение от AlexeyVik Посмотреть сообщение
Ну так я дал пример. Единственная поправка это размерность массива не учёл.

А зачем тебе двухмерный массив? Ведь индекс и так присутствует.
Ах, мне не нужен 2-х двумерный массив, мне нужна функция, Одна функция, а не n-е количество её копий..

Не могу пока, понять как это сделать, может кто то знает, как это сделать... поэтому к вам и обращаюсь. В среднем от неё мне нужно от500 до1500 значений. Что делать с вашим примером, даже не представляю.
egorr007 вне форума Ответить с цитированиемОтветить с цитированием  
11.03.2016, 16:54
Аватар для egorr007
egorr007 Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
//+-------------------------+ как сделать из такого:
(STORY18((STORY17((STORY16(STORY15(STORY14(STORY13 (STORY12(STORY11(STORY10(STORY9(STORY8(STORY7(STOR Y6(STORY5(STORY4(STORY3(STORY2(STORY1(Bid)
))))))))))))))));
//+-------------------------+ такое:
STORY1(i,Bid);
egorr007 вне форума Ответить с цитированиемОтветить с цитированием  
11.03.2016, 19:18
Аватар для Cemen4yk1
Cemen4yk1 Местный житель
Регистрация: 18.09.2014 / Сообщений: 226
Поблагодарили 246 раз(а) / Репутация: 247

Скрытый текст

Сообщение от egorr007 Посмотреть сообщение
//+-------------------------+ как сделать из такого:
(STORY18((STORY17((STORY16(STORY15(STORY14(STORY13(STORY12(STORY11(STORY10(STORY9(STORY8(STORY7(STORY6(STORY5(STORY4(STORY3(STORY2(STORY1(Bid)
))))))))))))))));
//+-------------------------+ такое:
STORY1(i,Bid);
[свернуть]

думаю както так можно примерно решить вашу задачу, но это мазохизм лютый

PHP код:
// вот чтото типа такого своял за 5 минут 
for(int i=015i++){//цикл количества повторений
//где i это сколько раз мы рассчитаем функцию от функии
for(int a=0<= 100a++){//цикл заполнения
//AV[] - исходный массив с данными на 100 элементов
AV2[a] = iMAOnArray(AV,100,14,0,MODE_LWMA,a);
}
for(
int c=0<= 100c++){//цикл перезаполнения
AV[c] = AV2[c]}// перезаполнение в исходный массив(можно и через копирование)

Cemen4yk1 на форуме Ответить с цитированиемОтветить с цитированием  
12.03.2016, 07:42
Аватар для egorr007
egorr007 Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Спасибо большое, буду рыть..
egorr007 вне форума Ответить с цитированиемОтветить с цитированием  
13.03.2016, 08:04
Аватар для egorr007
egorr007 Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
В общем на объектах сделал.. STORY1(int index, int kod = -1); index - указанный объект в истории, kod - код объекта. Возвращает цену этого объекта или ноль.

За подсказки спасибо! рассматривал все варианты.

Последний раз редактировалось egorr007; 13.03.2016 в 08:29.
egorr007 вне форума Ответить с цитированиемОтветить с цитированием  
13.03.2016, 14:38
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от egorr007 Посмотреть сообщение
Ах, мне не нужен 2-х двумерный массив, мне нужна функция, Одна функция, а не n-е количество её копий..

Не могу пока, понять как это сделать, может кто то знает, как это сделать... поэтому к вам и обращаюсь. В среднем от неё мне нужно от500 до1500 значений. Что делать с вашим примером, даже не представляю.
Каков вопрос, таков и ответ. В твоём вопросе был двухмерный массив, вернись и уточни о чём ты спрашивал.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
14.03.2016, 08:33
Аватар для egorr007
egorr007 Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Сообщение от AlexeyVik Посмотреть сообщение
Каков вопрос, таков и ответ. В твоём вопросе был двухмерный массив, вернись и уточни о чём ты спрашивал.
Согласен. Нужно более доходчиво объяснять. Со двора начал...
В общем для такого варианта нужен блок для хранения прошлых значений, а с объектами таким "блоком" выступает сам график.
На этом пока и остановился.
PHP код:
      Comment("\n"
                   "price_0   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_1   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_2   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_3   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_4   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_5   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_6   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_7   "
,(string) Get_index_Price_OBJ,),"\n"
                   "price_8   "
,(string) Get_index_Price_OBJ,),"\n"
               
// "price_   ",(string) Get_index_Price_OBJ( индекс, код объекта ),"\n"

            
); 
Вложения:
Тип файла: txt функция Get_index_Price_OBJ.txt (1.5 Кб, 3 просмотров)
egorr007 вне форума Ответить с цитированиемОтветить с цитированием  
14.03.2016, 08:47
Аватар для egorr007
egorr007 Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Такая картинка в общем.
Миниатюры:
Нажмите на изображение для увеличения
Название: картинка.jpg
Просмотров: 20
Размер:	108.7 Кб
ID:	237479  
egorr007 вне форума Ответить с цитированиемОтветить с цитированием  
14.03.2016, 11:31
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от egorr007 Посмотреть сообщение
Такая картинка в общем.
Используй в цикле объявленный ранее и обнулённый перед циклом,
_Comment = StringConcatenate(_Comment, price_, i, " ", massiv[i], "\n");
И в конце
Comment(_Comment);
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
14.03.2016, 14:06
Аватар для gince
gince Местный знаток
Регистрация: 09.09.2008 / Адрес: Литва / Сообщений: 427
Поблагодарили 783 раз(а) / Репутация: 783
  • Отправить сообщение для gince с помощью Skype™
Здравствуйте!
Написал мултивалютную и мултитаймфреймную функцию для определения нового бара. Подключил функцию в МТС и МТФ индикаторе для выдачи алерта при сигнале орин раз в течение бара.

Скрытый текст

bool f_isMTFMULTISY_NewBar0(string f_sy,int f_tf) { int tfIndex=-1; int sy_index=-1; string sym="";//---- switch(f_tf) { case 1 : tfIndex = 0; break; case 5 : tfIndex = 1; break; case 15 : tfIndex = 2; break; case 30 : tfIndex = 3; break; case 60 : tfIndex = 4; break; case 240 : tfIndex = 5; break; case 1440 : tfIndex = 6; break; case 10080: tfIndex = 7; break; default : tfIndex =-1; break; } if(sym=="AUDCAD")sy_index=0; else if(sym =="AUDCHF")sy_index=0; else if(sym =="AUDJPY")sy_index=1; else if(sym =="AUDNZD")sy_index=2; else if(sym =="AUDUSD")sy_index=3; else if(sym =="CADCHF")sy_index=4; else if(sym =="CADJPY")sy_index=5; else if(sym =="CHFJPY")sy_index=6; else if(sym =="EURAUD")sy_index=7; else if(sym =="EURCAD")sy_index=8; else if(sym =="EURCHF")sy_index=9; else if(sym =="EURGBP")sy_index=10; else if(sym =="EURJPY")sy_index=11; else if(sym =="EURNZD")sy_index=12; else if(sym =="EURUSD")sy_index=13; else if(sym =="GBPAUD")sy_index=14; else if(sym =="GBPCAD")sy_index=15; else if(sym =="GBPCHF")sy_index=16; else if(sym =="GBPJPY")sy_index=17; else if(sym =="GBPNZD")sy_index=18; else if(sym =="GBPUSD")sy_index=19; else if(sym =="NZDCAD")sy_index=20; else if(sym =="NZDCHF")sy_index=21; else if(sym =="NZDJPY")sy_index=22; else if(sym =="NZDUSD")sy_index=23; else if(sym =="USDCAD")sy_index=24; else if(sym =="USDCHF")sy_index=25; else if(sym =="USDJPY")sy_index=26; static int LastBar[8][26]= { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 }; datetime curbar=iTime(f_sy,f_tf,0); if(LastBar[tfIndex][sy_index]!=curbar) { LastBar[tfIndex][sy_index]=curbar; return (true); } else { return(false); } }
[свернуть]
Но алерт работает при каждом новом тике. Не могу найти ошибку, помогите.
Вложения:
Тип файла: mq4 gi_DB Stoch Break 20_80.mq4 (19.9 Кб, 1 просмотров)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас

Последний раз редактировалось NSerega; 14.03.2016 в 23:49.
gince на форуме Ответить с цитированиемОтветить с цитированием  
15.03.2016, 18:05
Аватар для _SERG_
_SERG_ Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Сообщение от gince Посмотреть сообщение
Здравствуйте!
Написал мултивалютную и мултитаймфреймную функцию для определения нового бара. Подключил функцию в МТС и МТФ индикаторе для выдачи алерта при сигнале орин раз в течение бара.

Скрытый текст

bool f_isMTFMULTISY_NewBar0(string f_sy,int f_tf) { int tfIndex=-1; int sy_index=-1; string sym="";//---- switch(f_tf) { case 1 : tfIndex = 0; break; case 5 : tfIndex = 1; break; case 15 : tfIndex = 2; break; case 30 : tfIndex = 3; break; case 60 : tfIndex = 4; break; case 240 : tfIndex = 5; break; case 1440 : tfIndex = 6; break; case 10080: tfIndex = 7; break; default : tfIndex =-1; break; } if(sym=="AUDCAD")sy_index=0; else if(sym =="AUDCHF")sy_index=0; else if(sym =="AUDJPY")sy_index=1; else if(sym =="AUDNZD")sy_index=2; else if(sym =="AUDUSD")sy_index=3; else if(sym =="CADCHF")sy_index=4; else if(sym =="CADJPY")sy_index=5; else if(sym =="CHFJPY")sy_index=6; else if(sym =="EURAUD")sy_index=7; else if(sym =="EURCAD")sy_index=8; else if(sym =="EURCHF")sy_index=9; else if(sym =="EURGBP")sy_index=10; else if(sym =="EURJPY")sy_index=11; else if(sym =="EURNZD")sy_index=12; else if(sym =="EURUSD")sy_index=13; else if(sym =="GBPAUD")sy_index=14; else if(sym =="GBPCAD")sy_index=15; else if(sym =="GBPCHF")sy_index=16; else if(sym =="GBPJPY")sy_index=17; else if(sym =="GBPNZD")sy_index=18; else if(sym =="GBPUSD")sy_index=19; else if(sym =="NZDCAD")sy_index=20; else if(sym =="NZDCHF")sy_index=21; else if(sym =="NZDJPY")sy_index=22; else if(sym =="NZDUSD")sy_index=23; else if(sym =="USDCAD")sy_index=24; else if(sym =="USDCHF")sy_index=25; else if(sym =="USDJPY")sy_index=26; static int LastBar[8][26]= { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 }; datetime curbar=iTime(f_sy,f_tf,0); if(LastBar[tfIndex][sy_index]!=curbar) { LastBar[tfIndex][sy_index]=curbar; return (true); } else { return(false); } }
[свернуть]
Но алерт работает при каждом новом тике. Не могу найти ошибку, помогите.
Рекомендую воспользоваться отладчиком, чтобы увидеть, как работает то, что написано.
_SERG_ на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gince (15.03.2016)
16.03.2016, 07:13
Аватар для Oleg2014
Oleg2014 Интересующийся
Регистрация: 08.12.2014 / Сообщений: 36
Поблагодарили 2 раз(а) / Репутация: 3
Доброе время суток. Помогите с проблемой. Когда на рынке есть открытый ордер на бай или сел и есть несколько отложек, я хочу их закрыть, но мне выдает ошибку OrderDelete 4108,когда в рынке только отлодки все работает нормально. Заранее спасибо.
//+------------------------------------------------------------------+
void CloseAll(int type)
{
bool cl=true;
double pBid,pAsk;

for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
pBid=MarketInfo(OrderSymbol(),MODE_BID);
pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
if(type==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),fND(pBid), Slip,Blue);
if(type==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),fND(pAsk), Slip,Red);
if(type==OP_BUYLIMIT || type==OP_SELLLIMIT) cl=OrderDelete(OrderTicket(),Yellow);
}
}
}
}
//+------------------------------------------------------------------+
Oleg2014 вне форума Ответить с цитированиемОтветить с цитированием  
16.03.2016, 07:18
Аватар для zQuant
zQuant Местный житель
Регистрация: 21.01.2016 / Адрес: https://www.mql5.com/ / Сообщений: 395
Поблагодарили 238 раз(а) / Репутация: 238
Сообщение от Oleg2014 Посмотреть сообщение
Доброе время суток. Помогите с проблемой. Когда на рынке есть открытый ордер на бай или сел и есть несколько отложек, я хочу их закрыть, но мне выдает ошибку OrderDelete 4108,когда в рынке только отлодки все работает нормально. Заранее спасибо.
//+------------------------------------------------------------------+
void CloseAll(int type)
{
bool cl=true;
double pBid,pAsk;

for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
type = OrderType()l
pBid=MarketInfo(OrderSymbol(),MODE_BID);
pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
if(type==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),fND(pBid), Slip,Blue);
if(type==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),fND(pAsk), Slip,Red);
if(type==OP_BUYLIMIT || type==OP_SELLLIMIT) cl=OrderDelete(OrderTicket(),Yellow);
}
}
}
}
//+------------------------------------------------------------------+
type = OrderType()l
zQuant вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Oleg2014 (16.03.2016)
16.03.2016, 11:55
Аватар для sergeipk3
sergeipk3 Интересующийся
Регистрация: 13.05.2013 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
Всем привет! Подскажите как написать советник по трем внешним (пользов.) индикаторам! Нашел инфу но там только один индикатор а как все их вместе использовать не понятно. Выдает ошибку что переменные одинаковые.??
sergeipk3 на форуме Ответить с цитированиемОтветить с цитированием  
16.03.2016, 13:06
Аватар для Oleg2014
Oleg2014 Интересующийся
Регистрация: 08.12.2014 / Сообщений: 36
Поблагодарили 2 раз(а) / Репутация: 3
Сообщение от sergeipk3 Посмотреть сообщение
Всем привет! Подскажите как написать советник по трем внешним (пользов.) индикаторам! Нашел инфу но там только один индикатор а как все их вместе использовать не понятно. Выдает ошибку что переменные одинаковые.??
Что за индикаторы, давай гляну.
Oleg2014 вне форума Ответить с цитированиемОтветить с цитированием  
16.03.2016, 15:11
Аватар для sergeipk3
sergeipk3 Интересующийся
Регистрация: 13.05.2013 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
sergeipk3 на форуме Ответить с цитированиемОтветить с цитированием  
16.03.2016, 16:05
Аватар для zQuant
zQuant Местный житель
Регистрация: 21.01.2016 / Адрес: https://www.mql5.com/ / Сообщений: 395
Поблагодарили 238 раз(а) / Репутация: 238
Сообщение от sergeipk3 Посмотреть сообщение
Всем привет! Подскажите как написать советник по трем внешним (пользов.) индикаторам! Нашел инфу но там только один индикатор а как все их вместе использовать не понятно. Выдает ошибку что переменные одинаковые.??
Доделывать бота. 3 раза вызывать iCustom - по разу для каждого индикатора. Либо больше, если несколько буферов.
Люди, кто задает такие вопросы - лучше обращаться к специалистам.
zQuant вне форума Ответить с цитированиемОтветить с цитированием  
17.03.2016, 07:48
Аватар для Oleg2014
Oleg2014 Интересующийся
Регистрация: 08.12.2014 / Сообщений: 36
Поблагодарили 2 раз(а) / Репутация: 3
Сообщение от sergeipk3 Посмотреть сообщение
BUY-SELL.SIGNAL.mq4

BuySellArrowScalper_V2.0.ex4

MACD^RSI-arrows.mq4
Индикаторы рисуют и запаздывают, толку будет минимум
Oleg2014 вне форума Ответить с цитированиемОтветить с цитированием  
17.03.2016, 08:08
Аватар для sergeipk3
sergeipk3 Интересующийся
Регистрация: 13.05.2013 / Сообщений: 8
Поблагодарили 0 раз(а) / Репутация: 1
даже после закрытой свечи рисуют?
sergeipk3 на форуме Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 03:59. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO