Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2694

 
Maksim Gustomiasov #:
вот не могу понять почему у меня он торгует, а при автотесте на сайте нет. Условия там очень простые - открытие новой свечи выше линии тренда или ниже

вот и проверьте что на периоде валидации есть сделки у вас... возможно на другом периоде торгов в тестере есть сделки а на периоде другом (валидации), тупо нет условий торгов и нет сделок... поэтому...

может слишком редкие сработки условий торгов что есть большие временные промежутки без торгов. и при проверках как раз попадает такой промежуток где нет торгов... 

 
Maksim Gustomiasov #:
вот не могу понять почему у меня он торгует, а при автотесте на сайте нет. Условия там очень простые - открытие новой свечи выше линии тренда или ниже

Тут может быть множество моментов, которые не дают пройти автотест. Например, атотест во входных параметрах советника задаёт такие значения, которые Вы при тестировании никогда не используете. Сам с таким не раз сталкивался, когда пытался разместить свои советники в CodeBase! Не поверите, но для CodeBase советник проходит такие же проверки, как и для Маркета. )

С уважением, Владимир.

P.S. Для примера покажу тест одного из советников. В поле, выделенном красным цветом, много параметров, когда торговли нет.


 
Maksim Gustomiasov #:
вот не могу понять почему у меня он торгует, а при автотесте на сайте нет. Условия там очень простые - открытие новой свечи выше линии тренда или ниже

есть дедовский способ, овеянный годами, но не приветствуемый :

после старта советника открыть позицию минимальным объёмом и через немного закрыть. Заодно узнаете комиссию :-)

основные причины неоткрытия сделок : неверно посчитан объём, неправильно указаны цены, (для 5-ки) неверно выставлен Filling

авто-тесты не просто гоняют сову по котировкам, а варьируют опции инструментов до фантастически-небывалых, советник должен корректно их понимать

 
Roman Shiredchenko #:

вот и проверьте что на периоде валидации есть сделки у вас... возможно на другом периоде торгов в тестере есть сделки а на периоде другом (валидации), тупо нет условий торгов и нет сделок... поэтому...

может слишком редкие сработки условий торгов что есть большие временные промежутки без торгов. и при проверках как раз попадает такой промежуток где нет торгов.Интересно, в торговые дни, что со

Roman Shiredchenko #:

вот и проверьте что на периоде валидации есть сделки у вас... возможно на другом периоде торгов в тестере есть сделки а на периоде другом (валидации), тупо нет условий торгов и нет сделок... поэтому...

может слишком редкие сработки условий торгов что есть большие временные промежутки без торгов. и при проверках как раз попадает такой промежуток где нет торгов... 

Интересно, что советник выдаёт (какие параметры) в торговые дни при оптимизации.

 
Igor Nagorniuk #:

Интересно, что советник выдаёт (какие параметры) в торговые дни при оптимизации.

хз у него как... да  я так выгибался ) упражнялся когда в маркет выкладывал советник тральщик... ) он же не открывает - но тралит позы...

 

Всем здравствуйте!

Помогите, плиз, разобраться.

Не получается обнулить размер массива структуры MqlTick!

ArrayResise не помогает. Размер массива постоянно увеличивается до указанного значения  в функции CopyTicks()

   if(iTime(NULL, PERIOD_CURRENT, 0) != new_candle)
     {
      ArrayResize(tick_array, 0, 0);
      if(new_candle != 0)
         ress = CopyTicks(_Symbol, tick_array, COPY_TICKS_BID, new_candle, 2000);
        
      count_array = ArraySize(tick_array);
      Comment(count_array);
      new_candle = iTime(NULL, PERIOD_CURRENT, 0);
     }

Пробовал другие функции, такие как ArrayFree(), ArrayRemove(). Результата нет. Что- то я  делаю не правильно.(( 

Заранее спасибо

 
Dmitrii Solovei #:

Всем здравствуйте!

Помогите, плиз, разобраться.

Не получается обнулить размер массива структуры MqlTick!

ArrayResise не помогает. Размер массива постоянно увеличивается до указанного значения  в функции CopyTicks()


Пробовал другие функции, такие как ArrayFree(), ArrayRemove(). Результата нет. Что- то я  делаю не правильно.(( 

Заранее спасибо

Зачем постоянно менять размер массива, который затем увеличивается до размера скопированных тиков?

Смысл в этих действиях?

Чтобы понять самому, что вы тут сделали, прокомментируйте каждую строчку вашего кода.

 
Artyom Trishkin #:

Зачем постоянно менять размер массива, который затем увеличивается до размера скопированных тиков?

Смысл в этих действиях?

Чтобы понять самому, что вы тут сделали, прокомментируйте каждую строчку вашего кода.

Да, вы правы. Я не той функцией оперировал.

Уже разобрался в своей ошибке.

   if(iTime(NULL, PERIOD_CURRENT, 0) != new_candle)
     {
      MqlTick tick_array[];

      if(new_candle != 0)
         ress = CopyTicksRange(NULL, tick_array, COPY_TICKS_INFO, iTime(NULL, PERIOD_CURRENT, 0)*1000, iTime(NULL, PERIOD_CURRENT, 1)*1000);
      count_array = ArraySize(tick_array);

      Comment(ress);
      new_candle = iTime(NULL, PERIOD_CURRENT, 0);
     }

Спасибо за оперативность!

 
Dmitrii Solovei #:

Да, вы правы. Я не той функцией оперировал.

Уже разобрался в своей ошибке.

Спасибо за оперативность!

Зачем трижды обращаетесь к iTime() с одними и теми же входными данными ?
 
Artyom Trishkin #:
Зачем трижды обращаетесь к iTime() с одними и теми же входными данными ?

Агась.

Да, можно в переменную сохранить? И обращаться уже к ней?

Вы это имели ввиду?