Errori, bug, domande - pagina 1739
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho capito bene che la modifica degli ordini tramite SB non funziona in uno scambio?
//| Modify specified pending order |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
{
//--- check stopped
if(IsStopped(__FUNCTION__))
return(false);
//--- clean
ClearStructures();
//--- setting request
m_request.action =TRADE_ACTION_MODIFY;
m_request.magic =m_magic;
m_request.order =ticket;
m_request.price =price;
m_request.stoplimit =stoplimit;
m_request.sl =sl;
m_request.tp =tp;
m_request.type_time =type_time;
m_request.expiration =expiration;
//--- action and return the result
return(OrderSend(m_request,m_result));
}
Non è impostato.
//| Get the property value "ORDER_TYPE_FILLING" |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const
{
return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING));
}
Restituisce SEMPREENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN nel tester.
Il ripieno non è impostato.
Quindi se impostate il riempimento in OrderModify tramite COrderInfo::TypeFilling(), su RoboForexEU-MetaTrader 5 ci sarà un errore logico [Unsupported filling mode]. Tuttavia, questo errore non si verifica in MetaQuotes-Demo - server dello sviluppatore configurato male?
Ho capito bene che la modifica degli ordini tramite SB non funziona in uno scambio?
//| Modify specified pending order |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
{
//--- check stopped
if(IsStopped(__FUNCTION__))
return(false);
//--- clean
ClearStructures();
//--- setting request
m_request.action =TRADE_ACTION_MODIFY;
m_request.magic =m_magic;
m_request.order =ticket;
m_request.price =price;
m_request.stoplimit =stoplimit;
m_request.sl =sl;
m_request.tp =tp;
m_request.type_time =type_time;
m_request.expiration =expiration;
//--- action and return the result
return(OrderSend(m_request,m_result));
}
Non lo fa.
Non fatevi prendere dal panico!
{
protected:
MqlTradeRequest m_request; // request data
MqlTradeResult m_result; // result data
MqlTradeCheckResult m_check_result; // result check data
bool m_async_mode; // trade mode
ulong m_magic; // expert magic number
ulong m_deviation; // deviation default
ENUM_ORDER_TYPE_FILLING m_type_filling;
ENUM_ACCOUNT_MARGIN_MODE m_margin_mode;
//---
ENUM_LOG_LEVELS m_log_level;
public:
Niente panico!
//| Modify specified pending order |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
{
//--- check stopped
if(IsStopped(__FUNCTION__))
return(false);
//--- clean
ClearStructures();
//--- setting request
m_request.action =TRADE_ACTION_MODIFY;
m_request.magic =m_magic;
m_request.order =ticket;
m_request.price =price;
m_request.stoplimit =stoplimit;
m_request.sl =sl;
m_request.tp =tp;
m_request.type_time =type_time;
m_request.expiration =expiration;
//--- action and return the result
return(OrderSend(m_request,m_result));
}
//| Modify specified pending order |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
{
//--- check stopped
if(IsStopped(__FUNCTION__))
return(false);
//--- clean
ClearStructures();
//--- setting request
m_request.action =TRADE_ACTION_MODIFY;
m_request.magic =m_magic;
m_request.order =ticket;
m_request.price =price;
m_request.stoplimit =stoplimit;
m_request.sl =sl;
m_request.tp =tp;
m_request.type_time =type_time;
m_request.expiration =expiration;
//--- action and return the result
return(OrderSend(m_request,m_result));
}
Aspetta, perché specificare il tipo di riempimento quando si modifica?
Dalla documentazione:
Ordine di trading per modificare i livelli di StopLoss e/o TakeProfit. Richiede 4 campi (stipite:)) da specificare:
Aspetta, perché specificare il tipo di riempimento quando si modifica?
Dalla documentazione:
Non credere a tutto quello che dice. Deve essere specificato. Altrimenti non funzionerà.
Non posso usare SB. Ma puoi provare OrderModify su exchange per essere sicuro del bug.
Non credete a tutto ciò che è scritto. Si DEVE specificare. Altrimenti non funzionerà.
Sono completamente d'accordo, ma...
Non so come usare SB. Ma puoi provare OrderModify sullo scambio per assicurarti del bug.
Ma MQ ha anche aggiunto un esempio nel documento... Non è indicato lì...
C'è anche un Expert Advisor che ho scritto, che funziona sulla borsa e usa un tale pezzo di codice:
trade.OrderModify( order.Ticket(), order.PriceOpen(), newSl, newTp, order.TypeTime(), 0 );
Ma MQ ha anche aggiunto un esempio al documento... Non specifica...
Sbagliato, gente. Dobbiamo correggere sia doc che SB.
Inoltre, c'è un EA che ho scritto che funziona su una borsa e usa un tale pezzo di codice:
trade.OrderModify( order.Ticket(), order.PriceOpen(), newSl, newTp, order.TypeTime(), 0 );
E nel tester?
Sbagliato, gente. Dovete correggere sia il doc che il SB.
Sbagliato, gente. Dovete correggere sia il doc che il SB.
E nel tester?