Здравствуйте!
Как изменить объем отложенного ордера?
значение которое подается в
h_request.volume
игнорируется
int OrderModifyPending08(ulong l_ticket,double h_price=0,double h_volume=0)
{
MqlTradeRequest h_request={};
MqlTradeResult h_result={};
if(!OrderSelect(l_ticket))
return(-1);
h_request.symbol=OrderGetString(ORDER_SYMBOL);
h_request.price=(h_price<=0 ? OrderGetDouble(ORDER_PRICE_OPEN):h_price);
h_request.volume=h_volume;
h_request.order=l_ticket;
h_request.action=TRADE_ACTION_MODIFY;
OrderSend(h_request,h_result);
return((int)h_result.order);
}
Только удалить и заново поставить.
Только удалить и заново поставить.
Это баг или фича, в поддержку уже писали?
Можноли в один тик успеть и удалить ордер и поставить новый?
Это баг или фича, в поддержку уже писали?
Можноли в один тик успеть и удалить ордер и поставить новый?
Это всегда так было.
ясно. напишу в поддержку, вдруг поддержат! :)
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 // Изменяет объем отложенного ордера. Async = true - асинхронный режим отправки приказов bool OrderChangeLots( const long Ticket, const double Lots, const bool Async = false ) { return(OrderSelect(Ticket, SELECT_BY_TICKET) && (Lots != OrderLots()) && (Async ? (OrderDeleteAsync(Ticket) && OrderSendAsync(OrderSymbol(), OrderType(), Lots, OrderOpenPrice(), 0, OrderStopLoss(), OrderTakeProfit(), OrderComment(), OrderMagicNumber(), OrderExpiration())) : (OrderDelete(Ticket) && (OrderSend(OrderSymbol(), OrderType(), Lots, OrderOpenPrice(), 0, OrderStopLoss(), OrderTakeProfit(), OrderComment(), OrderMagicNumber(), OrderExpiration()) != -1)))); } void OnStart() { for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() >= OP_BUYLIMIT)) OrderChangeLots(OrderTicket(), OrderLots() + 1, true); }
Спасибо, огромное! Только код такого уровня не осилю :( Могу только как на бэйсике программу менять.
без библиотэки, парой строк обойтись возможно?
поддержка сказала этого нет.
Спасибо, огромное! Только код такого уровня не осилю :( Могу только как на бэйсике программу менять.
без библиотэки, парой строк обойтись возможно?
Одной строкой - вызывайте OrderChangeLots, исходник которой выше.
Одной строкой - вызывайте OrderChangeLots, исходник которой выше.
Ну зачем вводишь человека в заблуждение?
Ну зачем вводишь человека в заблуждение?
Много трактовок, поэтому не понял.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Как изменить объем отложенного ордера?
значение которое подается в
h_request.volume
игнорируется
int OrderModifyPending08(ulong l_ticket,double h_price=0,double h_volume=0)
{
MqlTradeRequest h_request={};
MqlTradeResult h_result={};
if(!OrderSelect(l_ticket))
return(-1);
h_request.symbol=OrderGetString(ORDER_SYMBOL);
h_request.price=(h_price<=0 ? OrderGetDouble(ORDER_PRICE_OPEN):h_price);
h_request.volume=h_volume;
h_request.order=l_ticket;
h_request.action=TRADE_ACTION_MODIFY;
OrderSend(h_request,h_result);
return((int)h_result.order);
}