Я написал такой код:
void OnTick()
{
if(Bars<100 || IsTradeAllowed()==false) return;
if(OrderTotal(Symbol())==0) OpenCheck();//функция открытия ордеров
else{
OrderSelect(tiket,SELECT_BY_TICKET); //выбор ордера
if (OrderType()==OP_SELL)//если продажа
{
if (((OrderStopLoss()-Bid))>ProfitFactor*Point)
{
OrderModify(tiket,OrderOpenPrice(),Ask+(ProfitFactor*Point),0,0);//модификация
}
}
if (OrderType()==OP_BUY)//если покупка
{
if (((Ask-OrderStopLoss()))>ProfitFactor*Point)
{
OrderModify(tiket,OrderOpenPrice(),Bid-(ProfitFactor*Point),0,0);//модификация
}
}
}
}
Смысл таков:Если ордеров нет проверяется возможность открытия, если ордера есть создается и модифицируется СтопЛосс.Это происходит так что если ордер прибыльный то СтопЛосс пододвигается ближе к рыночной цене если нет по остается прежним(ProfitFactor-размер СтопЛосса в пунктах).
Помогите!