L'EA che ho scritto tre mesi fa non può passare il test della strategia ora, ma funzionava bene due o tre mesi fa!
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.
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
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;
}
- www.mql5.com
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.
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.
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
- www.mql5.com
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)
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);
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.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
-----------------------------------------------------------------------------------
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();
}
}