![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Funzionerà
Potreste usare qualcosa come if (previousNumberOfBars != Bars) o if (volume[0]==1) ma l'uso del volume è sensibile (lascia molto più spazio all'errore, e quasi sicuramente alla prima esecuzione non calcolerà tutte le barre necessarie, poiché il volume sarà già > 1)
Quello che consiglierei in ogni caso è di invertire le prime due linee del ciclo, per diventare qualcosa del genere:
{
for(int i=limit; i>=0; i--)
{[/php]You need to check that condition only once
regards
mladen
Quick coding question:
If I want an indicator to start its calculation on the open of a new bar, how can I code this?
I now have this - just an example, but I doubt it's correct:
[php]
datetime lastbar;
double buffer_a[];
double buffer_b[];
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int bars_counted = IndicatorCounted();
if(bars_counted < 0)
{
return(1);
}
bars_counted--;
int limit = Bars - bars_counted;
if(limit>BarsToLoad && BarsToLoad>0)
{
limit = BarsToLoad;
}
for(int i=limit; i>=0; i--)
{
if(lastbar != Time[0])
{
buffer_a = iMA(Symbol(), 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);
buffer_b = iMA(Symbol(), 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
//LONG ARROW
if(buffer_a > buffer_b)
{
ExtMapBuffer1 = Open - distance;
}
//SHORT ARROW
if(buffer_a < buffer_b)
{
ExtMapBuffer2 = Open + distance;
}
lastbar = Time[0];
}
}
//----
return(0);
}
//+------------------------------------------------------------------+Sì, certo, cambiare i cicli... molto meglio.
Quale metodo ritieni sia più accurato, l'opzione if(previousNumberOfBars != Bars) o if(lastbar != Time[0])?
Personalmente non vedo alcuna differenza evidente a prima vista, ma potrei sbagliarmi. Sono d'accordo sull'opzione Volume, non va bene per l'indicatore, potrebbe funzionare bene in EA.
Grazie mille mladen, grande aiuto per le mie capacità di codifica indie piuttosto scarse...![](https://c.mql5.com/forextsd/smiles/smile.png)
Grazie,
San.
Mladen o Mr Tools sarebbe possibile aggiungere un pop up e un avviso via email a questo, per favore? Mi sembra che quando tutte le linee nella finestra dell'indicatore sono insieme allo stesso tempo nella parte superiore della finestra dell'indicatore o nella parte inferiore di essa, viene identificato un buon punto di acquisto o di vendita. Grazie per qualsiasi aiuto. Chris
Ecco qui Chris, dato che il mercato ora è chiuso, non sono in grado di testare l'allarme dal vivo, ma ho ottenuto l'allarme che appare sul grafico a 1 minuto, quindi si spera che vada bene, l'allarme dovrebbe scattare quando wso e wro sono entrambi a livelli di acquisto o vendita selezionabili dall'utente. E sono d'accordo con te questo indicatore quando entrambe le linee sono al massimo o al minimo sembra essere buone opportunità di vendita e di acquisto.
Signor Strumenti. Grazie. È bello avere grandi programmatori che mi aiutano.
San
Francamente, non so quale raccomandare.
Bar è una specie di variabile interna di metatrader di un grafico corrente e Time[0] è un elemento di una struttura di array che descrive ogni singola barra che ha nella sua storia per il grafico corrente. La mia ipotesi è che prima Bars venga aggiornata per riflettere la nuova dimensione dell'array, e che poi la struttura appena aggiunta all'array venga aggiornata con i dati (tempo, "volume" e prezzi) Ma se lo fanno in "modo sequenziale" (non permettendo l'esecuzione di altri thread fino a quando l'esecuzione del codice non è finita - e sono quasi sicuro al 100% che è il modo in cui viene fatto - per quanto ho capito c'è sempre un thread separato che sta scaricando i dati e gestisce tutta la cosa di cui stiamo parlando, e tutti noi abbiamo notato una "pausa" nell'esecuzione quando apriamo un nuovo grafico e altri dati vengono scaricati e aggiunti agli array e alle variabili e ai grafici che poi utilizziamo dal codice metatrader) allora entrambe le variabili saranno visibili all'utente allo stesso tempo ... Il tempo di accesso dovrebbe essere lo stesso ... Quindi: tutto uguale![](https://c.mql5.com/forextsd/smiles/smile.png)
saluti
mladen
Sì, certo, cambia i cicli... molto meglio.
Quale metodo ritieni sia più preciso, l'opzione if(previousNumberOfBars != Bars) o if(lastbar != Time[0])?
Personalmente non vedo alcuna differenza evidente a prima vista, ma potrei sbagliarmi. Sono d'accordo sull'opzione Volume, non va bene per l'indicatore, potrebbe funzionare bene in EA.
Grazie mille mladen, grande aiuto per le mie capacità di codifica indie piuttosto scarse...![](https://c.mql5.com/forextsd/smiles/smile.png)
Grazie,
San.Fudo, tutto bene. Ho solo avuto alcune cose che dovevano essere fatte senza indugio e il mio post su TSD ha sofferto un po' a causa di questo. Ora è risolto così il mio tempo sarà meno diviso![](https://c.mql5.com/forextsd/smiles/smile.png)
Augurare un grande fine settimana a tutti![](https://c.mql5.com/forextsd/smiles/smile.png)
saluti
mladenciao mladen,
Sono felice di sentire che tutto va bene![](https://c.mql5.com/forextsd/smiles/smile.png)
quando hai la possibilità, ho postato 2 indicatori, una MA di RSX e le Triangular MA abands.
le bande Triangolari MA possono essere applicate alla MA di RSX?
Grazie!
Fudo
mladen,
sarebbe possibile combinare la MA di RSX (o anche una semplice RSX se la MA di RSX non è possibile) con Triangular MA abands?
GrazieGrazie mladen, spiegazione eccellente, non l'ho mai vista in questo modo (fili in MT4)...ho imparato di nuovo qualcosa.
Mantenendo la configurazione attuale (Time[0]).
Grazie, San.
...
Fudo
Qui si va![](https://c.mql5.com/forextsd/smiles/smile.png)
Fatto alcune modifiche (in realtà un nuovo indicatore, ma è quello che ho derivato come idea) Controlla se è quello che avevi in mente.
Il primo cambiamento è che ho rimosso i blocchi di colore e aggiunto il colore alla linea RSX così ora mostra quando è sopra o sotto la linea di segnale (così il cambiamento di colore non è la pendenza di RSX, ma la sua relazione alla linea di segnale). Il secondo è che ora è un indicatore a file singolo (non c'è bisogno di un indicatore Rsx esterno)
Riguardo a cosa si applica: puoi scegliere - se imposti TmaApplyToto 0 sarà applicato a RSX altrimenti sarà applicato alla linea di segnale (MA di RSX) salutimladen
ciao mladen,
Sono felice di sentire che tutto va bene![](https://c.mql5.com/forextsd/smiles/smile.png)
quando hai la possibilità, ho postato 2 indicatori, un MA di RSX e il Triangular MA abands.
è possibile applicare il Triangular MA abands al MA di RSX?
Grazie!
FudoInterpolare aggiungendo
ciao mladen
mtf media mobile
mtf stohactic
interpolare aggiungendo
grazie
casaliss,
Quelli (e un altro paio
) si possono trovare in questo thread: https: //www.mql5.com/en/forum/178741
Non ce l'hanno come opzione, ma quegli indicatori stanno infatti applicando l'interpolazione lineare
saluti
mladen
ciao mladen
mtf media mobile
mtf stohactic
interpolare aggiungendo
grazie