[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 803

 
Andrei01:
Y a-t-il un moyen de connaître les limites de prix sur l'échelle verticale du graphique pour calculer l'échelle (pas le prix de l'instrument, il est dans F8) ?

double WindowPriceMin( int=0)
double WindowPriceMax( int=0)
 
Top2n:
Bonjour, j'exécute le conseiller expert dans le testeur de stratégie mais il n'ouvre pas de position. Dans le magazine, il est écrit EURUSD,M5 : OrderSend error 131. Je ne sais pas combien de fois j'ai vu cette EA s'ouvrir et elle n'ouvrait plus une position. Veuillez me conseiller si quelqu'un a eu de tels problèmes. Merci d'avance


Peut-être que vous n'avez pas de lot normalisé, essayez de le ramener à la normale en utilisant :
.
double NormalizeDouble( double valeur, int chiffres)
 
zhuki:
Vous n'avez probablement pas de lot normalisé, normalisez-le avec :
double NormalizeDouble( double valeur, int chiffres)
En fait, si ma mémoire est bonne, il a une fonction prête pour la normalisation des lots...
En tenant compte de toutes les limitations possibles de DT...
Sauf s'il ne l'utilise pas... alors - Aïe... :)
 
zhuki:

double WindowPriceMin( int=0)
double WindowPriceMax( int=0)
Merci. Existe-t-il un moyen de changer cela de manière programmatique ?
 

Bonjour à tous les membres du forum.

Mes grands-parents m'ont dit que c'était le jour de la lune de miel. Joyeuses fêtes à tous.

Et moi avec mon... Drknn dit qu'il est possible de traiter les relevés des indicateurs.

Est-il possible d'additionner A / D pour une période donnée et le même montant OBV, puis de les diviser entre eux (OBV au numérateur).

Le dénominateur est A/D + coefficient avec sortie vers les paramètres.

Zéro au milieu, les frontières sont flottantes.

Somme-NON TOTAL. Chaque mouvement par valeur absolue.

Et je vais vous donner une inversion sur le juif

 
Konichiua à tous ! Comment faire pour que mon EA ouvre trois ordres avec des prises de contrôle différentes et une seule fois sur un chandelier dans une condition d'achat ou de vente. Arigato à l'avance !
 
Maniac:
Konichiua à tous ! Comment faire pour que mon EA ouvre trois ordres avec des prises de contrôle différentes et une seule fois sur un chandelier dans une condition d'achat ou de vente. Arigato à l'avance !
Comment faire 3 ordres d'envoi avec différents points de prise ou boucler cette fonction jusqu'à 3 (for ou while), avec à chaque itération un point de prise différent ?
 
sanyooooook:
Faire un envoi de 3 ordres avec des cibles différentes ou boucler cette fonction jusqu'à 3 (for ou while), à chaque itération une cible différente.


Faire 3 commandes d'envoi avec des points différents - ouvre la première commande trois fois :(

bouclez cette fonction à 3 (for ou while), chaque itération a une prise différente - ouvre un tas de premières commandes :(

Si ce n'est pas le cas, est-il possible de montrer comment le faire ?

 
Maniac:


Faire un envoi de 3 ordres avec des cibles différentes - ouvre le premier ordre trois fois :(

bouclez cette fonction à 3 (for ou while), chaque itération a une prise différente - ouvre un tas de premières commandes :(

Si ce n'est pas trop compliqué, pouvez-vous me montrer comment le faire ?

Tenez-vous le compte des ordres ouverts ?
 
sanyooooook:
Les ordres ouverts sont-ils comptabilisés ?
extern double TakeProfit = 35;
extern double StopLoss   = 25;
extern double Lots       = 0.1;

int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) {
  datetime oot;
  int      i, k=OrdersTotal();
 
  if (sym=="") sym=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (oot<OrderOpenTime()) oot=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sym, tf, oot, True));
}
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
int start()
  {
   
   int ticket;
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return(0);
     }
   if ((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
     {
      
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      
      if(Bid>High[1])
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"test",16384,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
     
      if(Bid<Low[1])
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"test",16384,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0);  
        }
      return(0);
     }

  }


Voici le code d'une EA. Vous en avez besoin :

1) il a ouvert non pas une, mais trois affaires en même temps avec des stops de 25 et des reprises de 15, 35, 50

2) après la clôture du deuxième ordre à la prise (35), la dernière position (à la prise 50) est passée au niveau du seuil de rentabilité.

Raison: