Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 471
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
1. Tutta la partita.
2. Non esiste un tale parametro.
Mi è stato detto in un altro thread che questo problema è irrisolvibile in MT4. :(
2. Non so dove hai preso il MA in una finestra separata per poterti dire qualcosa sul parametro. Ma... Se prendete da Indicatori --> Oscillatori --> Medie mobili dell'oscillatore, ha "Applica a:"
Così, se cercate di mettere un altro indicatore in una finestra separata, in alcuni casi, può essere applicato non solo ai prezzi standard dall'enumerazione ENUM_APPLIED_PRICE, ma anche ai dati di quell'indicatore che è già nella finestra. Forse sei solo in questa situazione.
3. Qual è il problema? Che le tre MA non corrispondono a tre MA simili (secondo la sua affermazione)? Quindi non è irrisolvibile, è un'assurdità. Se sono fatti correttamente, sono destinati a combaciare. Che differenza c'è - tre MA separate con i loro propri parametri o le stesse tre MA con gli stessi parametri, ma stipate in un indicatore con tre buffer... Riesci a vedere la differenza? Io no. E se lo vedete, allora cercate l'incoerenza nel calcolo dei MAK.
A proposito... Alligator è tre MA in un solo indicatore, ognuno con i propri parametri. Configura i parametri allo stesso modo con le tue tre MA separate e coincideranno. Ma avete tutti questi baccanali in una finestra separata... Quindi... come esempio
Ho fatto un indicatore 3MA(4,9,14) e ho deciso di confrontarlo per verificarne la correttezza con una finestra dove i tre indicatori sono MA(4), MA(9), MA(14). Mi si sono rizzati i capelli. :)
"Quando ci sono tre indicatori - MA(4), MA(9), MA(14)" la finestra dell'indicatore è autoscalata dal primo indicatore collegato a questa finestra. Nel vostro caso, è probabilmente il MA(4)
Potete per favore darmi un progetto per ottenere il valore dell'indicatore incorporato dal timeframe superiore, ma all'interno di questo timeframe.
Cioè il grafico attuale è di 15 minuti, ho bisogno di ottenere il valore dell'indicatore, calcolato per giorno, ma 45 minuti fa, come fare questo?
Ecco un semplice algoritmo che restituisce il valore dell'indicatore, ma solo per la barra corrente.
double iDelta(int Variant,int n,int TF,int index)
{
double Fibo=0;
if(Variant==1) Fibo=0.236;
if(Variant==2) Fibo=0.382;
if(Variant==3) Fibo=0.5;
if(Variant==4) Fibo=0.618;
if(Variant==5) Fibo=0.764;
if(Variant==6) Fibo=1;
if(Variant==7) Fibo=1.236;
if(Variant==8) Fibo=1.382;
if(Variant==9) Fibo=1.5;
if(Variant==10) Fibo=1.618;
if(Variant==11) Fibo=2.0;
if(Variant==12) Fibo=2.236;
if(Variant==-1) Fibo=-0.236;
if(Variant==-2) Fibo=-0.382;
if(Variant==-3) Fibo=-0.5;
if(Variant==-4) Fibo=-0.618;
if(Variant==-5) Fibo=-0.764;
if(Variant==-6) Fibo=-1;
if(Variant==-7) Fibo=-1.236;
if(Variant==-8) Fibo=-1.382;
if(Variant==-9) Fibo=-1.5;
if(Variant==-10) Fibo=-1.618;
if(Variant==-11) Fibo=-2.0;
if(Variant==-12) Fibo=-2.236;
return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );
}
Prova a disabilitare l'autoscala delle finestre degli indicatori, forse le cose si sistemeranno.
"dove i tre indicatori sono MA(4), MA(9), MA(14)" la finestra dell'indicatore è autoscalata dal primo indicatore collegato a quella finestra. Nel vostro caso, è probabilmente MA(4)
2. Non so dove hai preso il MA in una finestra separata per poterti dire qualcosa sul parametro. Ma... Se prendete da Indicatori --> Oscillatori --> Medie mobili dell'oscillatore, ha "Applica a:"
Così, se cercate di mettere un altro indicatore in una finestra separata, in alcuni casi, può essere applicato non solo ai prezzi standard dall'enumerazione ENUM_APPLIED_PRICE, ma anche ai dati di quell'indicatore che è già nella finestra. Forse sei solo in questa situazione.
3. Qual è il problema? Che le tre MA non corrispondono a tre MA simili (secondo la sua affermazione)? Quindi non è irrisolvibile, è un'assurdità. Se sono fatti correttamente, sono destinati a combaciare. Che differenza c'è - tre MA separate con i loro propri parametri o le stesse tre MA con gli stessi parametri, ma stipate in un indicatore con tre buffer... Riesci a vedere la differenza? Io no. E se lo vedete, allora cercate una discrepanza nel calcolo dei MAK.
A proposito... Alligator è tre MA in un solo indicatore, ognuno con i propri parametri. Configura i parametri allo stesso modo delle tue tre MA separate e corrisponderanno. Ma avete tutti questi baccanali in una finestra separata... Quindi... come esempio
Artyom, "Applicare a" - c'è solo un'enumerazione di prezzi. I calcoli della MA sono corretti, tutte e tre le linee sono state controllate aggiungendo un singolo indicatore con periodo 4, poi 9, poi 14 alla finestra dell'indicatore 3MA. In ogni caso il singolo indicatore coincide con la linea corrispondente dell'indicatore 3MA
Potete per favore darmi un progetto per ottenere il valore dell'indicatore incorporato dal timeframe superiore, ma all'interno di questo timeframe.
Cioè il grafico attuale è di 15 minuti, ho bisogno di ottenere il valore dell'indicatore, calcolato per giorno, ma 45 minuti fa, come fare questo?
Ecco un semplice algoritmo che restituisce il valore dell'indicatore, ma solo per la barra corrente.
double iDelta(int Variant,int n,int TF,int index)
{
double Fibo=0;
if(Variant==1) Fibo=0.236;
if(Variant==2) Fibo=0.382;
if(Variant==3) Fibo=0.5;
if(Variant==4) Fibo=0.618;
if(Variant==5) Fibo=0.764;
if(Variant==6) Fibo=1;
if(Variant==7) Fibo=1.236;
if(Variant==8) Fibo=1.382;
if(Variant==9) Fibo=1.5;
if(Variant==10) Fibo=1.618;
if(Variant==11) Fibo=2.0;
if(Variant==12) Fibo=2.236;
if(Variant==-1) Fibo=-0.236;
if(Variant==-2) Fibo=-0.382;
if(Variant==-3) Fibo=-0.5;
if(Variant==-4) Fibo=-0.618;
if(Variant==-5) Fibo=-0.764;
if(Variant==-6) Fibo=-1;
if(Variant==-7) Fibo=-1.236;
if(Variant==-8) Fibo=-1.382;
if(Variant==-9) Fibo=-1.5;
if(Variant==-10) Fibo=-1.618;
if(Variant==-11) Fibo=-2.0;
if(Variant==-12) Fibo=-2.236;
return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );
}
Non posso rispondere alla domanda, ma la funzione può essere semplificata e notevolmente velocizzata.
Quando si inizializza l'indicatore, creare un array statico
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
e tutti gli if iniDelta() possono essere sostituiti da:
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
Non posso rispondere alla domanda, ma la funzione può essere semplificata e notevolmente velocizzata.
Durante l'inizializzazione dell'indicatore crea un array statico
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
e tutti gli if iniDelta() possono essere sostituiti da:
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
Grazie, lo proverò, forse sarà meglio.
Non posso rispondere alla domanda, ma la funzione può essere semplificata e notevolmente velocizzata.
Nell'inizializzazione dell'indicatore creare un array statico
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
e tutti gli if iniDelta() possono essere sostituiti da:
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
L'ho fatto. come hai scritto, ma non ha funzionato come dovrebbe essere - non so ancora cosa esattamente è sbagliato - ho bisogno di stampare....
Non capisco la stringa.
else Fibo = -arrFibo[-Variant];
L'ho fatto come hai scritto, ma non funziona come dovrebbe - non so ancora cosa c'è di sbagliato - ho bisogno di stampare....
Non capisco la linea.
else Fibo = -arrFibo[-Variant];
Nello stesso caso abbiamo bisogno di valori negativi di Fibo, quindi -arrFibo.