L'EA che ho scritto tre mesi fa non può passare il test della strategia ora, ma funzionava bene due o tre mesi fa!

 
L'EA che ho scritto tre mesi fa non riesce a superare il test ora, ma lavorava bene nel server MetaQuotes-Demo. C'è qualcuno che ha incontrato lo stesso problema? Il codice di errore è sempre come "failed instant sell 0.10 EURUSD at 1.38103 sl: 1.38253 tp: 1.38053 [Invalid request]" e "OrderSend failed with error #4756". Aiuto, sono totalmente confuso.
-----------------------------------------------------------------------------------
se (condizione1)
{
sell.action = TRADE_ACTION_DEAL;
sell.type = ORDER_TYPE_SELL;
sell.symbol = _Symbol;
sell.deviation = 0;
sell.price = NormalizeDouble(mtick.bid,_Digits);
sell.volume = 0.1;
sell.tp = NormalizeDouble(sell.price - mtp*_Point,_Digits);
sell.sl = NormalizeDouble(sell.price + msl*_Point,_Digits);
sell.type_filling = ORDER_FILLING_AON;
if(OrderSend(sell,result_sell)==false)
{
Print("OrderSend failed with error #",GetLastError());
ResetLastError();
}
}
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

Prova ad aggiungere ZeroMemory(sell).

if (condition1)
{
ZeroMemory(sell);
sell.action = TRADE_ACTION_DEAL;
sell.type = ORDER_TYPE_SELL;
sell.symbol = _Symbol; 
Abbiamo risolto questo problema, aspettate la prossima build, per favore.
 
Rosh:

Prova ad aggiungere ZeroMemory(sell).

Abbiamo risolto questo problema, aspetta la prossima build, per favore.

Rosh, ho appena aggiornato a .565 e ho ottenuto lo stesso messaggio #4756

ZeroMemory(struct) aiuta. Quindi è risolto o non ancora?

Grazie

 
Rosh:

Prova ad aggiungere ZeroMemory(sell).

Abbiamo risolto questo problema, aspetta la prossima build, per favore.

Ho lo stesso errore anche se ho seguito il modo esatto di comporre l'ordine. Come mai? Sto usando la build 597.

2012.02.26 20:08:18 Core 1 2012.02.23 08:00:00 Alert: The Buy order request could not be completed -error:4756

2012.02.26 20:08:18 Core 1 2012.02.23 08:00:00 fallito acquisto a mercato 0,10 EURUSD sl: 1,32438 tp: 1,33738 [Modalità di riempimento non supportata]

if(Buy_Condition_3 && Buy_Condition_4)

{

// qualche posizione Buy aperta?

if(Buy_opened)

{

Alert("Abbiamo già una posizione Buy!!!");

return; // Non aprire una nuova posizione Buy

}

ZeroMemory(mrequest);

mrequest.action = TRADE_ACTION_DEAL; // esecuzione immediata dell'ordine

mrequest.type = ORDER_TYPE_BUY; // Ordine di acquisto

mrequest.symbol = _Symbol; // coppia di valute

mrequest.deviation=0; // Deviazione dal prezzo corrente

mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // ultimo prezzo richiesto

mrequest.volume = Lot; // numero di lotti da scambiare

mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit

mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss

mrequest.type_filling = ORDER_FILLING_AON; //tipo di esecuzione dell'ordine

//--- inviare l'ordine

OrderSend(mrequest,mresult);

// ottenere il codice del risultato

if(mresult.retcode==10009 || mresult.retcode==10008) //Richiesta completata o ordine inserito

{

Alert("Un ordine di acquisto è stato piazzato con successo con Ticket#:",mresult.order,"!!!");

}

else

{

Alert("La richiesta di ordine di acquisto non può essere completata -errore:",GetLastError());

ResetLastError();

return;

}

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

Ho notato che nel riferimento MQL5 (ultima versione appena aggiornata oggi), non c'è più ORDER_FILLING_AON, ma anche se uso ORDER_FILLING_FOK, riscontro ancora l'errore 4756. Per favore consigliatemi.

ENUM_ORDER_TYPE_FILLING

Identificatore

Descrizione

ORDINE_RIEMPIMENTO_FOK

L'operazione può essere eseguita esclusivamente con un volume specificato al prezzo uguale o migliore del prezzo specificato nell'ordine. Se non c'è un volume sufficiente di offerte sul simbolo dell'ordine, l'ordine non verrà eseguito. Questo tipo di riempimento è utilizzato nelle modalità di esecuzione SYMBOL_TRADE_EXECUTION_INSTANT oSYMBOL_TRADE_EXECUTION_REQUEST.

ORDINE_RIEMPIMENTO_IOC

Un accordo per eseguire l'operazione con il massimo volume di mercato al prezzo uguale o migliore del prezzo specificato nell'ordine. In questo caso non verrà piazzato un ordine aggiuntivo per il volume non riempito. Questo tipo di riempimento è usato nelle modalità di esecuzione SYMBOL_TRADE_EXECUTION_MARKET eSYMBOL_TRADE_EXECUTION_EXCHANGE a seconda delle impostazioni del simbolo su un server di trading.

ORDINE_RIEMPIMENTO_RITORNO

Un accordo per eseguire l'operazione con il massimo volume di mercato al prezzo uguale o migliore del prezzo specificato nell'ordine. In questo caso verrà piazzato un ordine aggiuntivo per volume non riempito. Questo tipo di riempimento è usato solo per gli ordini pendenti (TRADE_ACTION_PENDING).

 
Ciao, qualche commento prima di abbandonare MT5 e tornare a MT4? Molte grazie! In realtà sono nuovo di entrambi, ma vorrei provare prima MT5, anche se so che è molto nuovo.
 
lingwuchung:
Ciao, qualche commento prima di abbandonare MT5 e tornare a MT4? Molte grazie! In realtà sono nuovo di entrambi, ma vorrei provare prima MT5, anche se so che è molto nuovo.

Aggiungi questo prima del mrequest:

 ZeroMemory(mrequest);
   ZeroMemory(mresult); 

Ho avuto il tuo stesso problema e l'ho risolto.

 

Ora ho lo stesso problema.

I miei expert advisor funzionavano molto bene. Ma ora tutti loro non possono passare il tester.

Quando compilo i file, appare il seguente messaggio:

'ORDER_FILLING_AON' - identificatore non dichiarato

Come si può risolvere questo problema?

È il risultato di un aggiornamento del terminale? (Versione 5.00 Build 642)

(24 aprile 2012)

Spero che qualcuno possa aiutarmi

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 
lamme.vandriel:

Quando compilo il file, viene mostrato il seguente messaggio:

'ORDER_FILLING_AON' - identificatore non dichiarato

Come si può risolvere questo problema?

Sostituisci ORDER_FILLING_AON con ORDER_FILLING_FOK (vedi proprietà dell'ordine)

 
JohnnyDoe:

Aggiungi questo prima del mrequest:

Ho avuto il tuo stesso problema e l'ho risolto.

Ciao, ho aggiunto queste 2 righe nel codice ma l'errore 4756 è ancora qui (invio di richieste commerciali fallito).

Potresti per favore precisare dove esattamente dovrei aggiungere le 2 linee? Quella che riguarda mrequest è già presente. Aggiungendole entrambe non cambia nulla per me. Grazie per l'aiuto che apprezzo.

Sto eseguendo rel.5 build 842.

 ZeroMemory(mrequest);
   ZeroMemory(mresult); 
 
Vivaldi:

Ciao, ho aggiunto queste 2 linee nel codice ma l'errore 4756 è ancora qui (invio di richiesta commerciale fallito).

Potresti per favore precisare dove esattamente dovrei aggiungere le 2 linee? Quella che riguarda mrequest è già presente. Aggiungendole entrambe non cambia nulla per me. Grazie per l'aiuto che apprezzo.

Sto eseguendo rel.5 build 842.

Mostra il tuo codice, così possiamo dirti dove aggiungere questa linea.