Трейлинг позиции

Peter_F

Новичок форума
В советник встроена функция, которая изменяет ордер на сервере брокера.
Но иногда значение stop level превышает величину самого трейлинг стопа.

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

Вот функция трейлинг стопа:
void CheckForExit()
{
double StopLoss;
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES) ;
if (OrderType() == OP_BUY)
{
StopLoss = Bid - Point * TrailingStop;
if (OrderStopLoss() < StopLoss &&
OrderOpenPrice() < Bid + TrailingStop * Point)
ModifySL(StopLoss, OrderTicket()); //другая функция
}
else // OP_SELL
{
StopLoss = Ask + Point * TrailingStop;
if (OrderStopLoss() > StopLoss &&
OrderOpenPrice() > Ask - TrailingStop * Point)
ModifySL(StopLoss, OrderTicket());
}
}
}
Если внутренний трейлинг позиции производить следующим кодом:
double LongStop=0.0;
double ShortStop=0.0;

void CheckForExit()
{
double StopLoss;
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES) ;

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

bool Order_close=OrderClose(OrderTicket(),OrderLots(),Bid,1000,CLR_NONE);
else

{
StopLoss=Bid-Point*TrailingStop;
if (OrderStopLoss()<StopLoss &&
OrderOpenPrice()<Bid+TrailingStop*Point)
LongStop=StopLoss;
}

else //OP_SELL
{
if (ShortStop>0 &&
Ask>=ShortStop)
Order_close =OrderClose(OrderTicket(),OrderLots(),Ask,1000,CLR_NONE);
else
{
StopLoss= Ask + Point * TrailingStop;
if (OrderStopLoss() > StopLoss &&
OrderOpenPrice() > Ask - TrailingStop * Point)
ShortStop=StopLoss;
}
}
}
// Обнуление внутренних стопов при открытии нового ордера
if (условие)
ShortStop=0.0;
OrderSend(OP_SELL ...

if (условие)
LongStop=0.0;
OrderSend(OP_BUY...
то результаты на тестере стратегий различаются. При этом в обоих случаях:
TrailingStop=70;
STOP_LEVEL=50
Spread=20;

Подскажите, пожалуйста, как переписать первую функцию для использования внутреннего трейлинг-стопа (трейлинга самим экспертом)?

Заранее огромное спасибо!
 

supervisor

Местный житель
я трейлинг делал по следующему алгоритму:

ищу необходимый ордер для трелинга по его номеру
беру его цену стоплосса
далее условие - если цена стоплосс + количество пипс >= текущая цена - то модифицируем у ордера цену стоплосса


вот так примерно, но надо корректировать алгоритм в зависимости от того что нужно
 
Верх