Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 553

 
splxgf:
Ce n'est pas un bug, c'est une fonctionnalité. Vous pouvez aller ici https://www.mql5.com/ru/articles/1388

YOOOOO merci ! Oh, mec. Un seul clic a permis de résoudre le problème.
 
AlexeyVik:

En mathématiques, 0 est 0, et dans votre cas, 0 est un certain prix à partir duquel tout a commencé.

Si le prix d'ouverture est 1.3926 comme splxgf l'a suggéré, alors le 0 sera à 1.3926/123*100=1.1322 ou 1.3926/1.23=1.1322.

1% de ce mouvement de prix serait (1.3926-1.1322)/100=0.0026

Par la suite, j'espère que vous le découvrirez par vous-même.


Chers Messieurs, c'est une absurdité. Le Fibo est construit sur 2 points, lisez ce que j'ai écrit plus haut. Vous ne pouvez rien calculer à partir d'un point 1.3926. Regardez quand l'euro était à 1,13 :)

Le prix de référence est le niveau 0 de Fibo (minimum/maximum de 4H, jour, semaine, mois, année...) et c'est un prix tout à fait spécifique et non un 0 mathématique. Les Fibo zéro et 100% sont le minimum et le maximum du prix pour la période. Ensuite, 23% comme point d'entrée à partir du niveau 0 est compréhensible et le TP à 38%, etc.

 
splxgf:


Eh bien, il s'agit d'une autre question qui peut être résolue au niveau des mathématiques élémentaires avec les pourcentages.

PercentStep=(OrderTakeProfit-OrderOpenPrice)/(138-23) - Ce serait 1% en perroquet. Pour être franc, vous devrez parfois intervertir les opérandes en fonction du type d'ordre ou du modulo.

Puis

StoplossLevel = OrderOpenPrice + PercentStep*(51-23) //LevelWLoss dans les termes de Kim, mais cela doit être calculé pour chaque ordre.

MoveStoplossLevel = OrderOpenPrice + PercentStep*(76-23) //LevelProfit - voir ci-dessus.


Merci beaucoup pour votre réponse et pour la formule. Je vais essayer.
 

Je n'arrive pas à obtenir la valeur du quatrième tampon. Qu'est-ce que je fais de mal ?

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua
//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),                      
    limit;
    double MA_1_t,MA_2_t;
    if(counted_bars>0)
    counted_bars--;
    limit=Bars-counted_bars;
    
   for(int i=0;i<limit;i++)
   {
   ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);
   }
   
   return(0);
  }
 
Forexman77:

Je n'arrive pas à obtenir la valeur du quatrième tampon. Qu'est-ce que je fais de mal ?


J'avais plusieurs boucles dans mon exemple. Tu t'es débarrassé de ceux qui n'étaient pas nécessaires ?
 

Bonjour.

Pouvez-vous me dire pourquoi dans la fenêtre des paramètres de l'EA je ne peux pas cocher la case "Autoriser les appels DLL" ?

Dans les paramètres du terminal, il est également activé. Il est OK sur d'autres EA.

J'essaie d'écrire cette EA moi-même. Il utilise l'indicateur iCustom et iCustom a besoin d'accéder à la DLL.

Merci pour votre aide.

 
Vinin:

J'avais plusieurs boucles dans mon exemple. Vous êtes-vous débarrassé de ceux qui étaient inutiles ?
J'ai essayé plusieurs façons, mais si je fais ça :
#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }

   for(i=limit1;i>=0;i--) ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   for(i=limit3;i>=0;i--) ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   for(i=limit4;i>=0;i--) ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);

   return(0);
  }

Les troisième et quatrième tampons ne comptent pas. Je ne sais pas où se trouve l'erreur. Mes connaissances dans ce domaine ne sont pas suffisantes.

Ce serait bien de ne pas tout mettre dans des tampons différents, mais de calculer la partie principale comme ceci :

 ExtMapBuffer1[i]=(Close[i]-Close[i+Period_MA_1])/MathAbs(Close[i]-Close[i+Period_MA_1]);
mais dans ce cas, il n'y a rien du tout.
 
Forexman77:
J'ai essayé différentes manières, mais si je fais ça :

Les troisième et quatrième tampons ne comptent pas. Je ne sais pas où se trouve l'erreur. Mes connaissances dans ce domaine ne sont pas suffisantes.

Il serait bon de ne pas tout mouler dans différents tampons, et de calculer la partie principale comme ceci :

mais dans ce cas, il n'y a rien du tout.


Selon votre formule, le résultat sera 1 ou -1. Est-ce vrai ou vous attendez-vous à un résultat différent ?
 
Vinin:

Selon votre formule, le résultat sera 1 ou -1. Est-ce vrai ou vous attendez-vous à un résultat différent ?

Oui, le troisième tampon sera 1 ou -1. Et le quatrième tampon calcule la moyenne mobile de ces paramètres.

Dans le troisième tampon, la valeur qui divise est multipliée par 100, mais cela ne pose pas de problème.

 
Forexman77:

Oui, le troisième tampon sera 1 ou -1. Et le quatrième tampon calcule la moyenne mobile de ces paramètres.

Dans le troisième tampon, la valeur qui divise est multipliée par 100, mais cela ne pose pas de problème.


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 2
#property  indicator_color1 Lime
#property  indicator_color2 Yellow

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2=7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   if(limit1>0)
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
     }

   for(i=limit1;i>=0;i--) 
     {
      ExtMapBuffer1[i]=1;
      if(Close[i]<Close[i+Period_MA_1])
         ExtMapBuffer1[i]=-1;
     }
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1,0,p2,0,MODE_SMA,i);

   return(0);
  }
//+------------------------------------------------------------------+
Raison: