Программисты, подскажите. Как зафиксировать событие "Позиция закрыта по SL"? - страница 2

 
Спасибо всем большое за оперативный отклик

Спросил, четно говоря, для очистки совести - в вдруг есть, а я не знаю.
Всем способами, который даны в подсказках пользуюсь, но это и громоздко, и не всегда надежно.
Еще раз всем спасибо.

 

А чем такой не подходит?

 if((OrderClosePrice()<=OrderStopLoss()&&OrderType()==0)||(OrderClosePrice()>=OrderStopLoss()&&OrderStopLoss()!=0&&OrderType()==1))res="SL";
 
Roger:

А чем такой не подходит?


Тем, что фактическая цена закрытия позиции может быть как чуть выше, так и чуть ниже установленного уровня СЛ для любого типа ордера.
 
Вообще, конечно, вариант, по которому закрыта позиция, мог бы быть и переменной ордера, хранящейся на сервере. Но это вопрос к разработчикам.
 
alsu:

Тем, что фактическая цена закрытия позиции может быть как чуть выше, так и чуть ниже установленного уровня СЛ для любого типа ордера.


Ни разу не встречал закрытие по СЛ лучше, чем заявлено. Пользуюсь этой формулой давно, ни разу не подкачала.
 
Terem:
Спасибо всем большое за оперативный отклик

Спросил, четно говоря, для очистки совести - в вдруг есть, а я не знаю.
Всем способами, который даны в подсказках пользуюсь, но это и громоздко, и не всегда надежно.
Еще раз всем спасибо.


Функция isCloseLastPosByStop().
 
Roger:


Ни разу не встречал закрытие по СЛ лучше, чем заявлено. Пользуюсь этой формулой давно, ни разу не подкачала.
В любом случае надо бы нормализовать перед сравнением, на double надежды нет))
 

Не сказал бы, что эта функция корректна, причин две :

1) не учтено проскальзывание

if (ocp==osl) return(True);

2) уже давно не актуально

if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
 
Roger:
Ни разу не встречал закрытие по СЛ лучше, чем заявлено.
Я встречал.
 
alsu:

Не сказал бы, что эта функция корректна, причин две :

1) не учтено проскальзывание

2) уже давно не актуально



Это как база для доработки...

например этим

"if((OrderClosePrice()<=OrderStopLoss()&&OrderType()==0)||(OrderClosePrice()>=OrderStopLoss()&&OrderStopLoss()!=0&&OrderType()==1))res="SL";"

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