Ну, думал, что если цена закрытия ордера равна цене стоплосса, то этот ордер закрылся по СЛ, и тоже для ТП.
Пробовал по прибыли сравнивать, все равно тот же результат.
Здравствуйте, товарищи!
Столкнулся с проблемой. В советнике нужно выяснить номер тикета ордера, который остается после частичного закрытия.
Советник при некоторой прибыли закрывает половину объема ордера. Потом два варианта. Либо по стоплоссу, либо по тейку.
пишу код
if(OrderSelect(tickett,SELECT_BY_TICKET,MODE_HISTORY) && OrderCloseTime()>0)
{
if(OrderClosePrice()== OrderStopLoss()) Print(1);
if(OrderClosePrice()==OrderTakeProfit()) Print(2);
}
Если по стоплоссу находит, Профит - нет. Как это сделать правильно?
1. Если ищете ордер в истории, естественно у него будет OrderCloseTime()>0, зачем это проверять?
2. МОжет, сделать нечеткое сравнение? Например
if(MathAbs(OrderClosePrice() - OrderTakeProfit()) >= 0.0001) Print(2);
Здравствуйте, товарищи!
Столкнулся с проблемой. В советнике нужно выяснить номер тикета ордера, который остается после частичного закрытия.
Советник при некоторой прибыли закрывает половину объема ордера. Потом два варианта. Либо по стоплоссу, либо по тейку.
пишу код
if(OrderSelect(tickett,SELECT_BY_TICKET,MODE_HISTORY) && OrderCloseTime()>0)
{
if(OrderClosePrice()== OrderStopLoss()) Print(1);
if(OrderClosePrice()==OrderTakeProfit()) Print(2);
}
Если по стоплоссу находит, Профит - нет. Как это сделать правильно?
1. В комментарии ордера пишется тикет ордера с остатком объёма.
2. Выбор ордера по тикету не зависит от того закрыт он или нет, поэтому MODE_HISTORY писать необязательно.
3. Если ордер закрывался по тейку или стопу и проскользил чуток, то условие не будет выполнено.
3. Если ордер закрывался по тейку или стопу и проскользил чуток, то условие не будет выполнено.
Я и писал, четкое сравнение не годится.
Я и писал, четкое сравнение не годится.
Я не видел, мы писали одновременно, только ты чуток пошустрей:)))
Ок, шоколадная медаль пополам ))
Вообще работать перестало )) Верните медаль обратно ;)
Надо померить проскальзывание у брокера, сразу все станет ясно. У меня только что скрипт для этого в кодобазе опубликовали, меряйте на здоровье )
https://www.mql5.com/ru/forum/76821
- www.mql5.com
Все смешалось в кучу, кони люди мухи котлеты.
мт4
Все смешалось в кучу, кони люди мухи котлеты.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, товарищи!
Столкнулся с проблемой. В советнике нужно выяснить номер тикета ордера, который остается после частичного закрытия.
Советник при некоторой прибыли закрывает половину объема ордера. Потом два варианта. Либо по стоплоссу, либо по тейку.
пишу код
if(OrderSelect(tickett,SELECT_BY_TICKET,MODE_HISTORY) && OrderCloseTime()>0)
{
if(OrderClosePrice()== OrderStopLoss()) Print(1);
if(OrderClosePrice()==OrderTakeProfit()) Print(2);
}
Если по стоплоссу находит, Профит - нет. Как это сделать правильно?