Discussione sull’articolo "Guida Step-By-Step alla scrittura di un Expert Advisor in MQL5 per Principianti" - pagina 13

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
Con tutte le modifiche alla programmazione MQL5 è necessaria una versione aggiornata di questo codice passo-passo, se copio questo codice non compila più - esiste una versione con le ultime modifiche - molte grazie.
Ciao Michael,
Grazie per il tuo commento. Esaminerò il tuo suggerimento e se sarà necessario un aggiornamento del codice, lo renderò disponibile al più presto.
perché il codice di errore in uscita :10030?
aiuto, c'è qualcuno qui ?
perché il codice di errore di uscita :10030?
Prima di tutto grazie per l'articolo, mi sta aiutando ad iniziare la programmazione di mql5.
Ho provato il vostro codice e c'è un po' di codice in OnInit() di cui non capisco lo scopo:
//--- Gestiamo coppie di valute con prezzi a 5 o 3 cifre invece di 4
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
Questa parte modifica i valori dei pib di take profit e stop loss causando una differenza tra i valori inseriti e quelli realmente utilizzati.
Tuttavia, se rimuovo le due righe all'interno dell'if, spesso ricevo l'errore 10016 (stop non validi) quando invio l'ordine al server. Il primo tentativo di piazzare un ordine va bene e ricevo il 10009, ma poi la maggior parte delle volte successive ricevo un 10016. Ho eseguito il debug dell'EA e tutti gli stop loss e i take profit sembrano essere corretti, con la differenza che lo stop loss è 30 o 300 e il take profit 100 o 1000 pib sopra o sotto il prezzo corrente.
Non riesco a trovare il motivo per cui il server mi dà un errore 10016 quando STP e TKP non sono moltiplicati per 10.
Qualcuno può spiegarmi perché si verifica l'errore o lo scopo di moltiplicare per 10 quando le cifre sono 5 o 3?
Grazie per il vostro aiuto.
aiuto, c'è qualcuno qui ?
perché il codice di errore di uscita :10030?
Salve,
Puoi farci sapere come ottieni l'errore?
eshelios.sr:
Prima di tutto grazie per l'articolo, mi sta aiutando ad iniziare la programmazione di mql5.
Ho provato il tuo codice e c'è un po' di codice in OnInit() di cui non capisco lo scopo:
//--- Gestiamo coppie di valute con prezzi a 5 o 3 cifre invece di 4
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
Questa parte modifica i valori dei pib di take profit e stop loss causando una differenza tra i valori inseriti e quelli realmente utilizzati.
Tuttavia, se rimuovo le due righe all'interno dell'if, spesso ricevo l'errore 10016 (stop non validi) quando invio l'ordine al server. Il primo tentativo di piazzare un ordine va bene e ricevo il 10009, ma poi la maggior parte delle volte successive ricevo un 10016. Ho eseguito il debug dell'EA e tutti gli stop loss e i take profit sembrano essere corretti, con la differenza che lo stop loss è 30 o 300 e il take profit 100 o 1000 pib sopra o sotto il prezzo corrente.
Non riesco a trovare il motivo per cui il server mi dà un errore 10016 quando STP e TKP non sono moltiplicati per 10.
Qualcuno può spiegarmi perché si verifica l'errore o lo scopo di moltiplicare per 10 quando le cifre sono 5 o 3?
Grazie per il vostro aiuto.
Ciao,
Innanzitutto dalla tua spiegazione, quando hai rimosso quelle righe di codice, ottieni un errore e quando non hai moltiplicato i valori di stoploss/takeprofit per 10, ottieni un errore? Questo credo abbia spiegato che quelle righe di codice sono molto importanti.
Tornando all'articolo, esso spiega che queste righe di codice sono necessarie se si utilizza un grafico con coppie di valute a 5 cifre decimali (0,XXXXX) o a 3 cifre decimali (0,XXX).
Vogliamo quindi assicurarci che il nostro EA funzioni bene con tutti i broker.Digits o Digits()restituisce il numero di cifre decimali che determinano la precisione del prezzo del simbolo grafico corrente. Per un grafico a 5 o 3 cifre, moltiplichiamo per 10 sia lo Stop Loss che il Take Profit.
Si vedano gli esempi seguenti:
5 - Prezzo a cifre decimali
3 - Prezzo a 3 cifre decimali
Spero di aver risposto alla vostra domanda.
Salve,
Puoi farci sapere come ottieni l'errore?
passo 1: scaricare il codice di esempio.
passo 2: compilarlo in mql5.
passo 3: in mt5, aprire il grafico eurusd 1m, quindi, fare clic su "auto trading".
passo 4: impostare il simbolo di interruzione nella riga 223, 224, ecc...
passo 5: fare clic sul pulsante di avvio del debug in mt5, quindi, mostrare questo errore.
passo 1: scaricare il codice di esempio.
passo 2: compilarlo in mql5.
passo 3: in mt5, aprire il grafico eurusd 1m, quindi, fare clic su "auto trading".
passo 4: impostare il simbolo di interruzione nella riga 223, 224, ecc...
passo 5:cliccare sul pulsante "start debugging" in mt5, quindi, mostrare questo errore.
Ciao,
Grazie per aver condiviso i tuoi passi. Se posso riportarti al codice,
if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
{
Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
}
else
{
Alert("The Buy order request could not be completed -error:",GetLastError()); // line 223
ResetLastError(); // line 224
return;
}
Per quanto ne so, il codice ha fatto quello che doveva fare. L'errore si è verificato perché l'ordine che ha cercato di piazzare non è andato a buon fine e questo è ciò che la riga 223 avrebbe dovuto fare. Per sapere cosa significa l'errore, leggere questo - https://www.mql5.com/it/docs/constants/errorswarnings/enum_trade_return_codes - (in realtà, 10030 significaTipo di riempimento ordine non valido).
Per capire cosa significhi il tipo di compilazione dell'ordine -ORDER_FILLING_FOK
mrequest.type_filling = ORDER_FILLING_FOK; // Order execution type ( line 213 )
si legga https://www.mql5.com/it/docs/constants/tradingconstants/orderproperties#enum_order_type_filling
Spero di aver risposto alla vostra domanda.
Ciao Samuel,
Ho scaricato il codice, l'ho installato e l'ho eseguito e mi sono accorto che apre ordini di acquisto e di vendita per lo più ad ogni candela che soddisfa i criteri (sto usando H1 come timeframe).
Non ho fatto il debug e mi sono accorto che alcune parti del codice non vengono attivate. Siete in grado di far funzionare correttamente l'EA con il codice disponibile per il download?