Вопрос по iSAR

 

Доброго времени суток!


Прошу вас разрешить мою проблемку.


Цель такая: требуется привязать STOP LOSS к значению iSAR+-0.0001


ход моих действий был таков (привожу отрывки из моего "кода"):


extern double XXX = 0.0001;

extern double SAR_min_1;
extern double SAR_plus_1;


SAR_min_1 = SAR - XXX;
SAR_plus_1 = SAR + XXX;

// объявил..... затет выясняю где находится Ask по отношению к iSar и открываю позицию


if (Ask>(SAR_min_1))
{

ticket=OrderSend (Symbol(), OP_BUY, Lots, Ask, 0,SAR_min_1, 0, "SAR!", 123, 0, Green); // SAR_plus_1
Comment("_ticket=", ticket );


// в тоже время пытаюсь привязать STOP LOSS к значению iSAR+-0.0001


if(ticket>0)
{
// OrderModify
OrderModify(OrderTicket(), OrderOpenPrice(), SAR_min_1, 0, 0, Green); // SAR_plus_1

}

}

// и все в обратном направлении

else

{
if (Ask<(SAR_plus_1))

ticket=OrderSend (Symbol(), OP_SELL, Lots, Bid, 0, SAR_plus_1,0, "SAR", 123, 0, Green); // SAR_min_1Ask-point_1
Comment("_ticket=", ticket );


if(ticket>0)
{

OrderModify(OrderTicket(), OrderOpenPrice(), SAR_plus_1, 0, 0, Green);
Alert ("neli is ", GetLastError());
}
}



В итоге выдаются такие ошибки:

130 - Неправильные стопы

146 - Подсистема торговли занята

4051 - Недопустимое значение параметра функции


Подскажите, как подправить ход моей мысли.


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

 
narvere писал (а) >>

Цель такая: требуется привязать STOP LOSS к значению iSAR+-0.0001

ход моих действий был таков (привожу отрывки из моего "кода"):

extern double XXX = 0.0001;

extern double SAR_min_1;
extern double SAR_plus_1;

SAR_min_1 = SAR - XXX;
SAR_plus_1 = SAR + XXX;

// объявил..... затет выясняю где находится Ask по отношению к iSar и открываю позицию

if (Ask>(SAR_min_1))
{

Для начала. Корректней, видимо будет задавать вот так :

extern double XXX = 1*MODE_POINT // Размер пункта в валюте котировки.
//Для текущего инструмента хранится в предопределенной переменной Point ;
 
rid писал (а) >>

Для начала. Корректней, видимо будет задавать вот так :

хорошая заметка, я хотел к ней позже обратиться) все равно спасибо!

 

Кроме того, вы уверены, что выставляемые изначально стопы в OrderSend находятся на допустимом расстоянии от текущей цены?

Согласно правилам ДЦ? Отсюда и может быть ошибка - "неправильные стопы"

 
rid писал (а) >>

Кроме того, вы уверены, что выставляемые изначально стопы в OrderSend находятся на допустимом расстоянии от текущей цены?

Согласно правилам ДЦ? Отсюда и может быть ошибка - "неправильные стопы"

нет. этот код еще на столько "сырой", что не дошёл до этого пункта. прям щас допишу у себя.

 
rid писал (а) >>

Для начала. Корректней, видимо будет задавать вот так :

а не могу я объявить таким образом?

extern double XXX = MODE_POINT;

 

По остальным ошибкам помочь, к сож., не смогу.

Однако.

Модификация открытых позиций выполнена не совсем правильно, и вряд ли будет работать корректно.

Я бы рекомендовал вам изначально открыть позиции без стопов, а потом уже после открытия выставить стоплосс и тейкпрофит, используя функцию в адресе :

'Полезные функции от KimIV' - разберитесь, там есть примеры использования

Саму функцию ModifyOrder(). распологаете в самом конце кода (вне ф-и int start() )

 
narvere писал (а) >>

а не могу я объявить таким образом?

extern double XXX = MODE_POINT;

Но это же явная бессмыслица !

Зачем вам во внешних параметрах эксперта задавать постоянную величину?

Тогда уж задавайте так:

extern double  m=1 ;
double  XXX = m*MODE_POINT;

где m - кол-во задаваемых пунктов (в вашем примере m=1)

 
rid писал (а) >>

Но это же явная бессмыслица !

Зачем вам во внешних параметрах эксперта задавать постоянную величину?

Тогда уж задавайте так:

где m - кол-во задаваемых пунктов (в вашем примере m=1)

хорошо, я сделал так, компеляцию код проходит нормально, а терминал выдает 4107 - Неправильный параметр цены для торговой функции


чего-то видимо не хватает всетаки

 

rid писал (а) >>

extern double m=1 ;
double XXX = m*MODE_POINT;

MODE_POINT - это константа, числовое значение которой 11.

Правильно, наверное, так


extern double m=1 ;
double XXX = m*MarketInfo(Symbol(),MODE_POINT);
 
Ilnur писал (а) >>


MODE_POINT - это константа, числовое значение которой 11.

Правильно, наверное, так


спасибо! заработал наконец-таки этот кусок кода

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