Странный баг - страница 3

 

Не очень представляю как это можно сделать. В Студии очень даже наглядно и понятно. А в Метаэдиторе отладка явно недоработанная.

Всегда пользовался Принтом для отладки. так эта привычка и осталась.

 
Dmitiry Ananiev:

Не очень представляю как это можно сделать. В Студии очень даже наглядно и понятно. А в Метаэдиторе отладка явно недоработанная.


очень просто -- пропишите принты после:

if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Symbol && OrderMagicNumber()==mag)

и

if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
   if(OrderSymbol()==_Symbol && OrderMagicNumber()==mag)

запустите два варианта, как вы и запускали -- и посмотрите какой советник делает закрытие каких ордеров

 
Andrey F. Zelinsky:

очень просто -- пропишите принты после:

запустите два варианта, как вы и запускали -- и посмотрите какой советник делает закрытие каких ордеров


Во первых логика советника открывает только один ордер. Нужно еще либо дописывать код на открытие еще нескольких ордеров, либо ставить совенка на несколько пар и ждать пока появится хотя бы 2 ордера. 
Я для себя все выяснил. Второй вариант работает корректно не смотря на #property strict или его отсутствие. О чем и рассказал на форуме. 
А кому инетерсно - могут сам воспроизвести и обсудить это. 

Повторюсь с выводом: 

1. Использлвать  #property strict всегда. 

2. Пользоваться вторым вариантом перебора ордеров.

 
Dmitiry Ananiev:

Во первых логика советника открывает только один ордер. Нужно еще либо дописывать код на открытие еще нескольких ордеров, либо ставить совенка на несколько пар и ждать пока появится хотя бы 2 ордера. 
Я для себя все выяснил. Второй вариант работает корректно не смотря на #property strict или его отсутствие. О чем и рассказал на форуме. 
А кому инетерсно - могут сам воспроизвести и обсудить это. 


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

Потому что ваше:

Dmitiry Ananiev:

Повторюсь с выводом: 

1. Использлвать  #property strict всегда. 

2. Пользоваться вторым вариантом перебора ордеров.

1. property strict на приоритет и порядок никак не влияют -- по крайней мере такого влияния замечено не было.

2. Оба варианта рабочие -- и причина неотработки не в этих вариантах, а в чём-то другом -- вот в чём, вы могли бы выяснить в отладке, чтобы дальше не столкнуться с аналогичной ситуацией.

Ладно.

 
Artyom Trishkin:

Стиль написания - не баг.

Ну у него стиль минималистичный, т.е. для копирования и использования ок, НО если туда закралась ошибка, то этот код надо разгребать.

Но так, чтобы что-то не отрабатывало, такого не было ни у кого - не было вопросов на форуме по неработоспособности его функций.

Как минимум у меня были. И я об этом говорил на форуме. Если вы чего-то не видели не значит что этого не было.

 
Andrey F. Zelinsky:

2. Оба варианта рабочие -- и причина неотработки не в этих вариантах, а в чём-то другом -- вот в чём, вы могли бы выяснить в отладке, чтобы дальше не столкнуться с аналогичной ситуацией.

UB может по разному работать при разных режимах оптимизации.
 
Dmitiry Ananiev:

Во первых логика советника открывает только один ордер. Нужно еще либо дописывать код на открытие еще нескольких ордеров, либо ставить совенка на несколько пар и ждать пока появится хотя бы 2 ордера. 
Я для себя все выяснил. Второй вариант работает корректно не смотря на #property strict или его отсутствие. О чем и рассказал на форуме. 
А кому инетерсно - могут сам воспроизвести и обсудить это. 

Повторюсь с выводом: 

1. Использлвать  #property strict всегда. 

2. Пользоваться вторым вариантом перебора ордеров.

как оно вообще у вас работало, если символы разные, и соотв. SL TP и расчётные уровни по ценам (ch co) тоже соотв.разные ??

по п.1 - естественно согласен

п.2 - оба вариант абсолютно идентичны.

Но если представите test-case который демонстрирует баг, то это СУПЕР-баг :-) после такого вам должны выписывать мега-премию от дирекции, а прочие тихонько уползать.. :-)

просто сдаётся мне что ларчик просто открывается, вплоть до случайного запуска 2-х сов на одном символе с одним магиком или незаметной опечатки в коде.

 

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

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