
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 oneillj,
Pensavo di aver già risposto, ma sembra che sia svanito nell'etere di internet.
Il frammento di codice che hai fornito è praticamente quello di cui mi stavo lamentando all'inizio. Perché così complesso? Ho solo pensato che ci doveva essere un modo più semplice. Ho trovato questo, che sembra funzionare. Per favore correggetemi se mi sbaglio. (Ho anche provato a usare BarsCalculated, ma era sempre uguale a Bars, quindi il test ha sempre valutato falso).
statico int LastBarCount = 0;
;-) Ianse (Bars(_Symbol, _Period) > LastBarCount)
LastBarCount = Bars(_Symbol, _Period);
altrimenti
ritorna;
Sono completamente d'accordo che abbiamo bisogno di qualcosa di più semplice possibile.
Purtroppo questo codice non sembra funzionare per me in MQL5.
Purtroppo questo non sembra funzionare in MQL5.
Le barre sarebbero comunque un pessimo modo per rilevare una nuova barra.
L'unico modo affidabile per verificare la presenza di una nuova barra è usare il tempo. Non il volume, non i prezzi, non le barre.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Le barre sarebbero comunque un pessimo modo per rilevare una nuova barra.
L'unico modo affidabile per verificare la presenza di una nuova barra è usare il tempo. Non il volume, non i prezzi, non le barre.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Le barre sarebbero comunque un pessimo modo per rilevare una nuova barra.
L'unico modo affidabile per verificare la presenza di una nuova barra è usare il tempo. Non il volume, non i prezzi, non le barre.
datetime ThisBar = (datetime)SeriesInfoInteger(_Symbol,PERIOD_CURRENT,SERIES_LASTBAR_DATE);
if(LastBar != ThisBar)
{
printf("New bar: %s",TimeToString(ThisBar));
LastBar = ThisBar;
}
Solo per informazione, ho la seguente nota nei miei riferimenti:
//-- A volte SeriesInfoInteger con SERIES_LASTBAR_DATE restituisce un errore,
Questo è molto tempo fa e non sto usando/testando questa funzione da anni, quindi forse non è più il caso. Ma se vuoi usarla per rilevare una nuova barra, probabilmente è meglio controllarla ;-)
Solo per informazione, ho la seguente nota nei miei riferimenti:
//-- A volte SeriesInfoInteger con SERIES_LASTBAR_DATE restituisce un errore,
Questo è molto tempo fa e non sto usando/testando questa funzione da anni, quindi forse non è più il caso. Ma se vuoi usarla per rilevare una nuova barra, probabilmente è meglio controllarla ;-)
Questo è molto criptico Alain! Che tipo di errori?
In tal caso, per le parentesi graffe o controllare SeriesInfoInteger >0 e/o ResetLastError prima della chiamata e poi controllare _LastError dopo la chiamata.
O ottenere la fonte del tempo da qualche altra parte, ad esempio time[] se in OnCalculate, o CopyTime, ecc.
Perché non usare semplicemente qualcosa come questo:
datetime lastTime[1];
if (CopyTime(_Symbol,_Period,0,1,lastTime)==1 && prevTime!=lastTime[0])
{
prevTime=lastTime[0];
// ...
}
Questo è molto criptico Alain! Che tipo di errori?
In tal caso, per le parentesi graffe o controllare SeriesInfoInteger >0 e/o ResetLastError prima della chiamata e poi controllare _LastError dopo la chiamata.
O ottenere la fonte del tempo da qualche altra parte, ad esempio time[] se in OnCalculate, o CopyTime, ecc.
Sto solo dicendo che quando l'ho usato anni fa SeriesInfoInteger() non era molto affidabile. Sta a voi vedere cosa fare con queste informazioni :-D
Non molto TBH - non ho bisogno di rilevare una nuova barra in MT5
Ma grazie per aver condiviso - lo terrò a mente per il futuro.
Stavo solo cercando di semplificare qualcosa che le persone sembravano rendere eccessivamente complicato.
Tuttavia, il principio rimane: usare il tempo. Attenzione: scegliete il vostro metodo per ottenere il tempo a vostro rischio e pericolo, tenendo conto delle note storiche incomplete di Alain (a proposito, come va XP Service Pack 1?)
Non molto TBH - non ho bisogno di rilevare una nuova barra in MT5 Ma grazie per aver condiviso - lo terrò a mente per il futuro.
Stavo solo cercando di semplificare qualcosa che le persone sembravano rendere eccessivamente complicato.
Tuttavia, il principio rimane: usare il tempo. Attenzione: scegliete il vostro metodo per ottenere il tempo a vostro rischio e pericolo, tenendo conto delle note storiche incomplete di Alain (a proposito, com'è XP Service Pack 1?)