Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 242
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
Non riesco a risolvere un problema apparentemente semplice. Da qualche parte sul grafico c'era un incrocio di MA. Troviamo un bar dopo la traversata. Come faccio a calcolare il numero di barre da quella barra alla barra attuale?
Non riesco a risolvere un problema apparentemente semplice. Da qualche parte sul grafico c'era un incrocio di MA. Troviamo un bar dopo la traversata. Come faccio a calcolare il numero di barre da questa barra a quella attuale?
Sembra fatto (almeno il commento sullo schermo è corretto). Grazie al"numero di barre" penso di aver trovato la soluzione. Uso la funzione iTime per determinare il datetime della barra necessaria. Lo schizzo si presenta così:
void OnTick()
{
int nBarsUp, nBarsDn;
datetime date_dn = iTime(NULL, 0, IntersectionDN());
datetime date_up = iTime(NULL, 0, IntersectionUp());
datetime date_1 = iTime(NULL, 0, 1);
nBarsUp = Bars(Symbol(), 0, date_up, date_1);
nBarsDn = Bars(Symbol(), 0, date_dn, date_1);
Commento("Numero di barre lunghe: " + nBarsUp + "\n "+ "Numero di barre corte: " + nBarsUp + "\n")
"Numero di barre corte:" + nBarsDn);
}
//+------------------------------------------------------------------+
int IntersezioneDN()
{
for(int i = 0; i < 36; i++)
{
se(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
ritorno(i-1);
}
ritorno(-1);
}
int IntersezioneSu()
{
for(int i = 0; i < 36; i++)
{
if(iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i) < iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)
&& iMA(Symbol(), 0, 5, 0, MODE_EMA, PRICE_CLOSE, i-1) > iMA(Symbol(), 0, 21, 0, MODE_EMA, PRICE_CLOSE, i-1))
ritorno(i-1);
}
ritorno(-1);
}
Sembra aver funzionato (almeno il commento sullo schermo è corretto). Grazie al"numero di barre", penso di aver trovato una soluzione. Ho usato la funzione iTime per determinare il datetime della barra desiderata. Lo schema si presenta così:
State cercando un crossover nel loop. E da zero bar in profondità nella storia. Quindi la vostra funzione IntersezioneXX() restituisce il numero della barra.
A cosa serve tutto questo?
State cercando un crossover nel loop. E dal bar zero al fondo della storia. Quindi IntersezioneXX() restituisce il numero della barra.
A cosa serve tutto questo?
Il numero del bar, sì. Ma ho bisogno di sapere il numero di barre - da questa barra in profondità nella storia fino alla barra zero. In breve, ho bisogno dell'angolo di inclinazione della barra dal MA. Ma poiché non può essere calcolato come mi sembra (prezzo sulla linea verticale e barre sulla linea orizzontale poste a una certa distanza l'una dall'altra - sono valori incompatibili). C'era una volta un suggerimento sul forum di introdurre un coefficiente - la differenza di prezzo divisa per il numero di barre. L'idea mi sembra ragionevole. Voglio metterlo in pratica, ma siccome io stesso sono un tonto, cerco di trovare qualcosa e di provarlo da solo per tentativi ed errori.
P.S. Come inserire il codice in MQL4 (come il tuo, non come il mio)?Qualcuno sa come affrontare questo problema?
Dopo aver cambiato il TF, il pannello è deformato
Il numero di barre, sì. Ma ho bisogno di sapere il numero di barre - da questa qualche barra in fondo alla storia fino alla 0a barra. In breve, ho bisogno dell'angolo della barra dal MA. Ma poiché non può essere calcolato, mi sembra (prezzo sulla linea verticale e barre sulla linea orizzontale poste a una certa distanza l'una dall'altra - sono valori incompatibili). C'era una volta un suggerimento sul forum di introdurre un coefficiente - la differenza di prezzo divisa per il numero di barre. L'idea mi sembra ragionevole. Voglio metterlo in pratica, ma essendo io stesso un dummies, cerco di trovare qualcosa e provare da solo per tentativi ed errori.
P.S. Come inserire il codice in MQL4 (come lo avete voi, non come lo ho io)?Ciao, i duenumerimenoq e wsono confrontati in modo errato, quando sono uguali, l'operatore if pensa che uno sia maggiore dell'altro. Quando q = -0,0002 e w è anche -0,0002, res12=falso, perché?
Ciao, i duenumerimenoq e wsono confrontati in modo errato, quando sono uguali, l'operatore if pensa che uno sia maggiore dell'altro, qual è l'errore? Quando q = -0,0002 e w è anche -0,0002, res12=falso, perché?
Ciao, i duenumerimenoq e wsono confrontati in modo errato, quando sono uguali, l'operatore if pensa che uno sia maggiore dell'altro. Quando q = -0,0002 e w è anche -0,0002, res12=falso, perché?
Penso che abbiamo bisogno di normalizzare e questo è tutto, non si possono confrontare i doppi tra loro senza normalizzazione.
se NormalizeDouble (q<=w)Penso che ho bisogno di normalizzare e questo è tutto, poiché non è possibile confrontare il doppio tra loro senza la normalizzazione.
Grazie, ha funzionato, solo che ho normalizzato q e w separatamente!