funzione di calcolo automatico della dimensione del lotto? - pagina 4

 

I file include sono nella cartella giusta?

 
Antonsan:

È un bug che è successo solo a me?
Non posso compilare nessun file con MetaEditor mq4 se metto una linea con # include.
Né sono stato in grado di compilare file mq4 che hanno una linea # include nel codice.
Abilita solo le linee
# Include <stderror.mqh>
# Include <stdlib.mqh>
# Include <WinUser32.mqh>

In aggiunta al post di phillip:

SE sopra è quello che hai nel codice... per favore considera la lettura attenta dei documenti della lingua.

Nessuno spazio bianco tra # e include

NESSUNA I maiuscola ... usa la i minuscola

 

Nel file Analyze Currency, sembra che io abbia un problema con il metodo SymbolType().

Sto negoziando CADJPY, il mio accountcurrency() è USD, ma restituisce sempre SymbolType = 6.

Il motivo è che MarketInfo("USDJPY", MODE_LOTSIZE) restituisce sempre 0.

Posso solo ottenere il LOT_SIZE per il grafico corrente. es. MarketInfo("CADJPY", MODE_LOTSIZE) funziona bene.

È un problema di MetaTrader, come mai non posso ottenere le proprietà di altre coppie?

 

Che broker stai usando Ricotter? Offrono USDJPY per il tuo trading?

Solo per confermare che il tuo codice è implementato correttamente dovresti scaricare FXDD e aprire un conto demo e provare il tuo codice su CADJPY. Dovrebbe funzionare se hai impostato correttamente i file di inclusione.

 
1005phillip:

Che broker stai usando Ricotter? Offrono USDJPY per il tuo trading?

Solo per confermare che il tuo codice è implementato correttamente dovresti scaricare FXDD e aprire un conto demo e provare il tuo codice su CADJPY. Dovrebbe funzionare se hai impostato correttamente i file di inclusione.

Ho appena fatto altri test. Ho spogliato tutto, e nella funzione start() ho aggiunto solo la chiamata a MarketInfo. Sul trading dal vivo funziona bene, ma quando uso il tester, restituisce 0 per qualsiasi cosa che non sia il simbolo su cui sto eseguendo il test.

Lo testerò con FXDD, grazie.

 
Ricotter:

Ho appena fatto altri test. Ho spogliato tutto, e nella funzione start() ho aggiunto solo la chiamata a MarketInfo. Sul trading dal vivo funziona bene, ma quando uso il tester, restituisce 0 per qualsiasi cosa che non sia il simbolo su cui sto eseguendo il test.

Lo testerò con FXDD, grazie.

Stessa cosa con FXDD. Se provo a chiamare MarketInfo("USDJPY", MODE_LOTSIZE) mentre eseguo il tester con la coppia CADJPY, restituisce 0. Ho anche scaricato lo storico per USDCAD e USDJPY.

 
Ricotter:

Stessa cosa con FXDD. Se provo a chiamare MarketInfo("USDJPY", MODE_LOTSIZE) mentre eseguo il tester contro la coppia CADJPY, restituisce 0. Ho anche scaricato lo storico per USDCAD e USDJPY.

MarketInfo() funziona solo per i simboli testati nel Tester. Vedi tutte le limitazioni del Tester qui -> https://www.mql5.com/en/articles/1512.
 
gordon:
MarketInfo() funziona solo per i simboli testati nel Tester. Vedi tutte le limitazioni del Tester qui -> https://www.mql5.com/en/articles/1512.

Grazie!

 

Il codice farà più cose per voi, è agnostico al simbolo() e calcolerà la dimensione massima del lotto da prendere per una posizione in base al capitale che siete disposti a rischiare e al prezzo di stoploss. Una volta che avete il valore del lotto, può anche calcolare per voi il potenziale di profitto basato sul vostro prezzo di takeprofit.

Calcola correttamente anche i cross, che è quello che stavi cercando... tuttavia devi essere consapevole che non puoi fare correttamente il backtest sui cross a causa di una limitazione fondamentale del design del backtester di MT4 che impedisce al tuo EA di accedere ai dati storici dei prezzi per altre coppie di valute durante il backtest. In pratica ciò significa che tutte le valutazioni monetarie che derivano dal trading di coppie incrociate in un backtest sono fondamentalmente sbagliate, il che significa che i profitti/perdite delle operazioni stesse quando vengono convertiti nella valuta del conto dal backtester sono semplicemente sbagliati.

Il codice che ho linkato li calcola correttamente, analiticamente, senza scorciatoie. Ma non possono essere utilizzati nel backtesting sui cross perché il codice cercherà di calcolare correttamente le valutazioni di mercato e il backtester gli impedirà di farlo e come tale il codice restituirà semplicemente degli avvisi di errore (come farebbe nei test forward della vita reale se il broker in qualche modo ha rotto le loro definizioni di valuta).

 
1005phillip:

Il codice farà più cose per voi, è agnostico al simbolo() e calcolerà la dimensione massima del lotto da prendere per una posizione basata sul capitale che siete disposti a rischiare e sul prezzo di stopploss. Una volta che avete il valore del lotto, può anche calcolare per voi il potenziale di profitto basato sul vostro prezzo di takeprofit.

Calcola correttamente anche i cross, che è quello che stavi cercando... tuttavia devi essere consapevole che non puoi fare correttamente il backtest sui cross a causa di una limitazione fondamentale del design del backtester di MT4 che impedisce al tuo EA di accedere ai dati storici dei prezzi per altre coppie di valute durante il backtest. In pratica ciò significa che tutte le valutazioni monetarie che derivano dal trading di coppie incrociate in un backtest sono fondamentalmente sbagliate, il che significa che i profitti/perdite delle operazioni stesse quando vengono convertiti nella valuta del conto dal backtester sono semplicemente sbagliati.

Il codice che ho linkato li calcola correttamente, analiticamente, senza scorciatoie. Ma non possono essere usati nel backtesting sui cross perché il codice cercherà di calcolare correttamente le valutazioni di mercato e il backtester gli impedirà di farlo e come tale il codice restituirà semplicemente degli avvisi di errore (come farebbe nei test forward della vita reale se il broker in qualche modo rompesse le loro definizioni di valuta).

Questo tizio lo fa usando la cronologia dei file.

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