Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 467

 
haron312:

Bonjour, s'il vous plaît aidez-moi avec l'erreur qui se produit dans le testeur quand j'essaie de modifier un ordre (transfert à Breakeven) : j'ai mis la fonction OrderOpenPrice() au lieu de SL, mais le testeur montre error1 (selon la documentation cela signifie qu'il y a une tentative de passer desvaleurs inchangées comme paramètres à la fonction). Je joins le code ! Merci d'avance !

void DeleteOrderFunction2() //fonction qui supprime le deuxième ordre en attente et sauvegarde le deuxième ordre au seuil de rentabilité un certain soir.

{

bool flag = false ;

si (FlagDeleteSecondOrder2 == true)

{

if(DayOfWeek() == DAYOFWEEK && //si un jour de semaine est sélectionné

Hour() == 22 //si c'est le soir

)

{

if(BuyCount() == 1 && if(il y a un ordre d'achat en cours)

SellStopCount() == 1 //et il y a un ordre de vente en attente.

)

{

for( int i = 0 ; i < OrdersTotal() ; i++) //créer des commandes

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES ;)

switch(OrderType())

{

cas OP_BUY : if(OrderProfit() > 0 &&

Bid > OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0,Arrow_Color) ;

drapeau =vrai ;

}

pause ;

cas OP_SELLSTOP : if(flag==true)

{

OrderDeleteX(OrderTicket(), Arrow_Color) ;

}

pause ;

}

}

}

if(SellCount() == 1 && // s'il y a un ordre de vente ouvert

BuyStopCount() == 1 //et il y a un ordre d'achat en attente.

)

{ Print("IS !!!!") ;

for( int i = 0 ; i < OrdersTotal() ; i++) //créer des commandes

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES ;)

switch(OrderType())

{

cas OP_SELL : si (OrderProfit() > 0 &&

Ask < OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(), OrderOpenPrice(),OrderTakeProfit(),0, Arrow_Color) ;

flag = true;Print("flag =", flag) ;

}

pause ;

cas OP_BUYSTOP : if(flag == true)

{

Print("flag =", flag) ;

OrderDeleteX(OrderTicket(), Arrow_Color) ;

}

pause ;

}

}

}


}


}

}

Supposons que OP_BUY est le premier ordre rencontré parmi les ordres, vous le modifiez et mettez le drapeau =vrai et quand il est rencontré, l'ordre en attente sera supprimé. Et voyez ce qui se passe si l'ordre en attente est rencontré en premier...
 

Aidez-moi à convertir l'indicateur en un script !

double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexArrow (0,233);
   SetIndexArrow (1,234);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)
     { 
      if (High [i+2] == High[i+3])
      bool DOWN   = High[i+1]== High[i+2]; 
                                               
                    
      if (Low [i+2] == Low [i+3])             
     bool UP =  Low[i+1]==Low[i+2] ;
      
       
      if (UP)   buf_1[i+1] = Low[i+1]-3*Point;
      if (DOWN) buf_2[i+1] = High[i+1]+3*Point;
     }
   return(0);
 }
  //  ---- end

Si iHigh(NULL,PERIOD_H1,[i+2]) et iLow(NULL,PERIOD_H1,[i+2]) sont écrits à la place deHigh [i+2] etLow[i+1], alors vous pouvez contrôler la période de temps ?

Si Hai est assorti VENDRE, si Loh ACHETER !

 
Rewerpool:

Aidez-moi à convertir l'indicateur en un script !

Si iHigh(NULL,PERIOD_H1,[i+2]) et iLow(NULL,PERIOD_H1,[i+2]) sont écrits à la place deHigh [i+2] etLow[i+1], alors vous pouvez contrôler la période de temps ?

Si Hai est assorti VENDRE, si Loh ACHETER !

trois coïncidences devront attendre longtemps

 
STARIJ:

les trois coups devront attendre longtemps.

Je ne suis pas un scalper, je vais attendre. On peut normaliser sur les 4 chiffres.

 

dans mql5 nous avons des positions ouvertes, je trouve toutes les transactions dans cette position et détermine si elles ont été ouvertes par des ordres au marché ou en attente.

dans mql4, comment puis-je savoir si les ordres ouverts ont été ouverts par le marché ou par des ordres en attente et si leur ticker change lorsqu'un ordre en attente se déclenche ?

 
Rewerpool: Je ne suis pas un scalper, je vais attendre. Nous pouvons normaliser sur les 4 chiffres.

Oui et le résultat est faible ...

5 hai correspondent et le prix augmente.

 
Pavel Kolchin:

dans mql5 nous avons des positions ouvertes, je trouve toutes les transactions dans cette position et détermine si elles ont été ouvertes par des ordres au marché ou en attente.

dans mql4, comment puis-je savoir si les ordres ouverts ont été ouverts par le marché ou par des ordres en attente et si leur ticker change lorsqu'un ordre en attente se déclenche ?

leur donner des magies différentes

 
STARIJ:

leur donner des magies différentes

Les commandes sont ouvertes par un utilisateur, je dois définir leur type lorsqu'elles sont ouvertes.

 
La question est de savoir ce qui va "charger plus" : à chaque InChartEvent défini, redéfinir le handle de l'indicateur ou définir tous les handles possibles comme un tableau au préalable dans OnInit ?
 
Roman Sharanov:
La question est de savoir ce qui va "charger plus" : à chaque InChartEvent défini, redéfinir le handle de l'indicateur ou définir au préalable tous les handles possibles comme un tableau dans OnInit ?
Différents.