Il tester della egia si ferma solo quando esegue questo codice e idk perché

 

Publi

Il tester della egia si ferma solo quando esegue questo codice e idk perché

 

Publi

Risultati da 1 a 8 di 8

Discussione: Il tester della egia si ferma solo quando esegue questo codice e idk perché

  1. #1
    Hey ragazzi,

    Ho questo codice che ho scritto e nella mia mente funziona perfettamente, tuttavia la mia mente sembra sbagliata e non sa perché.
    Così ho rintracciato il problema su una parte specifica, ma non ho ancora idea di cosa stia causando il fallimento.
    Non ci sono errori di alcun signifio.

    Ecco la parte in cui sembra non riuscire a:
    Codice inserito se (Commerci # 91; 7, RowNumber2 # 93; == 1) {if (Chiedi lt; = Commerci # 91; 2, RowNumber2 # 93; Commerci # 91; 6, RowNumber # 93; == 0) { int Ticket = OrderSend (Symbol (), OP_SELL, Lots, Ask, Slippage, Trade # 91; 4, RowNumber2 # 93 ;, 0, NULL, Commerci # 91; 1, RowNumber # 93 ;, 0, Blue); Trades # 91; 6, RowNumber # 93; = 1;/Stampa (--- MagicNumber =, MagicNumber, ---); ArrayCounter2 = 0; RowNumber2 = 0; }} else {ArrayCounter2 = ArrayCounter2 1; RowNumber2 = RowNumber2 1; }
    Ecco il codice completo:
    Codice inserito/ --------------------------------------------- --------------------- /| FTB.mq4 |/| |/| https://www.mql4.com |/ ----------------------------------------------- ------------------- #property copyright #property strict extern int MagicNumber = 10001; doppi extern = 0,1; extern double TrailingStop = 0; extern int Slippage = 3; extern double EntryGap = 0,00500; extern int BrokerDigits = 5; extern int AllowableDrawdown = 25; extern int MaxDrawdown = 610; extern bool MoneyManagement = false; doppia entrata; double StopLoss; double TakeProfit; double HalfCandleSize; doppio medio; doppio OpenCheck; doppio CloseCheck; double Trades # 91; 8 # 93; # 91; 20 # 93 ;;/ArrayNumber | Numero magico | Entrata | Stoploss | WaitCounter | ScadenzaTime | Inserito | Populated int SignalTime; int BarsOnChart = Bars; int IsNewCandle; int OrderError = 0; int RowNumber = 0; int RowNumber2 = 0; int ArrayCounter = 0; int ArrayCounter2 = 0;/ ----------------------------------------------- ------------------- /| Funzione di inizializzazione esperta |/ ----------------------------------------------- ------------------- int OnInit () {Commerci # 91; 0,0 # 93; = 1; Trades 91 #; 0,1 # 93; = 2; Trades 91 #; 0,2 # 93; = 3; Trades 91 #; 0,3 # 93; = 4; Trades 91 #; 0,4 # 93; = 5; Trades 91 #; 0,5 # 93; = 6; Trades 91 #; 0,6 # 93; = 7; Trades 91 #; 0,7 # 93; = 8; Trades 91 #; 0,8 # 93; = 9; Trades 91 #; 0,9 # 93; = 10; Trades 91 #; 0,10 # 93; = 11; Trades 91 #; 0,11 # 93; = 12; Trades 91 #; 0,12 # 93; = 13; Trades 91 #; 0,13 # 93; = 14; Trades 91 #; 0,14 # 93; = 15; Trades 91 #; 0,15 # 93; = 16; Trades 91 #; 0,16 # 93; = 17; Trades 91 #; 0,17 # 93; = 18; Trades 91 #; 0,18 # 93; = 19; Trades 91 #; 0,19 # 93; = 20; Stampare(-----------); Stampa (ArrayNumber =, Commerci # 91; 0, RowNumber # 93;); Stampa (MagicNumber =, Commerci # 91; 1, RowNumber # 93;); Stampa (Entry =, Commerces # 91; 2, RowNumber # 93;); Stampa (Stoploss =, Commerci # 91; 3, RowNumber # 93;); Stampa (WaitCounter =, Commerci # 91; 4, RowNumber # 93;); Stampa (ExpirationTime =, Commerci # 91; 5, RowNumber # 93;); Stampa (Inserito =, Commerci # 91; 6, Numero riga # 93;); Stampa (Populated =, Commerces # 91; 7, RowNumber # 93;); Stampare(-----------); ritorno (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Funzione di deinitializzazione esperta |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {}/ ------------------ ------------------------------------------------ /| Funzione di tick esperto |/ ----------------------------------------------- ------------------- void OnTick () {if (BarsOnChart! = Bars)/Checking for new closedcandele {BarsOnChart = Bar; IsNewCandle = 1; } else {IsNewCandle = 0; } if (IsNewCandle == 1)/Verifica se una nuova candela ha chiuso {SignalTime = Hour () - 1; if ((SignalTime gt; 8) (SignalTime lt; 14) (High # 91; 1 # 93; gt; High # 91; 2 # 93;))/Controlla se la candela di segnalazione ha un valore più alto della candela prima ed è entro il periodo di tempo {HalfCandleSize = (Alto # 91; 1 # 93; - Basso # 91; 1 # 93;)2;/Calcola metà della dimensione della candela Middle = Low # 91; 1 # 93; HalfCandleSize;/Calcola il centro della candela OpenCheck = Middle - Open # 91; 1 # 93 ;;/Calcola la distanza tra open e middle CloseCheck = Middle - Close # 91; 1 # 93 ;;/Calcola la distanza tra close e middle se (OpenCheck gt; 0 CloseCheck gt; 0)/verifica se la candela si chiude nella metà inferiore {Entry = NormalizeDouble (Low # 91; 1 # 93; - 0,0001, 5);/Il motivo per OrderSend Error 130 è che la voce Entry è troppo vicina a Current Market Entry StopLoss = NormalizeDouble (High # 91; 1 # 93; 0,0005, 5); while (ArrayCounter lt; 20) {if (Commerces # 91; 7, RowNumber # 93; == 0) {Commerci # 91; 1, RowNumber # 93; = Numero magico; Trades # 91; 2, RowNumber # 93; = Entrata; Trades # 91; 3, RowNumber # 93; = StopLoss; Trades # 91; 4, RowNumber # 93; = 0; Trades # 91; 5, RowNumber # 93; = 0; Trades # 91; 6, RowNumber # 93; = 0; Trades # 91; 7, RowNumber # 93; = 1; MagicNumber = MagicNumber 1; Stampare(-----------); Stampa (ArrayNumber =, Commerci # 91; 0, RowNumber # 93;); Stampa (MagicNumber =, Commerci # 91; 1, RowNumber # 93;); Stampa (Entry =, Commerces # 91; 2, RowNumber # 93;); Stampa (Stoploss =, Commerci # 91; 3, RowNumber # 93;); Stampa (WaitCounter =, Commerci # 91; 4, RowNumber # 93;); Stampa (ExpirationTime =, Commerci # 91; 5, RowNumber # 93;); Stampa (Inserito =, Commerci # 91; 6, Numero riga # 93;); Stampa (Populated =, Commerces # 91; 7, RowNumber # 93;); Stampare(-----------); rompere; } else {ArrayCounter = ArrayCounter 1; RowNumber = RowNumber 1; }} ArrayCounter = 0; RowNumber = 0; }}} mentre (ArrayCounter2lt; 20) {if (Commerces # 91; 7, RowNumber2 # 93; == 1) {if (Chiedi lt; = Commerci # 91; 2, RowNumber2 # 93; Commerci # 91; 6, RowNumber # 93; == 0) {int Ticket = OrderSend (Symbol (), OP_SELL, Lots, Ask, Slippage, Trade # 91; 4, RowNumber2 # 93 ;, 0, NULL, Commerci # 91; 1, RowNumber # 93 ;, 0, Blue); Trades # 91; 6, RowNumber # 93; = 1;/Stampa (--- MagicNumber =, MagicNumber, ---); ArrayCounter2 = 0; RowNumber2 = 0; }} else {ArrayCounter2 = ArrayCounter2 1; RowNumber2 = RowNumber2 1; }} if (ArrayCounter2 == 20) {ArrayCounter2 = 0; RowNumber2 = 0; }}

    Se voi ragazzi poteste darmi la vostra saggezza che sarebbe molto apprezzata.
    Grazie!

  2. #2

    Citazione Originariamente Scritto da ;
    Ciao ragazzi, ho questo codice che ho scritto e nella mia mente funziona perfettamente, tuttavia la mia mente sembra sbagliata e non sa perché. Così ho rintracciato il problema su una parte specifica, ma non ho ancora idea di cosa stia causando il fallimento. Non ci sono errori di alcun signifio. Ecco la parte in cui sembra fallire: if (Trades [7, RowNumber2] == 1) {if (Ask lt; = Trades [2, RowNumber2] Commerci [6, RowNumber] == 0) {int Ticket = OrderSend (Symbol (), OP_SELL, Lots, Ask, Slippage, Trades [4, RowNumber2], 0, NULL, Commerces [1, RowNumber], 0, Blue); Trades [6, RowNumber] ...
    Backtester non può eseguire codice come terminale. Quindi il suo normale funzionamento di un codice nel terminale fallisce nel backtester

  3. #3

    Citazione Originariamente Scritto da ;
    {quote} Backtester non può eseguire codice come terminale. Quindi il suo normale funzionamento di un codice nel terminale fallisce nel backtester
    Cosa farebbe comunque fallire nel tester? Non l'ho testato su grafici reali.

  4. #4

    Citazione Originariamente Scritto da ;
    {quote} Cosa farebbe comunque fallire nel tester? Non l'ho testato su grafici reali.
    Se non hai testato il codice come sai funziona davvero? Lo controlli in grafici live e quando vedi lavori provalo in backtester. I codici semplici dovrebbero essere eseguiti, ma se si utilizza un codice complesso, il suo comune non viene eseguito in backtester senza grandi adattamenti del codice. Comunque è una perdita di tempo provare qualcosa nel backtester MT4. Se vuoi usare il backtester dovresti andare su MT5. Quel backtester è in grado di eseguire codice come terminale senza alcuna modifica e persino eseguirne il debug

  5. #5
    Lezione per imparare: non omettere mai la direttiva severa. Decommentalo, correggi il tuo codice e molto probabilmente avrai risolto il problema. Il mio male, sono appena venuto dalla codifica di un gruppo di python in cui # è come si commenta una linea ... Non pensavo che l'array di sintassi depreo [i, j] sarebbe stato compilato anche usando la direttiva strict. TIL.

  6. #6

    Citazione Originariamente Scritto da ;
    {quote} Se non hai testato il codice come sai funziona davvero? Lo controlli in grafici live e quando vedi lavori provalo in backtester. I codici semplici dovrebbero essere eseguiti, ma se si utilizza un codice complesso, il suo comune non viene eseguito in backtester senza grandi adattamenti del codice. Comunque è una perdita di tempo provare qualcosa nel backtester MT4. Se vuoi usare il backtester dovresti andare su MT5. Quel backtester è in grado di eseguire codice come terminale senza alcuna modifica e persino eseguirne il debug
    C'è un grande difetto con il codice di test su un grafico dal vivo. Ci vuole tempo ... un sacco di tempo. Non potrei avere un segnale per questo per un mese o più che non è affatto praticabile. Inoltre è una egia scambiata solo in determinati momenti della giornata. Inoltre, se voglio testarlo, dovrò comunque usare il tester di egia. Ci deve essere un problema nel codice da qualche parte che non lo lascerà continuare ma non riesco a trovarlo. Prendo quello che stai dicendo su MT5, ma attualmente tutto ciò che faccio è ancora su MT4. Cambiare non è così facile come scaricarlo.
    Citazione Originariamente Scritto da ;
    Lezione per imparare: non omettere mai la direttiva severa. Decommentalo, correggi il tuo codice e molto probabilmente avrai risolto il problema. Il mio male, sono appena venuto dalla codifica di un gruppo di python in cui # è come si commenta una linea ... Non pensavo che l'array di sintassi depreo [i, j] sarebbe stato compilato anche usando la direttiva strict. TIL.
    Hehe va tutto bene. Ho provato a rimuoverlo e impedisce solo gli errori di apparire (come la conversione del tipo di dati finendo in una possibile perdita che non farà in questo codice). Comunque lo stesso problema però.

  7. #7

    Citazione Originariamente Scritto da ;
    {quote} C'è un grande difetto con il codice di prova su un grafico dal vivo. Ci vuole tempo ... un sacco di tempo. Non potrei avere un segnale per questo per un mese o più che non è affatto praticabile. Inoltre è una egia scambiata solo in determinati momenti della giornata. Inoltre, se voglio testarlo, dovrò comunque usare il tester di egia. Ci deve essere un problema nel codice da qualche parte che non lo lascerà continuare ma non riesco a trovarlo. Prendo quello che stai dicendo su MT5, ma attualmente tutto ciò che faccio è ancora su MT4. Cambiare non è facile come solo ...
    Quindi volevo solo far notare alcune cose che aiuteranno il tuo codice ad andare avanti. Potrebbe essere utile consultare alcune guide di stile C e utilizzare convenzioni di sviluppo comuni. Il tuo codice è molto difficile da leggere perché non li segui. Ad esempio, c'è un intero blocco di codice che non è indentato, stai usando CamelCase per i nomi di variabili quando quello stile è tipicamente usato solo per le classi, e stai anche usando numeri interi invece di tipi booleani. Inoltre, stai utilizzando array multidimensionali errati. Devi solo usarli per l'algebra lineare, tutto il resto devi usare le strutture o gli oggetti. Ad esempio, hai inserito il codice commerciale n. 91; 1, numero riga n. 93; = MagicNumber ?? impossibile dare un senso ai numeri di Magic sono di tipo intero non doppio

  8. #8

    Citazione Originariamente Scritto da ;
    {quote} Quindi volevo solo far notare alcune cose che aiuteranno il tuo codice a progredire. Potrebbe essere utile consultare alcune guide di stile C e utilizzare convenzioni di sviluppo comuni. Il tuo codice è molto difficile da leggere perché non li segui. Ad esempio, c'è un intero blocco di codice che non è indentato, stai usando CamelCase per i nomi di variabili quando quello stile è tipicamente usato solo per le classi, e stai anche usando numeri interi invece di tipi booleani. Inoltre, stai utilizzando array multidimensionali errati. Hai solo bisogno di usarli per ...
    Capisco quello che stai dicendo. Sono praticamente autodidatta giocando con il codice e non ho mai avuto alcun tipo di classe o struttura adeguata durante l'apprendimento. Probabilmente sarebbe meglio esaminare le pratiche di codifica più convenzionali. Ora, indipendentemente da ciò, tutto funzionava ancora e alla fine ho trovato il problema grazie a un suggerimento che qualcuno mi ha dato e ho trovato un loop infinito e l'ho risolto. Grazie per l'aiuto!

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Il sito di forexmad utilizza cookie
Il sito di forexmad utilizza cookie, alcuni dei quali già installati. Per avere maggiori informazioni sui nostri cookie ti preghiamo di cliccare qui. Ti preghiamo di cliccare sul bottone a destra per accettare i nostri cookie. Se continui a navigare sul sito di forexmad assumeremo che sei d'accordo ad utilizzarli.