[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 27

 
volshebnik:
Oui, merci beaucoup pour ces grandes clarifications. J'ai mis en œuvre l'optimisation dans toutes les TF. Je vous ferai part des résultats après optimisation+test sur différents segments.


Vous avez demandé la possibilité d'énumérer et d'optimiser par programme les TFs possibles pour obtenir leurs valeurs d'indicateur dans le Conseiller Expert. Cela est possible de la manière suivante - par exemple

Voici quelques extraits de code du conseiller expert dans le fichier où cette opération est effectuée - tout y est décrit avec des commentaires.

......
extern int t_trend_period=7;
......

int trend_period=GetPeriod(t_trend_period); // это ф-ия для определения ТФ согласно заданному значению t_trend_period - заданному во внешней переменной (диапазон от 0 до 7)

double t_stoch_main=iStochastic(NULL,trend_period,t_Kperiod,t_Dperiod,t_slowing,MODE_SMA,0,MODE_MAIN,0);
......

// сама ф-ия выбота ТФ для оптимизации по всем периодам 
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;
   case 2: periodres=5;break;
   case 3: periodres=15;break;
   case 4: periodres=30;break;
   case 5: periodres=60;break;
   case 6: periodres=240;break;
   case 7: periodres=1440;break;
   default: periodres=1;break;
  }
return(periodres);
}

Que quelqu'un d'autre le trouve utile.

Dossiers :
 

Veuillez me conseiller ! Comment faire, disons, une nouvelle barre ouverte dans le cadre horaire (H1) et le temps est compté pour environ 50 minutes dans cette barre, après 50 minutes il y aura un signal. J'ai entendu parler de Sleep.

 
anton777:

Veuillez me conseiller ! Comment faire, disons, une nouvelle barre ouverte dans le cadre horaire (H1) et le temps est compté pour environ 50 minutes dans cette barre, après 50 minutes il y aura un signal. J'ai entendu parler de Sleep.

int minutes=50; 

if(TimeCurrent()>=iTime(NULL,PERIOD_H1,0)+minutes*60){

   /// 

}
 

J'ai un problème étrange - l'indicateur personnalisé sur le graphique et dans l'EA donne des chiffres complètement différents. L'indicateur est l'analogue MQL de LinearReg de MetaStock. Il est écrit comme suit

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Magenta

extern int  RPeriod = 20;

int shift = 0, cnt = 0,loopbegin = 0;
bool first = True;
int prevbars = 0;
double sum =0, WT = 0;
int i = 0;

double val1[];

int init()
{
SetIndexBuffer(0,val1);
   return(0);
}

int start()
{
   if (RPeriod<1) 
   {
   return(0);
   }
   loopbegin=Bars-RPeriod-1;
   for (shift=loopbegin; shift>=0; shift--)
   {
      sum=0;
      for (i=RPeriod; i>=1; i--)
      {
         sum=sum+(i-(RPeriod+1)/3)*Close[RPeriod-i+shift];
      }
      WT = sum*6/(RPeriod*(RPeriod+1));

           val1[shift] = WT;
        }
   return(0);
}
Lorsqu'il est attaché à un graphique, il montre exactement les mêmes résultats que MetaStock. Mais dès qu'il est attaché à un Expert Advisor de trading, sa valeur est supérieure à 1.4 (à sa propriété indicator_chart_window) à EURUSD, où les cotations sont autour de 1.29. Naturellement, les systèmes de trading reproduits pour MetaStock ne peuvent pas fonctionner, il s'avère qu'ils tiennent toujours la même position. Si je clique sur les résultats de l'EA la ligne de cet indicateur reste éloignée mais si je le recompile simplement, le graphique devient immédiatement correct comme dans MetaStock. Je n'arrive pas à comprendre pourquoi il y a une telle différence.
 

Bonjour, chers experts !

Je voudrais vous demander votre aide ! Je veux essayer de faire mon premier conseiller expert, avec des tâches ...
1-Pips
2-М5
3-Configuration des paramètres d'arrêt et d'enlèvement.
4 - Au lieu des décollages, il serait possible (facultatif) d'inclure une inversion de position chaque fois que ce niveau est atteint.
Pour l'arrêter manuellement, par des touches de raccourci, disons.
5 - Absolument aucun induit.
C'est tout. J'espère que je n'ai pas téléchargé.
En fait, j'ai besoin au moins quelques sources nitsy, ou la mise en page, eh bien, ce ne serait pas très compliqué, je suis si acrome scripts n'ont pas fait quoi que ce soit, et qui est, tokmo prêt refait principalement pour lui-même.
J'espère votre aide

 
Mr.Ross:

Bonjour, chers experts !

Je voudrais vous demander votre aide ! Je veux essayer de faire mon premier conseiller expert, avec des tâches ...
1-Pips
2-М5
3-Configuration des paramètres d'arrêt et d'enlèvement.
4 - Au lieu des décollages, il serait possible (facultatif) d'inclure une inversion de position chaque fois que ce niveau est atteint.
Pour l'arrêter manuellement, par des touches de raccourci, disons.
5 - Absolument aucun induit.
C'est tout. J'espère que je n'ai pas téléchargé.
En fait, j'ai besoin au moins quelques sources nitsy, ou la mise en page, eh bien, ce ne serait pas très compliqué, je suis si acrome scripts n'ont pas fait quoi que ce soit, et qui est, tokmo prêt refait principalement pour lui-même.
J'espère votre aide

https://www.mql5.com/ru/articles/1413
 
Mr.Ross:

Je veux demander votre aide !

Nous vous aiderons si vous ne comprenez pas la partie programmation, mais n'oubliez pas : "Sauver le noyé - le noyé lui-même" = Vous montrez une partie du code où il y a des points non clairs, le code fait 1,5 mille lignes - laissez tomber et réglez-le vous-même ;)
 
Ilya81:

J'ai un truc bizarre

essayez de comparer visuellement un indicateur simple et les données que le conseiller expert reçoit de cet indicateur via iCustom(). Je pense que MovingAverage est un bon indicateur pour les expériences.

vous devez utiliser la fonction iCustom() de manière incorrecte

 
Integer:

Merci beaucoup !
 

Si quelqu'un travaille chez instaforex mt4, il a peut-être rencontré un problème :

Ils ont quatre chiffres sur la démo, cinq chiffres sur le réel, mais très étrange - l'offre et la demande arrondies à quatre chiffres.


Voici un tel code :

   if (Poz_Up)
      {
         ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,NormalizeDouble(Bid-300*Point,Digits),NormalizeDouble(Ask+300*Point,Digits),Komment,0,Green);
      }
   if (Poz_Dn)
      {
         ticket=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,NormalizeDouble(Ask+300*Point,Digits),NormalizeDouble(Bid-300*Point,Digits),Komment,0,Green);
      }

j'ai l'impression que je ne sais pas quoi faire avec. il donne SL&TP quand j'ouvre une position puis 300pp et ensuite 3000pp comme si je voulais juste savoir quels sont les chiffres à chaque fois que j'en ai un nouveau.

Quelqu'un peut-il suggérer comment résoudre ce problème et quelqu'un a-t-il été confronté à des situations similaires ou est-ce seulement moi ?