Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 411
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
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?