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

 
timmytrade #:

Tester - "Modalità di riempimento non supportata"

Provato su 3 diversi broker. Qual è il problema?

Provate a sostituire SYMBOL_FILLING_FOK con SYMBOL_FILLING_IOC.

Saluti, Vladimir.

 
Ciao Samual, il tuo articolo è fantastico. E la tecnica di utilizzare l'indicatore della media mobile e l'ADX è ottima perché l'ho testata con la coppia di valute EUR/US H2 nel 2010.01.01 -2010.07.01 e nel 2017.01.01-2017.07.01. È fantastico. È meglio dell'indicatore Hummer Hanging Man + Stocastico. Ed è meglio dell'indicatore ThreeEMA. Grazie. Ora sto lavorando sul tuo codice.
 
mirac baver ozturk #:

Ciao a tutti (soprattutto al caro autore)

Ho seguito questo articolo. Mi è piaciuto molto e ho imparato molto da esso.

Grazie per aver scritto un articolo così informativo.

Tuttavia ho un problema. Il mio EA non ha piazzato alcun ordine. Ho scaricato il codice dell'autore ma anche questo non ha piazzato alcun ordine.

Dato che l'articolo ha 13 anni, presumo che il codice sia ormai obsoleto. Qualcuno può aiutarmi?

Il mio codice è nel file sottostante. Grazie a tutti in anticipo.

Questo codice funziona già.
 

Visitate la pagina inglese non tradotta, che è il download corretto.

Scarica da questa pagina: Guida passo-passo alla scrittura di un Expert Advisor in MQL5 per principianti - Articoli MQL5

https://www.mql5.com/en/articles/100

 

Cari tutti;

Da questo articolo in fondo, ha il codice completo mlq5 per scaricare.

Ho scaricato per controllare il funzionamento e ho scoperto che il programma ha un algoritmo non corretto.

Il setup è EURUSD, M1, 100USD con inizio dal 2025/01/01 al 2025/01/31.

Il primo ordine è un ordine di vendita, poi successivamente ci sono molti ordini di acquisto.

Il concetto è che dovrebbe avere un solo ordine, ma si verifica a partire dalla riga 165.

Il flag per verificare se è stato ordinato o meno è separato in 2 variabili flag (Buy_opned,Sell_opened).

Se ora è già presente un ordine di vendita, allora alla riga 216 (Ordersend) verrà creato un nuovo ordine di acquisto anche se ora è presente un ordine di vendita.

Attendere la prossima candela Il flag Buy_open sulla dichiarazione della riga 172 non può essere impostato di nuovo su on. Perché? Perché il primo ordine è di vendita, il secondo è di acquisto.

E sì, la prossima candela si verificherà un nuovo ordine di acquisto sulla riga 216 (Ordersend) e continuerà, molti ordini di acquisto si verificheranno fino a quando non ci sarà denaro.

Vedere il grafico qui.



Vedere l'elenco degli ordini.


Grazie.

Niwath Jeamphue.

 
Niwath Jeamphue #:

Cari tutti;

Da questo articolo in fondo, ha il codice completo mlq5 per scaricare.

Ho scaricato per controllare la funzione e ho scoperto che il programma ha un algoritmo non corretto.

L'impostazione è EURUSD, M1, 100USD a partire dal 2025/01/01 al 2025/01/31.

Il primo ordine è un ordine di vendita, poi successivamente ci sono molti ordini di acquisto.

Il concetto è di avere un solo ordine, ma si verifica a partire dalla riga 165.

Il flag per verificare se è stato ordinato o meno è separato in 2 variabili flag (Buy_opned,Sell_opened).

Se ora è già presente un ordine di vendita, alla riga 216 (Ordersend) verrà emesso un nuovo ordine di acquisto anche se ora è presente un ordine di vendita.

Attendere la prossima candela Il flag Buy_open sulla dichiarazione della riga 172 non può essere impostato di nuovo su on. Perché? Perché il primo ordine è di vendita, il secondo di acquisto.

E sì, la prossima candela si verificherà di nuovo l'ordine di acquisto sulla linea 216 (Ordersend) e continuerà, molti ordini di acquisto si verificheranno fino a quando non ci sarà denaro.

Vedere il grafico qui.



Vedere l'elenco degli ordini.


Grazie.

Niwath Jeamphue.

Non si dovrebbe usare PositionSelect(_Symbol) a meno che non si stia usando un conto di compensazione.

Su un conto di copertura, è necessario selezionare correttamente la posizione con PositionGetTicket() o PositionSelectByTicket(). Consultate la documentazione.

 
Alain Verleyen #:

Non si deve usare PositionSelect(_Symbol) se non si utilizza un conto di compensazione.

Su un conto di copertura, è necessario selezionare correttamente la posizione con PositionGetTicket() o PositionSelectByTicket(). Consultate la documentazione.

Grazie per il suo commento. Ma voglio solo dire a tutti che il codice sorgente proviene dalla versione finale completa di questo articolo.

https://www.mql5.com/it/articles/download/100/my_first_ea.mq5

Si prega di provare con te stesso, sarà capire il mio punto principale.

Grazie.

 
Niwath Jeamphue #:

Grazie per il tuo commento. Ma voglio solo dire a tutti che il codice sorgente proviene dalla versione finale completa di questo articolo.

https://www.mql5.com/it/articles/download/100/my_first_ea.mq5

Per favore, prova con te stesso, capirai il mio punto principale.

Grazie.

Questo articolo è del 2010, a quel tempo TUTTI i conti erano conti di compensazione su MT5, anche per il Forex.

I conti di copertura sono stati introdotti nel 2016: https: //www.mql5.com/en/articles/2299

MetaTrader 5 features hedging position accounting system
MetaTrader 5 features hedging position accounting system
  • 2016.03.21
  • www.mql5.com
In order to expand possibilities of retail Forex traders, we have added the second accounting system — hedging. Now, it is possible to have multiple positions per symbol, including oppositely directed ones. This paves the way to implementing trading strategies based on the so-called "locking" — if the price moves against a trader, they can open a position in the opposite direction.
 

Niwath Jeamphue #:

Provate voi stessi e capirete il mio punto di vista.

Grazie.

Salve. Capisco il tuo punto di vista. Nel file allegato ho modificato il codice sorgente dell'Expert Advisor in modo che venga aperta una sola posizione, indipendentemente dal conto utilizzato - netting o hedge.

Saluti, Vladimir.

File:
 
MrBrooklin #:

Salve. Capisco il suo punto di vista. Nel file allegato ho modificato il codice sorgente dell'Expert Advisor in modo che venga aperta una sola posizione, indipendentemente dal conto utilizzato - netting o hedge.

Saluti, Vladimir.

Conto di copertura,MrBrooklin. Grazie. Ma preferisco ricevere solo un ordine, non tanti ordini.

Ho cambiato algo. dall'originale

Cancella i flag di acquisto e vendita aperti

Se (PositionSelect(_Symbol)==true)

Se si scopre che è una posizione di acquisto allora imposta il flag Buy_opened

Altrimenti se si trova che è una posizione di vendita allora imposta il flag Sell_opened

Zona1 : Prova ad aprire l'ordine Buy in base alla condizione e al flag Buy_opened

Zona2 : Prova ad aprire l 'ordine Sell in base alla condizione e !flag Sell_opened

Al nuovo algoritmo e ora funziona bene.

Se (PositionsTotal() > 0) ritorno

Cancella i flag di acquisto e vendita aperti

Se viene rilevata una posizione di acquisto, allora impostare il flag Buy_opened

Altrimenti, se si trova una posizione di vendita, impostare Sell_opened.

Zona1 : Prova ad aprire l'ordine Buy alla condizione e !flag Buy_opened

Zona2 : Prova ad aprire un ordine di vendita alla condizione e !flag Sell_opened