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
Pre-build 600 (3 febbraio2014) c'era solo start(). Ora c'è OnTick (EAs,) OnCalculate (indicatori,) e OnStart (scripts).
Iniziate ad usare le nuove funzioni di gestione degli eventi - Funzioni - Fondamenti del linguaggio - Riferimento MQL4. Vedi Come fare i tuoi lookback correttamente.
Sì! Ora ti capisco molto più chiaramente e ti ringrazio molto di più.
E il tuo commento #20 mi ha dato un'altra idea. (una volta l'hai condiviso con me e ora lo tengo in mente)
Inoltre cerco di scrivere un codice migliore per il mio indicatore, e ora cerco diimparare il commento#18-@Marco vd Heijden
Poi io ampiamente ricerca il tuo commento.
Grazie ancora una volta!
Per favore, mettilo in un esperto al posto dell'indicatore, questo permette un uso più facile in futuro quando vuoi aggiungere la tua strategia di trading.
Per il problema delle barre, memorizza il tempo di apertura della barra in una variabile datetime e confronta semplicemente il tempo registrato con il tempo reale, quindi ogni volta che si presenta una nuova barra si attiverà.
Ecco un esempio:
Prima di tutto un enorme grazie per il tuo commento molto chiaramente.
Rimango ancora su Indicator. Ho provato qualcosa, e funziona bene per me, ma ho affrontato un problema, non posso testarlo su 'Strategy Tester' - mi dà errore fatale: MT4 'Non risponde'.
#1 - Marco puoi farmi sapere da dove viene, per favore?
#2 - Il codice qui sotto è giusto?
Sotto il codice che ho provato.
string _vlineName_M5 ;
int _prd = PERIOD_M5 ;
int _prd_add = PeriodSeconds( _prd ) ;
datetime _dt_Prd_M5 ;
int _time_M5 ;
datetime _prdCvrt_M5 ;
datetime _timeCvrt_M5 ;
//---init
EventSetMillisecondTimer( 10 );
_CreateLines();
//---timer
if ( _dt_Prd_M5 != iTime( Symbol(), _prd, 0 ) )
{
_dt_Prd_M5 = iTime( Symbol(), _prd, 0 );
_CreateLines();
}
//---_CreateLines()
//---
int _dayCnt_M5 = 0;
int _cnt_M5 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_M15, _dayCnt_M5 ) );
for ( int i = 0; i < _cnt_M5; i++ )
{
//---time convert
_time_M5 = Time[i];
_prdCvrt_M5 = PeriodSeconds( _prd );
_timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;
//---name
_vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr( _timeCvrt_M5, TIME_DATE|TIME_MINUTES );
//---
if ( _Period < PERIOD_M30 )
{
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
}
}
}
ObjectMove ( 0, _vlineName_M5, 0, _dt_Prd_M5, 0 );
Ho smesso di lavorarci, continuerò dopo il tuo commento. (In realtà mi preoccupo che il codice di cui sopra schiaccerà i miei altri indicatori mentre lo uso insieme).
Grande grazie.
Evento grafico per MT4 Backtester (Migel) - MQL4 forum
La funzione timer non funziona in MT4 strategy tester quindi devi metterla nella funzione tick.
Evento grafico per MT4 Backtester (Migel) - MQL4 forum
Grazie mille!
So per certo che il problema non viene dal codice.
Marco vd Heijden:
Ecco un esempio:
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetMillisecondTimer(250);
//--- create some things
CreateLines(); // Function that creates time lines
//--- load open times
M5=iTime(Symbol(),PERIOD_M5,0);
//--- set timelines
ObjectMove(0,"Time-M5",0,M5,0);//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
if(M5!=iTime(Symbol(),PERIOD_M5,0))
{
M5=iTime(Symbol(),PERIOD_M5,0); // overwrite old value with new value
//Alert("New Bar on M5! ",TimeToString(M5,TIME_SECONDS));
// do something...
//ObjectMove(0,"Time-M5",0,M5,0);
}
}
//+------------------------------------------------------------------+
Grazie mille.
Questo commento mi insegna molte cose.
Sembra che il codice che ho postato nel mio commento precedente funzioni bene per me.
Ma ho bisogno che il codice (che funziona per Period_M5) non funzioni all'orologio 12:00 (forse è 13:00, 14:00...) e sotto il codice che ignora i tempi passati di 'OBJ_VLINE'(che è buono per me) ma mentre attualmente l'orologio 12:00 sotto il codice mi mostra in aggiunta il tempo corrente VLINE ma io non lo voglio.
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
Ho provato qualcosa che risolve il mio problema, ma non ha funzionato correttamente.
Ho anche aggiunto uno screenshot.
Per favore, aiutatemi ho davvero bisogno di risolvere questo problema.
Un enorme grazie in anticipo.
Come si fa a sapere?
Perché la connessione è andata persa e ho provato a usare'Strategy Tester' durante il tempo di disconnessione e funziona perfettamente per me.
Dopo aver letto i commenti tuoi e del signor William, e poi lo so per certo.
Non è abbastanza, scusa?
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
In questo esempio si ottiene una linea ad ogni ora MA le 12:00 perché si esclude con != differ then 12 dichiarazione così quando è == uguale a 12 nessuna linea.
In questo esempio si ottiene una linea ad ogni ora MA le 12:00 perché si esclude con != differ then 12 dichiarazione così quando è == uguale a 12 nessuna linea.
Uomobrillante, grazie :))
Questo è semplice ma non mi dispiace. Semplice e solo wow.
(In realtà uso '==' nel mio questo indicatore ma mi sono davvero concentrato su 'OnTimer')
//--- seconda volta modificato...
Questo funziona bene per me, ma quando il tempo sarà 00:00 - ulteriore tempo corrente VLINE mostra ancora.
TimeHour( _timeCvrt_M5 ) == 1 ||
TimeHour( _timeCvrt_M5 ) == 2 ||
TimeHour( _timeCvrt_M5 ) == 3 ||
TimeHour( _timeCvrt_M5 ) == 5 ||
TimeHour( _timeCvrt_M5 ) == 6 ||
TimeHour( _timeCvrt_M5 ) == 7 ||
TimeHour( _timeCvrt_M5 ) == 9 ||
TimeHour( _timeCvrt_M5 ) == 10 ||
TimeHour( _timeCvrt_M5 ) == 11 ||
TimeHour( _timeCvrt_M5 ) == 13 ||
TimeHour( _timeCvrt_M5 ) == 14 ||
TimeHour( _timeCvrt_M5 ) == 15 ||
TimeHour( _timeCvrt_M5 ) == 17 ||
TimeHour( _timeCvrt_M5 ) == 18 ||
TimeHour( _timeCvrt_M5 ) == 19 ||
TimeHour( _timeCvrt_M5 ) == 21 ||
TimeHour( _timeCvrt_M5 ) == 22 ||
TimeHour( _timeCvrt_M5 ) == 23
)
(Ho aggiornato poche volte questo commento perché sono stato ricercato)
Per favore aiutatemi.