Есть OrderSend , у него есть переменная стоплосс, надо от этого стоплосс производить расчета.
За цену открытия зацепится получилось, а за стоплосс как? Как узнать значение стоплосс когда была произведена покупка, в print выбивает постоянно разные значения.
StopLossLevel = Bid - StopLoss*Point;
ticket = OrderSend(Symb, OP_BUY, 1.0, Ask, 3, StopLossLevel, 0, "First expert");
if(OrderSelect(ticket, SELECT_BY_POS)==true){
double num = OrderOpenPrice()+ 2*Point; // цена покупки
}
Кусочек из справки по OrderSelect:
SELECT_BY_POS - в параметре index передается порядковый номер ордера в списке,
SELECT_BY_TICKET - в параметре index передается номер тикета.
навевает мысль о том, что стоило бы заменить SELECT_BY_POS на SELECT_BY_TICKET.
Но это не все. После "ticket = ..." надежнее подождать, когда обновится список открытых и отложенных ордеров, с которым работает советник. То есть в терминал, а затем и в экземпляр памяти этого советника придет коррекция списка от сервера. Например, так:
if (ticket < 0) {сообщение с GetLastError() и выход по return}
if (!OrderSelect(ticket, SELECT_BY_TICKET)) Sleep (200);
if(OrderSelect(ticket, SELECT_BY_TICKET)==true) { ... дальше как было с учетом предыдущего сообщения об OrderStopLoss()}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть OrderSend , у него есть переменная стоплосс, надо от этого стоплосс производить расчета.
За цену открытия зацепится получилось, а за стоплосс как? Как узнать значение стоплосс когда была произведена покупка, в print выбивает постоянно разные значения.
StopLossLevel = Bid - StopLoss*Point;
ticket = OrderSend(Symb, OP_BUY, 1.0, Ask, 3, StopLossLevel, 0, "First expert");
if(OrderSelect(ticket, SELECT_BY_POS)==true){
double num = OrderOpenPrice()+ 2*Point; // цена покупки
}