| Найти цену тейкпрофита у рыночного ордера |
//+------------------------------------------------------------------------------+
//| проверим последний сработавший ордер этого советника в истории на СТОПЛОСС |
//+------------------------------------------------------------------------------+
bool LastHistoryOrderIsStopLoss()
{
i=OrdersHistoryTotal()-1;
while (true)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderMagicNumber()==Magic && OrderType()<=1)
{
if (OrderStopLoss()==OrderClosePrice())
return(true);
else
return(false);
}
i--;
if (i<0) return(false);
}
}
27 декабря 2020
|
30 декабря 2020
|
Комментарии (11)
<code>//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 20.10.2008 | //| Описание : Возвращает цену TakeProfit последней закрытой позиций или -1. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double TakeProfitLastClosePos(string sy="", int op=-1, int mn=-1) { datetime t; double r=-1; int i, k=OrdersHistoryTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderCloseTime()) { t=OrderCloseTime(); r=OrderTakeProfit(); } } } } } } } return®; }</code>—
<code>//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 06.08.2008 | //| Описание : Возвращает цену TakeProfit последней открытой позиций или -1. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double TakeProfitLastPos(string sy="", int op=-1, int mn=-1) { datetime t; double r=-1; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderTakeProfit(); } } } } } } } return®; }</code>ShamanHand, вы же програмист советники вон пишите, а за токой ерундой обращаетесь.Что то после такого да же страшно у вас советники покупать. Редактирован: 29 декабря 2020, 14:03
21 alex30774 Сообщений: 796
Уместное замечание, самому стыдно
После НГ корпоратива ощущение, будто половина мозгов со спиртным убежала
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
21 alex30774 Сообщений: 796
Вот ещё раз читаем справку:
«OrderTakeProfit
Возвращает значение цены закрытия ордера ПРИ ДОСТИЖЕНИИ УРОВНЯ ПРИБЫЛЬНОСТИ (take profit) текущего выбранного ордера.»
А мне же надо, чтобы в любой момент можно было ТП у ордера посмотреть.
По факту действительно, возвращает минус единицу и всё на этом.
Т.е. я в комментах пишу:На выходе имеем:
Т.е. мне как раз при открытом ордере это надо узнавать. Как закроется — меня его ТП уже не интересует. Редактирован: 29 декабря 2020, 17:43
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
21 alex30774 Сообщений: 796
Редактирован: 29 декабря 2020, 18:38
21 alex30774 Сообщений: 796
Нужно просто быть внимательней...
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16664 - Андрей
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
datetime t;
на
datetime t=0;
Это чтоб предупреждений не было, хотя возможно вы уже сами исправили(это я так на всякий случай предупредил, а то я код функции скопировал, а не проверил)
21 alex30774 Сообщений: 796
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий