Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 695

 
jekk:

Доброе время суток! Помогите пожалуйста разобраться с отложенными ордерами. К примеру надо по индикатору выставить отложку. Как это можно прописать?

       Price =  NormalizeDouble (iMA(Symbol(),TimeFrame_D1, EMA_Period_21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// как правильно прописать эту строчку?

       SL = NormalizeDouble (Ask- StopLoss*Point,Digits);

       TP = NormalizeDouble (Level_plus_1500_D1,Digits); // и эту для профита -  Level_plus_1500_D1 - уровень ЕМА  ?                                                  

       OrderSend(Symbol(),OP_BUYLIMIT,Lots,Price ,Slippage, SL,TP,NULL,Magic,0,clrLime);


Price =  NormalizeDouble (iMA(Symbol(),PERIOD_D1, EMA_Period_21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// как правильно прописать эту строчку? 
 TP = NormalizeDouble (Level_plus_1500_D1-iMA(Symbol(),PERIOD_D1,21,0,MODE_EMA,PRICE_MEDIAN,0),Digits); // и эту для профита -  Level_plus_1500_D1 - уровень ЕМА  ?

Читайте уже справку, там всё есть же и вполне понятно.

А СЛ и ТП лучше выставлять от цены отложки (Price ), а не от рыночной, логичнее как-то.

 
evillive:

Читайте уже справку, там всё есть же и вполне понятно.

А СЛ и ТП лучше выставлять от цены отложки (Price ), а не от рыночной, логичнее как-то.

Спасибо! 
 

Всем привет)помогите пожалуйста с проблемой.Разбирался я с функцией написанной в этой статье https://www.mql5.com/ru/articles/1357 .Решил проверить как открываются ордера по сигналам от этой функции, и написал простой код:

 А метатрейдер выдает вот что:

 

Вот и не знаю что делать,то ли с котировками что- то не так ,то ли с кодом функции.

Код функции прикрепил.

Файлы:
func_ad.mqh  33 kb
 
LBatters:

Всем привет)помогите пожалуйста с проблемой.Разбирался я с функцией написанной в этой статье https://www.mql5.com/ru/articles/1357 .Решил проверить как открываются ордера по сигналам от этой функции, и написал простой код:

 А метатрейдер выдает вот что:

 

Вот и не знаю что делать,то ли с котировками что- то не так ,то ли с кодом функции.

Код функции прикрепил.


наверное всё же не та функция в прицепе, в этой на строке 59 нет ничего с массивами, а ошибка явно выход за пределы массива, на строке 59, по второму скриншоту.
 
evillive:

наверное всё же не та функция в прицепе, в этой на строке 59 нет ничего с массивами, а ошибка явно выход за пределы массива, на строке 59, по второму скриншоту.

неее,я там коментил просто,вот и строки сдвинулись.

Вот та что компилировал. 

Файлы:
func_ad1.mqh  63 kb
 
LBatters:

неее,я там коментил просто,вот и строки сдвинулись.

Вот та что компилировал. 


попробуйте 
for (i=2; i<=nBars-2; i++)
 
evillive:

попробуйте 
for (i=2; i<=nBars-2; i++)


ха!теперь одну сделку открывает и на этом  тестирование заканчивается,не понимаю почему  вычитаем 2?
 
LBatters:

ха!теперь одну сделку открывает и на этом  тестирование заканчивается,не понимаю почему  вычитаем 2?


Дальше в инклюднике ещё есть массивы, на них наверное спотыкается уже. Или всё ещё на строку 59 жалуется?

А вычитание - арифметика простая - если элементов 100, то их нумерация 0..99 (так как nBars=100, то 99 и есть тот самый ваш nBars-1), а значит вы можете в вашем алгоритме считать от 1 (сравнение с 0 и 2 барами) до 98 (сравнение с 97 и 99 барами), на 99 уже будет вылет за пределы массива.

 
evillive:


Дальше в инклюднике ещё есть массивы, на них наверное спотыкается уже. Или всё ещё на строку 59 жалуется?

А вычитание - арифметика простая - если элементов 100, то их нумерация 0..99 (99 и есть тот самый ваш nBars-1), а значит вы можете в вашем алгоритме считать от 1 (сравнение с 0 и 2 барами) до 98 (сравнение с 97 и 99 барами), на 99 уже будет вылет за пределы массива.


так там же меньше либо равно ,т.е 99 включается.Разве не так?Во время открытия ордеров выскакивает ошибка 130.

 
LBatters:


так там же меньше либо равно ,т.е 99 включается.Разве не так?Во время открытия ордеров выскакивает ошибка 130.


вот дошли мы до i=99, это край, последний элемент. в цикле сравнение идёт  

if (TempIND[i]<TempIND[i-1] && TempIND[i+1]>=TempIND[i])

и где у нас [i+1]

Причина обращения: