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

 

Les gars, j'ai besoin d'ordres en attente pour mettre à jour leur valeur toutes les minutes, la modification de quelque chose a été tordu, a décidé de supprimer et de définir toutes les minutes dans les deux sens, dans le testeur fonctionne bien, mais dans la vie réelle, en quelque sorte ne livre pas. Corriger ou aider au lieu de supprimer, modifier pour faire.


      if(TimeCurrent()>TimeCheck_sn && TimeCurrent()<TimeCheck_en && Ogranichitel > 0)
        {

         if(IsNewCandle())
           {

            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);


            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");


            if(OrderType() ==  OP_BUYSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket(), (Ask+(Skachok*Point)), 0, (Ask+((Skachok+TPsk)*Point)), 0);

            if(OrderType() ==  OP_SELLSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket()+1, (Bid-(Skachok*Point)), 0, (Bid-((Skachok+TPsk)*Point)), 0);
           }
        }


      if(TimeCurrent() == TimeCheck_en)
        {


         if(IsNewCandle())
           {
            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);
           }


        }
 
Порт-моне тв ordres en attente pour mettre à jour leur valeur toutes les minutes, la modification de quelque chose a été tordu, a décidé de supprimer et de définir toutes les minutes dans les deux sens, dans le testeur fonctionne bien, mais dans la vie réelle, en quelque sorte ne livre pas. Corriger ou aider au lieu de supprimer, modifier pour faire.


Il vaut mieux revenir à la modification, expliquer ce qui est nécessaire.
 
Tretyakov Rostyslav #:
Il vaut mieux revenir à la modification, expliquer ce qui est nécessaire.

L'ordre doit être modifié à chaque fois sur un nouveau chandelier dans les deux sens avec un retrait spécifié en points et en takeprofit (comme un classique), s'il pénètre (une percée sur les nouvelles), alors l'ordre s'ouvre (le deuxième ordre peut être fermé automatiquement), mais jusqu'à ce qu'il s'ouvre, alors modifier encore et encore ; et tout cela dans un délai donné spécifié dans les paramètres de l'EA.

 
Порт-моне тв #:

L'ordre doit être modifié à chaque fois sur un nouveau chandelier dans les deux sens avec un retrait déterminé en points et en takeprofit (comme un classique), s'il pénètre (une percée sur les nouvelles), alors l'ordre s'ouvre (le deuxième ordre peut être fermé automatiquement), mais jusqu'à ce qu'il s'ouvre, alors modifier encore et encore ; et tout cela dans un délai donné spécifié dans les paramètres du conseiller.

Et comment sont passées les premières commandes ?
 
Tretyakov Rostyslav #:
Comment sont passées les premières commandes ?
if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");
 
Порт-моне тв #:
Laissez-moi regarder.
 
Порт-моне тв #:
Vous avez la même condition pour les deux types de commande
.
if(Close[1]>Open[1] && CountOrders()==0)
 
Tretyakov Rostyslav #:
Vous avez la même condition pour les deux types de commande
.

Est-ce que c'est comme ça que je le veux, dans les deux sens, ou dois-je ajouter quelque chose ?

 
Порт-моне тв #:

Est-ce que c'est comme ça que je le veux, dans les deux sens, ou dois-je ajouter quelque chose ?

Ici...modification une fois à l'ouverture du bar

En ce qui concerne l'ouverture, si vous négociez sur les nouvelles, alors "Close[1]>Open[1]" n'est pas du tout nécessaire.

d'un côté "Close[1]>Open[1]", et de l'autre côté "Close[1]<Open[1]".

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsSellAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
         Print("OpenOrderSuccess");
        }
     }
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsBuyAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
         Print("OpenOrderSuccess");
        }
     }
   if(newbar!=Time[0])
     {
      ModifyOrder();
      newbar=Time[0];
     }
  }
//+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountOrders(int ot=-1) 
  {
   int cnt=0;
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==ot||ot==-1) cnt++;
           }
        }
     }
   return(cnt);
  }
//+------------------------------------------------------------------+
//| Модификация ордера                                               |
//+------------------------------------------------------------------+
void ModifyOrder()
  {
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUYSTOP&&OrderOpenPrice()!=Ask+(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Ask+(Skachok*Point), 0, Ask+((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
            if(OrderType()==OP_SELLSTOP&&OrderOpenPrice()!=Bid-(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Bid-(Skachok*Point), 0, Bid-((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
Tretyakov Rostyslav #:

Ici...modification une fois à l'ouverture du bar

En ce qui concerne l'ouverture, si vous négociez sur les nouvelles, alors "Close[1]>Open[1]" n'est pas du tout nécessaire, et si la bougie a une valeur, alors

d'un côté "Close[1]>Open[1]", et de l'autre côté "Close[1]<Open[1]".

Merci, je vais l'essayer demain matin.

Raison: