Советник не видит ордер - почему? - страница 2

 
sergeev:

MarketInfo(14)

это что?

OrderSelect(15, SELECT_BY_TICKET, MODE_TRADES); // берем невидимый ордер для принтовки его данных

и что такое ордер 15 ?

Это тот ордер, который не может в цикле найти программа, но он есть при прогоне в тестере. А 15 - это его тикет в тестере.
 
sergeev:

MarketInfo(14)

это что?


Это проверка условия на возможность провести модификацию ордеров.

MarketInfo(14) - это минимальный стоплевел. Можно так записать - MarketInfo(MODE_STOPLEVEL).

 
sergeev:
до куда на вашей распринтовке доходит эксп?


Первый цикл выполняется без проблем, там собственно и принтовать ничего не нужно. А вот второй, доходит до проверки магика_1, выполняет её. Об этом я сужу по тому, что ордер селл с магик_1 впринтовке есть: и тип его и цена и магик!

А для бая с магик_1 не может пройти проверку типа выбранного ордера, так как не принтует после условия if(OrderType()==0) { и не делает, соответственно, модификации его.

Вот такая незадача!

 

Буду признателен за помощь по существу!

 
alexnau:

      for(cnt=OrdersTotal();cnt>0;cnt--) {
         Print("Mode Re-Setup 6");
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
 


и что мы выбираем ? чему i равно и зачем цикл по cnt ? Почему один из ордеров (с номером 0) не рассматривается ? 

И там выход за пределы массива.

Правильно :

      for(cnt=OrdersTotal()-1;cnt>=0;cnt--)   
            if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)){

Удачи. 

ЗЫ Интересно, если это написать на первой странице форума - поможет ? Вопрос риторический.

 
VladislavVG:


и что мы выбираем ? чему i равно и зачем цикл по cnt ?

Удачи.


Нет выбираем все по правильным переменным. Это я когда код прикреплял ошибся. Извините.
 
alexnau:

Нет выбираем все по правильным переменным. Это я когда код прикреплял ошибся. Извините.

Цепляйте полный код - посмотрим. Иначе это гадание на кофейной гуще
 
alexnau:


  Можно так записать - MarketInfo(MODE_STOPLEVEL). 


так тоже записать не получится.

во первых вы вызываете функцию неправильно, а во вторых  -она возвращает данные в пунктах, а вы сравниваете в ценах.

исправьте 

 
sergeev:


так тоже записать не получится.

во первых вы вызываете функцию неправильно, а во вторых -она возвращает данные в пунктах, а вы сравниваете в ценах.

исправьте


Да, Вы правы. У меня используется переменная, а здесь в примере я поменял её чтобы понятно было, что проверяем. Уже исправил.
 
alexnau:

Да, Вы правы. У меня используется переменная, а здесь в примере я поменял её чтобы понятно было, что проверяем. Уже исправил.

alexnau:

Да, Вы правы. У меня используется переменная, а здесь в примере я поменял её чтобы понятно было, что проверяем. Уже исправил.

Усталость дает о себе знать.

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