Indicateur Questions diverses - page 8

 
Marco vd Heijden:

La première barre du jour devrait être la première barre après que TimeHour() ait recommencé à compter.
Il s'agit bien sûr de la première barre de n'importe quelle M1, M5, M15, etc. qui sont toutes de nouvelles barres.

Je l'essaierai bientôt, je travaille également sur ce problème.

Merci beaucoup.

 

Je continue à lire les forums et à faire des recherches, je peux trouver des forums similaires, mais je ne trouve pas exactement ce que je veux. ( peut-être que je ne comprends pas leur style de code ou ... )
J'ai fait une capture d'écran rapide, j'espère que cela pourrait vous aider à me comprendre clairement.

le premier bar du jour

Merci d'avance.

 
datetime open;

open=iOpen(Symbol(),PERIOD_D1,0);

// put in ontick

if(iOpen(Symbol(),PERIOD_D1,0)!=open)
{
  if(TimeHour(open)==0)
   {
    Alert("New Day !!");
   }
  open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour
}

J'ai bu quelques bières, j'espère que vous comprenez. Je suis sûr que c'est faux de toutes les façons possibles.

Je pense que "open" doit être remplacé par "time".

iTime(

Ou peut-être que vous pouvez même le faire :

if(TimeHour(TimeCurrent())==0)
{
  Alert("NEw DAy m8");
}
ps. qu'est-il arrivé à l'autre fil de discussion ? il y avait presque 40 pages ?
 
Marco vd Heijden:

J'ai bu quelques bières, donc j'espère que vous comprenez l'idée, je suis sûr que c'est faux de toutes les façons possibles.
Ou peut-être que vous pouvez même le faire :

ps. qu'est-il arrivé à l'autre fil de discussion ? il y avait presque 40 pages ?
M. William - (Je vous respecte, vous et vos commentaires.) J'ai fait face à plusieurs reprises à la phrase que vous avez écrite : Il n'y a pas de lecteurs d'esprit ici.
Maintenant, je pense que si je ne peux pas écrire plus clairement sur mon problème, comment les gens peuvent-ils me comprendre clairement ?

---

M. Marco - merci beaucoup pour votre commentaire. Je le sais déjà, j'ai également utilisé des codes similaires dans mes indicateurs.

( J'ai essayé d'expliquer mon problème dans la section code source )

iTime( Symbol(), PERIOD_D1, 0 )
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time

---

P.S

Vous pensez que je ne peux pas ouvrir de sous-sujets ?
Je travaille toujours dessus. Je peux trouver des solutions dans les forums. Maintenant, il va bien aussi un peu lentement.

En outre :
Lorsque j'ai commencé à écrire des EA's Trade Panel, j'ai pensé que j'avais besoin d'écrire 4 scripts de fonction : Vendre, Acheter, Fermer tous les ordres, EXIT (supprimer) EA.
Pendant que je travaillais dessus j'ai eu beaucoup d'idées... maintenant que les EA ont plus de 3k lignes.
Pourtant je devrais écrire presque 10 fonctions plus utiles si je décidais de toutes les utiliser.

Peut-être aussi que lorsque j'aurai terminé mes EA du Trade Panel, j'écrirai une petite histoire sur la façon dont j'ai commencé à écrire le script de mes EA du Trade Panel. ( même si je ne l'ai pas terminé - vraiment je crois que qui le verra la plupart des gens diront : Wow génial ! ) hehe :)

---

Merci Mr. Marco.

Je vous remercie tous (qui ont répondu à mes commentaires) pour votre aide.

 
#property strict
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)

void OnStart()
  {
   local_offset*=HOUR;

   int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;

   datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
   datetime local_midnight  = broker_midnight + local_offset;

   int      M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
   datetime M5_time  = iTime(_Symbol,PERIOD_M5,M5_shift);
   double   M5_open  = iOpen(_Symbol,PERIOD_M5,M5_shift);

   printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
  }
 
honest_knave:

Merci pour votre grand exemple.
Peut-être que si je prends le temps, je vais essayer d'expliquer avec une vidéo / image demain.

J'ai fait beaucoup de recherches sur ce sujet.

( aussi je cherche comme ces mots clés dans google seo ( commentaire pas utile jusqu'à présent dans seo) : site:mql4.com | site:mql5.com première barre du jour )

 

Cherchez-vous un moyen de détecter automatiquement le décalage de l'heure locale > du courtier ? par exemple +1 heure

Si vous avez l'intention d'avoir un réglage manuel (c'est mieux parce que parfois vous ne voulez pas utiliser l'heure locale mais un autre fuseau horaire) les étapes à suivre sont comme dans mon script ci-dessus :

1. Obtenir l'heure de minuit du courtier (en utilisant iTime ou par calcul)

2. Convertissez-le en minuit local en utilisant votre paramètre de décalage.

3. Passez le minuit local par iBarShift pour obtenir la barre correcte sur l'intervalle de temps choisi.

 
honest_knave:

Cherchez-vous un moyen de détecter automatiquement le décalage de l'heure locale par rapport à l'heure du courtier ? par exemple +1 heure
Si vous avez un réglage manuel (c'est mieux parce que parfois vous ne voulez pas utiliser l'heure locale mais un autre fuseau horaire) les étapes à suivre sont comme dans mon script ci-dessus :
1. Obtenez minuit à l'heure du courtier (en utilisant iTime ou par calcul)
2. Convertissez-le en minuit local en utilisant votre paramètre de décalage
3. Passez le minuit local par iBarShift pour obtenir la barre correcte sur l'intervalle de temps choisi.

Vous avez bien compris que je cherche un moyen d'automatiser... - Alors, pourquoi ? J'ai quelques indicateurs importants (faits par moi-même - avec l'aide de différents forums) si je choisis la voie manuelle - je pourrais changer leurs paramètres... c'est un long chemin - je suis tellement paresseux :)
Merci beaucoup plus !
J'ai peut-être trouvé la solution (pour l'instant, il semble que cela fonctionne - j'ai déjà essayé 2 courtiers différents et j'ai obtenu le bon temps).

Je crois que la question vient du manque d'expérience.

Q : Comment puis-je garder seulement l'heure 1 dans le résultat ci-dessous, s'il vous plaît ?
( En fait, j'ai trouvé comment je peux garder seulement " 1 " dans le résultat ci-dessous - mais j'ai besoin d'une méthode professionnelle, s'il vous plaît )
( par exemple : résultat : 2017.02.2701:00:00 - Mais je dois garder seulement : 1 )

2017.00.00 00:00:00.000 Custom Indicator EURUSD,M5:  Bar Time: 2017.02.27 01:00:00

Merci beaucoup pour tout.

( Je vais partager comment j'ai trouvé la solution. - Si vous ne m'avez pas aidé, je ne peux pas trouver de solution - encore un grand merci. )

 

Je cherchais juste le code ci-dessous.
Mais j'ai encore besoin de le tester.

Period_Look=iTime(Symbol(),PERIOD_W1,0); // actually I need PERIOD_D1 - but did not work correctly - I still need to see first Hour of Monday for test.
Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look);
Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);

GMT_Offset=(Period_Time-iTime(Symbol(),PERIOD_W1,0)-PeriodSeconds(PERIOD_D1))/PeriodSeconds(PERIOD_H1); // result: 1

Si le code ci-dessus n'est pas correct, veuillez me le faire savoir.

Merci beaucoup @honest_knave et @Marco

 

Eh bien Max, considérez ceci : si vous recherchez un modèle, et qu'il se forme, alors votre déclencheur se déclenchera indépendamment de l'heure.

Donc le déclencheur peut avoir plusieurs horodatages sur différents courtiers, mais le moment exact du déclenchement sera à peu près le même sur tous les courtiers.

Pas exactement, mais assez proche.