Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Avant la construction 600 (3 février2014), il n'y avait que start(). Maintenant il y a OnTick (EAs,) OnCalculate (indicateurs,) et OnStart (scripts.) J'ai oublié que vous parliez d'un indicateur.
Commencez à utiliser les nouvelles fonctions de gestion des événements - Fonctions - Notions de base du langage - Référence MQL4. Voir Comment faire vos lookbacks correctement.
Ouais ! Maintenant je vous comprends beaucoup plus clairement, et merci beaucoup plus.
Et votre commentaire #20 m'a donné une autre idée. (une fois que vous avez partagé cela avec moi et maintenant je le garde dans mon esprit)
J'essaie aussi d'écrire un meilleur code pour mon indicateur, et maintenant j'essaie d'apprendre le commentaire#18-@Marco vd Heijden
Alors je vais largement étudier votre commentaire.
Merci encore une fois !
Veuillez le mettre dans un expert au lieu d'un indicateur, cela permet une utilisation plus facile à l'avenir lorsque vous voulez ajouter votre stratégie de trading.
Pour le problème des barres, stockez l'heure d'ouverture de la barre dans une variable datetime et comparez simplement l'heure enregistrée avec l'heure réelle, puis chaque fois qu'une nouvelle barre apparaît, elle se déclenchera.
Voici un exemple :
Tout d'abord, merci beaucoup pour votre commentaire très clair.
Je reste toujours sur Indicator. J'ai essayé quelque chose, et cela fonctionne bien pour moi, mais j'ai rencontré un problème, je ne peux pas le tester sur 'Strategy Tester' - il me donne une erreur fatale : MT4 'Not Responding'.
#1 - Marco, pouvez-vous me dire d'où cela vient, s'il vous plaît ?
#2 - Le code ci-dessous est-il correct ?
Le code ci-dessous est celui que j'ai essayé.
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 );
J'ai arrêté de travailler dessus, je vais continuer après votre commentaire. (En fait, je crains que le code ci-dessus n'écrase mes autres indicateurs si je l'utilise ensemble).
Merci beaucoup.
Chart Event For MT4 Backtester (Migel) - MQL4 forum
La fonction timer ne fonctionne pas dans le testeur de stratégie MT4 donc vous devez la mettre dans la fonction tick.
Chart Event For MT4 Backtester (Migel) - MQL4 forum
Grand merci !
Je suis sûr que le problème ne vient pas du code.
Marco vd Heijden:
Voici un exemple :
//+------------------------------------------------------------------+
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);
}
}
//+------------------------------------------------------------------+
Merci beaucoup.
Ce commentaire m'a appris beaucoup de choses.
Il semble que ce code fonctionne bien pour moi, celui que j'ai posté dans mon commentaire précédent.
Mais j'ai besoin que ce code (qui fonctionne pour Period_M5) ne fonctionne pas à l'horloge 12:00 (c'est peut-être 13:00, 14:00...) et le code ci-dessous ignore les temps passés de 'OBJ_VLINE's (c'est bien pour moi) mais alors que l'horloge 12:00 actuelle, le code ci-dessous me montre en plus l'heure actuelle VLINE mais je ne le veux pas.
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
J'ai essayé quelque chose qui résout mon problème, mais cela n'a pas fonctionné correctement.
J'ai également ajouté une capture d'écran.
S'il vous plaît, aidez-moi, j'ai vraiment besoin de résoudre ce problème.
Merci beaucoup par avance.
Comment le savez-vous ?
Parce que la connexion a été perdue et j'ai essayé d'utiliser le"Strategy Tester" pendant le temps de déconnexion et il fonctionne parfaitement pour moi.
Après avoir lu vos commentaires et ceux de M. William, j'en suis sûr.
Ce n'est pas suffisant, désolé?
{
ObjectCreate( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0 );
} //---if Close
Dans cet exemple, vous obtenez une ligne à chaque heure SAUF à 12:00 parce que vous excluez avec l'instruction != différent puis 12, donc quand c'est == égal à 12, pas de ligne.
Dans cet exemple, vous obtenez une ligne à chaque heure MAIS à 12:00 parce que vous excluez avec != différent puis 12 déclaration, donc quand il est == égal à 12 pas de ligne.
C'est génial , merci :))
C'est simple mais ça ne me dérange pas. C'est simple et génial.
(En fait, j'utilise '==' dans mon indicateur mais je me suis vraiment concentré sur 'OnTimer').
//--- deuxième édition...
Cela fonctionne bien pour moi, mais quand le temps sera 00:00 - temps actuel supplémentaire VLINE montre à nouveau.
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
)
(J'ai plusieurs fois mis à jour ce commentaire parce que j'ai été recherché)
S'il vous plaît aidez-moi.