[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 608

 
artmedia70:
Comment pensez-vous que vous allez décider s'il s'agit d'un pullback ou d'un reversal ? Ou bien allez-vous ouvrir deux positions à chaque repli ? C'est un échec...

Je voudrais d'abord qu'il fonctionne, puis je voudrais exécuter l'EA dans le testeur pour trouver la taille du paramètre lim.
 
Bonjour à tous, j'essaie de faire un programme et j'ai

Je n'arrive pas à comprendre pourquoi ça ne marche pas.

Je peux l'expliquer :-)

Je voudrais faire une ligne qui change de couleur en fonction de la tendance pour ainsi dire (indicateur primitif).

Il semble changer mais il y a des lacunes comme s'il manquait une barre dans le calcul.

quelle est mon erreur



//--------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue // Couleur de la première ligne
#property indicator_color2 Red // couleur de la deuxième ligne

double Buf_0[],Buf_1[] ; //ouverture des tableaux d'indicateurs
//--------------------------------------------------------------------
int init() // Fonction spéciale init()
{
//--------------------------------------------------------------------
SetIndexBuffer(0,Buf_0) ; // Affectation d'un tableau au tampon
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Style de ligne
//--------------------------------------------------------------------
SetIndexBuffer(1,Buf_1) ;
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2) ;
//--------------------------------------------------------------------
retour ;
}
//--------------------------------------------------------------------
int start()
{
int i, counted_bars ;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted() ; // Nombre de barres calculées
i=Bars-Counted_bars-1 ; // Index du premier non compté
while(i>=0) // Parcourt les barres non comptées
{
double a=(High[i]+Low[i])/2 ;
double b=(High[i+1]+Low[i+1])/2;
if (a=>b) Buf_0[i]=a ; //changer ou non de couleur
si (a<b) Buf_1[i]=a ;
i-- ;
}
//--------------------------------------------------------------------
retour ;
}
//--------------------------------------------------------------------
 
Bonjour !!! Pouvez-vous me conseiller sur la façon d'implémenter ceci dans le code ? Je devrais avoir 3 (les montants sont fixés séparément) ordres sl non rentables pour ouvrir deux ordres d'achat et de vente. La distance qui les sépare doit être définie dans une variable distincte.
 
Bonjour, je veux calculer l'ATR historique intraday (c'est-à-dire la moyenne pour chaque heure sur les 30 derniers jours) et j'aimerais croire que quelque chose comme cela devrait déjà exister - peut-être que l'indicateur s'appelle autrement ou que les indicateurs existants peuvent être ajustés d'une manière ou d'une autre ? si quelqu'un le sait, merci de me conseiller !
 
zelek:

J'aimerais d'abord le faire fonctionner, puis exécuter l'EA dans le testeur pour évaluer le paramètre lim.
Et vous pouvez l'attacher à l'ATR. Il y aura une dynamique et aucun besoin d'ajustement - tout dépendra de la volatilité du marché.
 
Top2n:
Bonjour !!! Pouvez-vous me conseiller sur la façon d'implémenter ceci dans le code ? Je devrais avoir 3 (le nombre total est défini séparément) ordres perdants sl devrais ouvrir deux ordres d'achat et de vente. La distance qui les sépare doit être définie dans une variable distincte.


Nous fixons une variable égale à zéro et l'augmentons de 1 lorsque la position est perdante. Dès qu'il atteint la valeur requise, nous ouvrons les positions nécessaires.
C'est la logique...
 

Pouvez-vous me dire quels sont les robots qui fonctionnent pendant 15 jours et dont le bénéfice ne diffère pas de celui de Cheetah 2.5 ?

Veuillez me donner un lien ou un site web, etc.

Merci d'avance pour votre temps

 
artmedia70:
Et tu le connectes à l'ATR. Il sera dynamique et il n'est pas nécessaire de l'ajuster - il dépendra de la volatilité du marché.


Veuillez regarder le code, je ne comprends pas pourquoi les ordres ne sont pas fermés.

extern int     lim=20;             // Дистанция возврата курса

/
int init()
  {
 

   return(0);
  }
/
int deinit()
  {
//----
   
//----
   return(0);
  }

int start()
  {
 
  double 
   max, min;                                            
  int b, s;
   if (Bid>max) max=Bid; 
    if (Ask<min) min=Ask;  
       if (OrdersTotal()>0)
       {                                   
           if ((max-Bid)>=lim*Point) 
           {                   
          OrderSelect(b,SELECT_BY_TICKET);                                  
          b=OrderClose(OrderTicket(),0.1,Bid,3,Blue);
          }
          
          
          if ((Ask-min)>=lim*Point)  
          {         
      OrderSelect(s,SELECT_BY_TICKET); 
      s=OrderClose(OrderTicket(),0.1,Ask,3,Red);
         }
}
else
{
  if (OrdersTotal()<1)
  {
 b=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",5,0);
      
 s=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",5,0); 
    }                           
   }
         return;

   return(0);
  }
 
zelek:


Jetez un coup d'œil au code, je ne comprends pas pourquoi les ordres ne se ferment pas.

structure intéressante :
si (Enchère>max) max=Enchère ;
si (Ask<min) min=Ask ;

Etes-vous sûr que si le prix augmente, alors si ((max-Bid)>=lim*Point) sera exécuté ?

Je ferais la chose suivante - dans la section init(), par exemple, je mémoriserais le prix lorsque l'EA démarre (il peut ne pas être dans l'init) - et ensuite je danserais à partir de ce prix.

Si vous avez un Expert Advisor, vous mémoriserez le prix, mais comme cela semble être le cas, vous diviserez vos min et max par des ticks et contrôlerez ensuite vos ordres dans ce couloir.


 
Logiquement, cela devrait fonctionner, mais pourquoi pas, pouvez-vous expliquer ?
Raison: