Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 412
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
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 motivo sconosciuto il tester visualizza il valore massimo dal calcolo dell'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 l'apertura della prossima barra (periodo di 30 m)? Nel test dei 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 trade indipendentemente da un tick o meno? Per esempio, per 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ò essere in qualche candela per qualche motivo.
Grazie in anticipo!1. Non ho visto nulla sulle ultime 20 barre nel codice.
2. Come determinare il primo tick di una nuova barra
3. Come posso chiudere un ordine senza controllare se era un tick o no?
Dobbiamo evitare di lavorare con OnTick e lavorare con OnTimer. Impostare il timer con un intervallo di 1 secondo e controllare il tempo in esso. Il timer non dipende dai tick.
o_oops non sapevo che il terminale punge anche dove è l'errore, la prima volta ho colpito un errore critico.
Ci sputa sopra.
Naturalmente sputerà, si accede al 3° elemento di un array con dimensione 2 - mas[2]++
Alexey Volchanskiy:
Так у тебя в комменте стоит управляющий символ "\n " - это символ перевода строки. Если его убрать, многострочия не будет.
È uno scherzo. Ora aggiunge un commento alla fine della linea... e il testo scorre a destra. ;-)
Buona sera. Sto cercando di scrivere un semplice EA sull'incrocio di tenkan e kinjun. Ecco il codice:
void OnTick()
void OnTick()
{
Segnale commerciale_20();
}
int TradeSignal_20()
{
int sig=0;
se(h_ich==INVALID_HANDLE)
{
h_ich=iIchimoku(Simbolo(),Periodo(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
ritorno(0);
}
else
{
if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
se (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
}
//--- controlla la condizione e imposta il valore per il sig
if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
altrimenti sig=0;
if (ich1_buffer[1]>ich2_buffer[1])
if (ich1_buffer[2]<ich2_buffer[2])
Alert(Symbol()+": purchase");
if (ich1_buffer[1]<ich2_buffer[1])
if (ich1_buffer[2]>ich2_buffer[2])
Alert(Symbol()+": sale");
//--- ritorno del segnale commerciale
ritorno (sig);
}
//+------------------------------------------------------------------+
Come posso fare in modo che l'allarme sia chiamato solo una volta e non costantemente?
1. Non ho visto nulla sulle ultime 20 barre nel codice, dai dettagli.
2. Come determinare il primo tick di una nuova barra
3. Come si può chiudere un trade, indipendentemente dal fatto che sia stato spuntato o meno?
Dovete evitare di lavorare con OnTick e lavorare con OnTimer, impostare il timer con un intervallo di 1 secondo e controllare il tempo in esso. Il timer non dipende dall'arrivo delle zecche.
Buona sera. Sto cercando di scrivere un semplice EA sull'incrocio di tenkan e kinjun. Ecco il codice:
void OnTick()
void OnTick()
{
Segnale commerciale_20();
Come posso fare in modo che l'allarme sia chiamato solo una volta e non tutte le volte?Qui, come faccio a confrontare il prezzo di chiusura con il massimo delle ultime 20 barre? E se l'ultimo prezzo è uguale o superiore al massimo delle ultime 20 barre allora c'è un segnale di apertura.
Penso che il problema sia il riferimento alla barra zero, cioè la barra attuale. Dovresti definire l'inizio di una nuova barra, l'ho dato nella risposta precedente ed eseguire tutti i confronti solo sul primo tick di una nuova barra. E cambiare l'indicizzazione. Dobbiamo assicurarci che l'ultima barra chiusa non sia in iHighest. E ora avete un riferimento alla barra corrente che si forma su ogni tick, i risultati saranno i più strani.
double HIGHEST = High[iHighest(Symbol(),0,MODE_HIGH,20,2)]; if(Close[1] > SMMA && Close[1] > BB_UP && Close[1] >= HIGHEST) { ***********
Guardiamo il codice di
Penso che il problema sia con il riferimento alla barra zero, cioè la barra corrente. Devi definire l'inizio di una nuova barra, l'ho citato nella risposta precedente e solo sul primo tick della nuova barra fai tutti i confronti. E cambiare l'indicizzazione. Dobbiamo assicurarci che l'ultima barra chiusa non sia in iHighest. E ora avete un riferimento alla barra corrente che si forma su ogni tick, i risultati saranno i più strani.
Grazie, sembra aver aiutato :) anche se avrei giurato di aver fatto esattamente la stessa cosa e non ha funzionato...
Avete consigliato OnTimer() ma per qualche motivo non collabora con me. Ho studiato tutto l'aiuto e non ho trovato spiegazioni o esempi chiari, quindi ero perplesso.
Cioè, questo codice banale non viene eseguito, anche se è tutto specificato nel riferimento... Googlando questo programma mi sono imbattuto che dicono che OnTimer() non funziona nel test
modo. Anche se questo momento sembra essere eliminato con il rilascio di mql5. Aiuta a capirlo :) Grazie!
Imminence:
Googlando questo programma ho incontrato che dicono che OnTimer() non funziona in modalità test. È stato risolto con mql5. Aiutami a capirlo). Grazie!
Giusto, in MT4 nel tester il timer non funziona e non è documentato! Ho scritto a servicedesk e mi hanno detto che non lo faranno mai. Ne sono uscito chiamando OnTimer in OnTick. Ho il timer impostato su un secondo.
Così, se nel tester i tick arrivano più di 1 volta/sec, quelli in eccesso vengono saltati; se meno spesso, viene generato il multiplo di tempo di 1sec. Questo tempo si trova nella struttura TimeCurrStruct, e la mia classe principale in qualsiasi modalità prende il tempo solo da questa struttura. Secondo me, questo è l'unico modo per affrontare questo bug. Ecco una funzione, ho rimosso le cose inutili, solo la carne ))
Non puoi premere il pulsante SRC?