Aide au codage - page 667

 
j'ai besoin de quelqu'un pour m'aider à transformer ce croisement d'ema en un EA. ouvrez l'achat lorsque la flèche bleue apparaît et vendez lorsque la flèche rouge apparaît quittez le commerce lorsque la bougie à côté de la flèche se ferme. s'il vous plaît laissez le SL ET TP être ajustable et les MAs . je veux juste l'utiliser pour le commerce de la bougie
 
dotmund:
j'ai besoin de quelqu'un pour m'aider à transformer ce croisement d'ema en un EA. ouvrir acheter quand la flèche bleue apparaît et vendre quand la flèche rouge apparaît sortir du trade quand la bougie à côté de la flèche se ferme. s'il vous plaît laissez le SL ET TP être ajustable et les MAs . je veux juste l'utiliser pour le trade de la bougie
Consultez ce post : https://www.mql5.com/en/forum/180648/page940
 
mladen:

Pour le temps des bougies, le mieux est d'utiliser un indicateur spécialisé pour cela (comme le joint).

Quant au séparateur de période : il est déjà nmc mais vous pouvez utiliser l'indicateur ci-joint (il devrait être plus léger sur le cpu).

Merci beaucoup. J'essaie d' ajouter l 'option "BarsLimit" mais je n'ai pas réussi. Pouvez-vous m'aider, s'il vous plaît. Merci beaucoup pour votre temps.
Dossiers :
 
Entropy:
Merci beaucoup. J'essaie d' ajouter l 'option "BarsLimit" mais je n'ai pas réussi. Pouvez-vous m'aider, s'il vous plaît. Merci beaucoup pour votre temps.

Entropie

Voici une version avec cette option ajoutée

Dossiers :
 

Bonjour mladen pouvez-vous m'apprendre à résoudre la déclaration .

Voici ce que je reçois comme avertissement.

declaration of 'MinLots' hides global declaration at line 93    
declaration of 'MaxLots' hides global declaration at line 94    
declaration of 'Magic' hides global declaration at line 118     
void CalculateMM()
{
   double MinLots=MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
   Lots=AccountFreeMargin()/100000*RiskPercent;
   Lots=MathMin(MaxLots,MathMax(MinLots,Lots));
   if(MinLots<0.1)Lots=NormalizeDouble(Lots,2);
   else
   {
     if(MinLots<1)Lots=NormalizeDouble(Lots,1);
     else Lots=NormalizeDouble(Lots,0);
   }
   if(Lots<MinLots)Lots=MinLots;
   if(Lots>MaxLots)Lots=MaxLots;
   return;



int CloseBuyOrders(int Magic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY)
      {
       ClTicket= OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

int CloseBuyOrdersHiddenTP(int Magic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*Point))
      {
        ClTicket=OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

Merci.

 
stevenpun:

Bonjour mladen pouvez-vous m'apprendre à résoudre la déclaration .

C'est ce que je reçois l'avertissement .



Merci .

D'abord ceci :

void CalculateMM()
{
   double tMinLots=MarketInfo(Symbol(),MODE_MINLOT);
   double tMaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
   Lots=AccountFreeMargin()/100000*RiskPercent;
   Lots=MathMin(tMaxLots,MathMax(tMinLots,Lots));
   if(tMinLots<0.1)Lots=NormalizeDouble(Lots,2);
   else
   {
     if(tMinLots<1)Lots=NormalizeDouble(Lots,1);
     else Lots=NormalizeDouble(Lots,0);
   }
   if(Lots<tMinLots)Lots=tMinLots;
   if(Lots>tMaxLots)Lots=tMaxLots;
   return;

et ceci

int CloseBuyOrders(int tMagic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==tMagic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY)
      {
       ClTicket= OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

int CloseBuyOrdersHiddenTP(int tMagic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==tMagic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*Point))
      {
        ClTicket=OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}
 

Bonjour Mladen,

Pourriez-vous m'aider avec ce code monsieur, sur ce qui doit être corrigé ?

Aussi, quand il va plus haut timeframe, est-il possible de changer de

===> 1Min ~ 30 Min ==> tous les 10 pips

===> 1 Heure ======> tous les 50 pips

===> 4 Hour, Daily ======> tous les 100 pips

===> Hebdomadaire, Mensuel ===> tous les 1000 pips

Des rectangles sont souhaités au lieu de lignes monsieur.

#property indicator_chart_window

#define ONDA_BEGINS 0

#define ONDA_CONTAINS 1



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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- indicateurs


//----

return(0) ;

}

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

//| Fonction personnalisée de désinitialisation des indicateurs |

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

int deinit()

{

//----

for (int ix = 0 ; ix < nLines ; ix++) // supprime mes lignes horizontales

{

ObjectDelete("tensLines "+ix) ;

}


//----

return(0) ;

}

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

//| Fonction d'itération de l'indicateur personnalisée |

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

int start()

{

int nLines = 40 ; // Nombre total de lignes à dessiner

double lineInterval = 0.0010 ; // Intervalle entre les lignes

double normPrice = NormalizeDouble(Close[1],3) ; // Le prix actuel est arrondi au "10" le plus proche


for (int ix = 0 ; ix < nLines ; ix++) // Boucle le nombre de fois où l'intervalle de temps est atteint

{

if(ObjectFind("tensLines "+ix) < 0)

ObjectCreate("tensLines "+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval)) ; // Place la moitié au-dessus et la moitié au-dessous du prix actuel


else ObjectSet("tensLines "+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval)) ;

ObjectSet("tensLines "+ix,OBJPROP_COLOR,DarkSlateGray) ; // Améliore l'apparence des lignes.

}

//----

retour(0) ;

}

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


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

for(int iObj=ObjectsTotal()-1 ; iObj >= 0 ; iObj--)

{

string on = ObjectName(iObj) ;

int iPos = StringFind(on, name) ;

si (iPos < 0) continue ;

if (iPos > 0 && where == ONDA_BEGINS) continue ;

if (type == EMPTY) ObjectDelete(on) ;

sinon si (type == ObjectType(on)) ObjectDelete(on) ;

}

}




//---

 
murnathan32:

Bonjour Mladen,

Pourriez-vous m'aider avec ce code monsieur, sur ce qui doit être corrigé ?

Aussi, quand il va plus haut timeframe, est-il possible de changer de

===> 1Min ~ 30 Min ==> tous les 10 pips

===> 1 Heure ======> tous les 50 pips

===> 4 heures, quotidien ======> tous les 100 pips

===> Hebdomadaire, Mensuel ===> tous les 1000 pips

Des rectangles sont souhaités au lieu de lignes monsieur.

#property indicator_chart_window

#define ONDA_BEGINS 0

#define ONDA_CONTAINS 1



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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- indicateurs


//----

return(0) ;

}

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

//| Fonction personnalisée de désinitialisation des indicateurs |

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

int deinit()

{

//----

for (int ix = 0 ; ix < nLines ; ix++) // supprime mes lignes horizontales

{

ObjectDelete("tensLines "+ix) ;

}


//----

return(0) ;

}

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

//| Fonction d'itération de l'indicateur personnalisée |

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

int start()

{

int nLines = 40 ; // Nombre total de lignes à dessiner

double lineInterval = 0.0010 ; // Intervalle entre les lignes

double normPrice = NormalizeDouble(Close[1],3) ; // Le prix actuel est arrondi au "10" le plus proche


for (int ix = 0 ; ix < nLines ; ix++) // Boucle le nombre de fois où l'intervalle de temps est atteint

{

if(ObjectFind("tensLines "+ix) < 0)

ObjectCreate("tensLines "+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval)) ; // Place la moitié au-dessus et la moitié au-dessous du prix actuel


else ObjectSet("tensLines "+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval)) ;

ObjectSet("tensLines "+ix,OBJPROP_COLOR,DarkSlateGray) ; // Améliore l'apparence des lignes.

}

//----

retour(0) ;

}

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


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

for(int iObj=ObjectsTotal()-1 ; iObj >= 0 ; iObj--)

{

string on = ObjectName(iObj) ;

int iPos = StringFind(on, name) ;

si (iPos < 0) continue ;

if (iPos > 0 && where == ONDA_BEGINS) continue ;

if (type == EMPTY) ObjectDelete(on) ;

sinon si (type == ObjectType(on)) ObjectDelete(on) ;

}

}




//---

Essayez comme ceci

#property indicator_chart_window

#define  ONDA_BEGINS   0

#define  ONDA_CONTAINS 1


    int nLines = 40;                                   // Number of total line to draw

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

//| Custom indicator initialization function                         |

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

int init()

  {

//---- indicators


//----

   return(0);

  }

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

//| Custom indicator deinitialization function                       |

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

int deinit()

  {

//----

    for (int ix = 0; ix < nLines; ix++) // delete my horizontal lines

      {

      ObjectDelete("tensLines"+ix);

      }


//----

   return(0);

  }

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

//| Custom indicator iteration function                              |

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

int start()

  {


   double lineInterval = 0.0010;                      // Interval between lines

   double normPrice = NormalizeDouble(Close[1],3);    // Current price is rounded to nearest "10"


   for (int ix = 0; ix < nLines; ix++)                // Loop span number of times

      {

      if(ObjectFind("tensLines"+ix) < 0) 

         ObjectCreate("tensLines"+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval));    // Place half above and half below the current price


      else ObjectSet("tensLines"+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval));

      ObjectSet("tensLines"+ix,OBJPROP_COLOR,DarkSlateGray);      // Make the lines look better

      }

 

//----

   return(0);

  }

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


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

    for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--)

    {

        string on   = ObjectName(iObj);

        int    iPos = StringFind(on, name);

        if (iPos < 0)                         continue;

        if (iPos > 0 && where == ONDA_BEGINS) continue;

        if      (type == EMPTY)         ObjectDelete(on);

        else if (type == ObjectType(on)) ObjectDelete(on);

    }

}



 
je cherche à engager quelqu'un pour écrire du code en python pour moi, je suis prêt à payer pour le travail de quelqu'un ou si quelqu'un le fait gratuitement, c'est cool aussi lol. mais revenez me voir quand vous voulez et faites-moi savoir si quelqu'un peut m'aider, je vais entrer dans plus de détails une fois que j'ai l'attention de quelqu'un. ce sera sur les bandes de Bollinger principalement avec un couple d'autres indicateurs. merci pour toute l'aide les gars !
 
mladen:

Essayez comme ceci

Wow. Tu es le meilleur. Merci Mademoiselle pour les bénédictions.

Une autre demande. Pouvez-vous transformer la grille en rectangles comme dans la pièce jointe/photo ci-dessous. Par exemple 10 points par rectangle. Le rectangle doit projeter l'avenir.

Je pense que c'est plus facile pour les yeux que la grille par défaut. Et cela prend une demi-seconde pour voir combien de pips de mouvement vous regardez.

    ObjectCreate("Rect02", OBJ_RECTANGLE, 0, Time[0], Bid, Time[Bars], (Bid+0.0010) ); //make bar above cur price
      ObjectSet("Rect02", OBJPROP_COLOR, Silver );
      }
//================= Move the Rect with new ticks/candles ===========================
   
   else {
      ObjectMove("Rect01", 0, Time[0], WindowPriceMin()*0.95);
      ObjectMove("Rect02", 0, Time[0], Bid); 

}

Dossiers :