Question sur l'indicateur - page 8

 
heelflip43:

Je pense que votre problème est que vous n'avez pas réinitialisé val1 et val2. Donc une fois que vous avez trouvé le plus haut et le dernier plus bas, vous devez les réinitialiser :

J'espère que ça va t'aider.
Ahhh, j'essaierai dès que j'aurai démarré sous Windows dans la journée, merci

Je pensais que si le premier if(statement) était vrai, alors il aurait redémarré le start() à nouveau et réinitialisé depuis le début du code et donc réinitialisé val1 et val2 à nouveau

Eh bien, la façon dont je pensais à cela était - if(first statement) true then prints, and then moves to text the next if(second) likely false then goes back to the top of the start again and resets val1 and val2

J'obtiens les impressions et les valeurs correctes mais les impressions sont continues.

Maintenant que j'y pense, je n'ai jamais réussi à résoudre ce problème pour n'importe quelle déclaration if(statement), même la plus simple des croix EMA produit des impressions continues

Je vais tester le code que vous avez posté mais je serais surpris si j'ajoutais des déclarations d'impression pour imprimer ces variables et qu'il n'imprimait pas aussi en continu

Je vais l'essayer plus tard dans la journée

Merci
 
Ok, oui, la réinitialisation de val1 et val2 me redonne des hauts de A, mais tout est toujours imprimé en continu, mais pas autant qu'avant.
Je suis sûr que je dois faire quelque chose avec currentTime et iTime pour résoudre ce problème, je vais devoir l'examiner plus en détail.

Il me semble qu'il devrait déjà y avoir un schéma ABCD dans la base de code pour apprendre, mais cela semble être quelque chose qui n'est pas disponible, sauf sur la base de ZigZag que je suis en train de revoir pour voir si cela me donne des indices. Mais encore une fois, il s'agit également d'un indicateur

. Quoi qu'il en soit, si j'ajoute && macd ou autre, il ne les imprime qu'une seule fois, ce qui me déconcerte vraiment.
 
Je pense que j'ai trouvé, après avoir réfléchi et travaillé un peu plus sur le sujet.

Que diriez-vous de ceci ?

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 


     
     if(val1 > 0 && traded == false && val2==0)
      { 
      // in the absence of an && indicator above I get continous print statements
      // also does not print A high this is not desired
      // with indicator added && indicator above, then it prints A and B once as it should ???
      // I need to work this out so it won't print all the time aka trade all the time
      // A and B first values seems to initialize the whole block
      // just a reminder that they time stamps coordinate after this FYI
      // now work on C retrace and possibly signals
      // add options for user to select some candle patterns
      // add options to select indicators
      // add bells and whistles to make things fun
      // alerts,sounds,maybe poppup video animation or something
      
      double B = val1;
      Print(B, " B high");
         if(val2==0)
            {
            for (i=0; val2==0; i++)
               {
               val2=iFractals(NULL, 0, MODE_LOWER, i);
               double A = val2;
                  if(A!=0)
                     {
                     Print(A, " A low");
                     }
               }
             }  
      traded=true;
      }
     
     val1=iFractals(NULL, 0, MODE_UPPER,3);
     val2=iFractals(NULL, 0, MODE_LOWER,3); 
     
     if(val2 > 0 && traded == true && val1 == 0)
      {
      B = val2;
      Print(B, " B low");
         if(val1==0)
            {
            for (i=0; val1==0; i++)
               {
               val1=iFractals(NULL, 0, MODE_UPPER, i);
               A = val1;
                  if(A!=0)
                     {
                     Print(A, " A high");
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+


      

Cela ne s'imprime qu'une fois en ajoutant

if(val1 > 0 && traded == false && val2==0)

et

if(val2 > 0 && traded == true && val1 == 0)


Je m'en rapproche un peu plus et je peux l'évaluer davantage.

Merci pour l'aide que vous m'avez apportée, cela m'a beaucoup aidé car cela m'a donné des idées pour résoudre ce problème et a élargi mes connaissances sur la réinitialisation des choses.
Je dois garder ça dans ma poche arrière.

Merci

 

Je ne rencontre pas le problème la plupart du temps. Il semble que cela ne se produise que lorsqu'il y a une fractale supérieure et inférieure dans la même barre, ce qui arrive parfois sur des marchés incertains. Le seul moyen de contourner ce problème est de n'exécuter le calcul qu'une fois par barre :

static datetime currTime;
if(Time[0]!=currTime){
currTime = Time[0];
// Rest of code
}

Cela devrait signifier qu'il n'y aura pas de fausses transactions sur les fractales allant dans les deux sens.

 
Maintenant je peux commencer à travailler sur le reste, j'aimerais juste être assez expérimenté pour comprendre la conversion d'un indicateur iCustom en EA, alors j'aurais probablement déjà travaillé sur ce sujet il y a longtemps.

La façon dont je le fais maintenant sera plus compliquée parce que je dois encore ajouter des indicateurs iCustom à côté de ma logique de code ; et toutes les cloches et les sifflets au lieu d'utiliser un indicateur iCustomer déjà fonctionnel comme logique de code.

Quoi qu'il en soit, merci encore, c'est une excellente nouvelle pour la journée.
 
Ou votre solution fonctionnerait aussi bien, j'étais en train de tester ma théorie et je n'ai pas vu votre message.
 
heelflip43:

Je ne rencontre pas le problème la plupart du temps. Il semble que cela ne se produise que lorsqu'il y a une fractale supérieure et inférieure dans la même barre, ce qui arrive parfois sur des marchés incertains. Le seul moyen de contourner ce problème est de n'exécuter le calcul qu'une fois par barre :

Cela devrait signifier qu'il n'y aura pas de fausses transactions sur les fractales allant dans les deux sens.

J'ai besoin d'apprendre comment cette partie fonctionne un peu mieux. Je l'ai vu avant et d'autres versions similaires, mais je ne comprends que partiellement.

J'ai besoin d'étudier cela un peu plus. C'est peut-être là que je perds la plupart de mes codes à cause de l'impression continue des instructions lors des tests.

Je suis sûr qu'il existe d'autres moyens de contourner ce problème, mais j'ai l'intention de créer un indicateur pour cela et de tracer les lignes de AtoB, etc.

Je vais étudier un peu plus
 
Voici quelques progrès que j'ai fait jusqu'à présent

Peut-être que quelqu'un peut en faire bon usage, je suis sûr qu'il peut être révisé par un gourou.

Quoi qu'il en soit, il imprime ce que je veux et j'ai ajouté des valeurs externes pour les niveaux de fibrage afin que les utilisateurs puissent sélectionner les niveaux qu'ils souhaitent.

Ma première contribution de code aux forums LOL

Quelqu'un a-t-il une meilleure façon d'accomplir cette tâche ? Je prévois déjà de doubler le code en raison de l'ajout d'indicateurs iCustom pour montrer ce que mon code fait, mais cela signifie une sorte de double codage pour un tampon de tableau, etc. et ensuite utiliser iCustom.

Quoi qu'il en soit, voici ce que j'ai obtenu

//+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;
extern double fibo_retrace=0.500; //this is C retracement level
extern double fibo_extension=1.618;  // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 

     
     if(val1 > 0 && val2 == 0 && traded == false)
      { 
      double B = val1;
      Print(B, " B high");
      if(val2==0)
         {
         for (i=0; val2==0; i++)
            {
            val2=iFractals(NULL, 0, MODE_LOWER, i);
            double A = val2;
            if(A!=0)
              {
              Print(A, " A low");
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print(C, " UP ABC retrace level");
       if(Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit");
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if(val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
      Print(B, " B low");
      if(val1==0)
        {
        for (i=0; val1==0; i++)
           {
           val1=iFractals(NULL, 0, MODE_UPPER, i);
           A = val1;
           if(A!=0)
             {
              Print(A, " A high");
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
        Print(C, " DOWN ABC retrace level");
        if(Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit");
           } 
                 
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+
Avec mes connaissances et mon expérience limitées, c'est tout ce que j'ai pu trouver pour un schéma ABCD.

Je vais y travailler davantage pour permettre à l'utilisateur de modifier les A et B à des niveaux qui ne dépassent pas les A et B précédents afin de rester vraiment dans une tendance, etc.

J'espère que quelqu'un pourra l'utiliser ou le compléter avec de meilleures idées.

Maintenant je vais travailler sur des modèles de bougies et des indicateurs à ajouter, et des alertes popup, peut-être des sons et des vidéos popup qui pourraient être amusantes.

Merci pour votre aide à tous.

 

Il n'y a pas d'autre moyen d'y arriver !

23 ans plus tard, il n'y a plus rien à voir avec ce qu'il s'est passé.

Il n'y a aucune raison de ne pas le faire ! Il n'y a aucune raison de ne pas le faire !

 
GERICH:

Il n'y a pas d'autre moyen d'y arriver !

23 ans plus tard, il n'y a plus rien à voir avec ce qu'il s'est passé.

Il n'y a aucune raison de ne pas le faire ! Il n'y a aucune raison de ne pas le faire !

Mec, je ne suis pas intéressé par InstaForex et si vous voulez un script de grille s'il vous plaît postez un projet dans la section des codeurs à louer
Et s'il vous plaît postez en anglais

Joyeux trading