Ho scritto una funzione pro-ordine con array, 3 array = 0 acquisto, 1= vendita, 2= totale delle compravendite.
Poi ho scritto una condizione per comprare se ( la prima condizione && array [0] == 0 )allora apriamo un acquisto
e in vendita se ( la prima condizione && array [1]== 0) allora apriamo una posizione Sell.
Ma il tester lancia un errore e il test si ferma, qual è il problema? ( errore " uscita di matrice " )
Significa che l'indice a cui vi state rivolgendo è al di fuori del layout dell'array. Per esempio, se array[ 3 ]; potete indirizzare solo gli elementi da 0 a 2. Controlla il tuo codice.
Un'altra possibilità è che non avete partizionato l'array (con ArrayResize()), ma state cercando di accedere ad alcuni dei suoi elementi.
Si prega di consigliare come verificare il funzionamento dell'indicatore.
L'idea è la seguente: quando l'EA forma una nuova barra chiama l'indicatore, ma l'indicatore non ha dati in questo momento e ottengo i dati della barra precedente (non ha avuto il tempo di calcolare).
Come evitare questo problema. Inoltre, tutto è a posto nello Strategy Tester. Io ottengo o bene o per niente sulla demo!
Ho controllato con Alert e per qualche ragione sconosciuta il tester dà il valore massimo dal calcolo dall'ultimo tick, ma dà questo valore
È lo stesso numero di volte dei tick, quindi l'ordine non si apre.
Il secondo problema è come fare in modo che il mio EA aspetti fino all'apertura della prossima barra (periodo di 30m)? Quando faccio il test usando i punti di controllo tutto va bene, ma se uso i tick,
poi l'EA si apre nella stessa barra subito dopo aver chiuso allo stop loss...
Inoltre, come posso chiudere un ordine, indipendentemente dal fatto che sia stato un tick o meno? Per esempio, su un periodo di 30m voglio chiudere l'ordine 5 secondi prima della fine della barra (29.55, 59.55)
In base a tutti i dati di quel momento. A questo punto il problema è che se un tick non si verifica entro 5 secondi, quindi nessun
(In teoria questa è una stronzata, ma in realtà il prossimo tick potrebbe apparire in qualche candela per qualche motivo.
può risultare in qualche candela per qualche motivo.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Ha iniziato a studiare gli array.
Ho scritto una funzione pro-ordine con array, 3 array = 0 acquisto, 1= vendita, 2= totale delle compravendite.
Poi ho scritto una condizione per comprare se ( la prima condizione && array [0] == 0 )allora apriamo un acquisto
e in vendita se ( la prima condizione && array [1]== 0) allora apriamo una posizione Sell.
Ma il tester lancia un errore e il test si ferma, qual è il problema? ( errore " uscita di matrice " )
Significa che l'indice a cui vi state rivolgendo è al di fuori del layout dell'array. Per esempio, se array[ 3 ]; potete indirizzare solo gli elementi da 0 a 2. Controlla il tuo codice.
Un'altra possibilità è che non avete partizionato l'array (con ArrayResize()), ma state cercando di accedere ad alcuni dei suoi elementi.
codice...
Cercate di capirlo da soli, il tester dovrebbe indicare in quale linea e posizione nella linea si è verificato l'errore.
o_oops non sapevo che il terminale punge anche dove è l'errore, la prima volta ho colpito un errore critico.
Ci sputa sopra.
Si prega di consigliare come verificare il funzionamento dell'indicatore.
L'idea è la seguente: quando l'EA forma una nuova barra chiama l'indicatore, ma l'indicatore non ha dati in questo momento e ottengo i dati della barra precedente (non ha avuto il tempo di calcolare).
Come evitare questo problema. Inoltre, tutto è a posto nello Strategy Tester. Io ottengo o bene o per niente sulla demo!
Questo è tutto, non è rilevante. Risolto.
Ciao, ho un problema da principiante...
Non riesco a fare in modo che il sistema confronti il valore di chiusura dell'ultima barra con i massimi e i minimi di un certo periodo, per esempio
ultime 20 battute. Cosa sto facendo di sbagliato?
Ho controllato con Alert e per qualche ragione sconosciuta il tester dà il valore massimo dal calcolo dall'ultimo tick, ma dà questo valore
È lo stesso numero di volte dei tick, quindi l'ordine non si apre.
Il secondo problema è come fare in modo che il mio EA aspetti fino all'apertura della prossima barra (periodo di 30m)? Quando faccio il test usando i punti di controllo tutto va bene, ma se uso i tick,
poi l'EA si apre nella stessa barra subito dopo aver chiuso allo stop loss...
Inoltre, come posso chiudere un ordine, indipendentemente dal fatto che sia stato un tick o meno? Per esempio, su un periodo di 30m voglio chiudere l'ordine 5 secondi prima della fine della barra (29.55, 59.55)
In base a tutti i dati di quel momento. A questo punto il problema è che se un tick non si verifica entro 5 secondi, quindi nessun
(In teoria questa è una stronzata, ma in realtà il prossimo tick potrebbe apparire in qualche candela per qualche motivo.
può risultare in qualche candela per qualche motivo.
Grazie in anticipo!Aiuto con i commenti. Su ogni barra vengono generati dei commenti. Ad ogni spunta voglio aggiungere altro testo al commento esistente.
Chiamo il codice:
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
Aggiunge un nuovo commento e ad ogni spunta in una nuova linea e il testo scorre verso il basso.
Come fare in modo che cancelli le ultime righe prima dell'output?
Aiuto con i commenti. Su ogni barra vengono generati dei commenti. Ad ogni spunta voglio aggiungere altro testo al commento esistente.
Chiamo il codice:
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
Aggiunge un nuovo commento e ad ogni spunta in una nuova linea e il testo scorre verso il basso.
Come fare in modo che cancelli le ultime righe prima dell'output?
Mi sembra che si possa sostituire completamente solo Comment()
E di conseguenza, per cambiare una parte del commento su ogni tick, bisogna cambiare completamente il commento su ogni tick.
Aiuto con i commenti. Su ogni barra vengono generati dei commenti. Ad ogni spunta voglio aggiungere altro testo al commento esistente.
Chiamo il codice:
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
Aggiunge un nuovo commento e ad ogni spunta in una nuova linea e il testo scorre verso il basso.
Come fare in modo che cancelli le ultime righe prima dell'output?