Стоп по фракталу.

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




подскажите как правильно???




double iFractal;
iFractal= iFractals(NULL,240,MODE_LOWER,0) ;




if(OrderType() == OP_BUY)
{
if (Bid<MODE_LOWER)

OrderClose(OrderTicket(), OrderLots(), Bid, 3,Red);
break;
}
 


Первое что бросается глаза это то что Ордер не селектирован (если конечно это весь код)

Определение типа ордера не возможно, если не известно какой ордер надо определить согласитесь?! Делать это можно так:
   // где o номер позиции ордера 
      if(OrderSelect(o,SELECT_BY_POS,MODE_TRADES)==false) return(0);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
 if(OrderType()==0) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
        }
          
  // либо без магика
   
    if(OrderSelect(o,SELECT_BY_POS,MODE_TRADES)==false) return(0);
      if(OrderSymbol()==Symbol())
        {
 if(OrderType()==0) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
        }

Но это не значит, что есть только такая конструкция все зависит от задачи в комплексе.Описание про селектирование есть в хелпе.


Теперь самое главное :

if (Bid<MODE_LOWER)
MODE_UPPER и MODE_LOWER это константы со значениями 1 и 2 соответственно, следовательно, сравнивать их вообще с bid не правильно.



И вообще я вам рекомендую если есть возможность закрывать позиции не программным путем а выставлять стоп флаг заранее, то надо это делать. Поскольку в плане безопасности это намного безопаснее(если даже не считать перебоев питания и связи).