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

 

Всем привет)помогите пожалуйста с проблемой.Разбирался я с функцией написанной в этой статье 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]? 

 
evillive:


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

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

ааа,понятно)Спасибо.

Вот теперь осталась проблема 130.

То что в справке пишут. 

Цены StopLoss и TakeProfit не могут располагаться слишком близко к рынку. Минимальное расстояние стопов в пунктах можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных, а также ненормализованных стопов генерируется ошибка 130 (ERR_INVALID_STOPS). 

вот код.Разве мне нужно нормализовать стопы? 

 

 
LBatters:

ааа,понятно)Спасибо.

Вот теперь осталась проблема 130.

То что в справке пишут. 

Цены StopLoss и TakeProfit не могут располагаться слишком близко к рынку. Минимальное расстояние стопов в пунктах можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных, а также ненормализованных стопов генерируется ошибка 130 (ERR_INVALID_STOPS). 

вот код.Разве мне нужно нормализовать стопы? 

 


в альпари стоплевел=0 но стопы на цене не принимаются, вот такие они аферисты, в лом им передавать стоплевел по нормальному. приходится расстояние 2 спреда брать вместо стоплевела.

но вобще, такие узкие стопы - пустая трата средств, слишком часто срабатывать будут.