Questions des débutants MQL5 MT5 MetaTrader 5 - page 523

 
IndicateurEnveloppes dans EA, EA s'est écrit tout seul, dans les paramètres j'ai mis un décalage (-7), pourquoi EA n'ouvre pas les ordres avec un décalage négatif dans l'indicateurEnveloppes?
 
Vagif Babaev:
IndicateurEnveloppes dans EA, EA s'est écrit tout seul, dans les paramètres j'ai mis shift (-7), pourquoi EA n'ouvre pas les ordres avec un shift négatif dans l'indicateurEnveloppes?
Dans les iEnveloppes, l'indice d'une valeur reçue du tampon d'indicateur ne doit pas être inférieur au décalage, c'est-à-dire que la dernière valeur ne doit pas être inférieure à 7.
 
demonoid123000:
Chers programmateurs. Pouvez-vous nous aider ? Je voudrais attacher le nombre d'ordres ouverts aux Expert Advisors. Je ne sais pas si cela peut aider. J'ai mis ces chouettes sur plusieurs couples et une seule commande est ouverte. Si j'ouvre un ordre sur l'une des paires, les signaux sur l'autre paire ne sont pas ignorés. Je ne sais pas quoi en faire.

le problème est cette condition

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

C'est ainsi que cela devrait fonctionner.

//+------------------------------------------------------------------+
//|                                                    Hippo_Buy.mq4 |
//|                                                        ut_Kanada |
//|                                            albertgod1972@mail.ru |
//+------------------------------------------------------------------+
#property copyright "ut_Kanada"
#property link      "albertgod1972@mail.ru"
#property version   "1.00"
#property strict
//===================================================================+
//                          ЗАДАНЫЕ ЗНАЧЕНИЯ                         |
//===================================================================+

extern double Lot= 0.1;
extern bool Stop = true;
extern int SL = 250;
extern int TP = 500;

extern bool BU=false;        // Переменная для включения Безубытка.

extern bool Tral = true;       // Переменная для выключения трала.
extern int putr = 100;         // Включение трала при прохождении цены putr пунктов.
extern int TrailingStop = 150; // Непосредственно сам трал.

                               //*****************************************************************************************************************
//==================================================================+
//                  Переменные для программы                        |
//==================================================================+

int TekBar = -1;             // Текущий бар.
int Or;                      // Номер ордера.
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//==================================================================+

int start()
  {

//==================================================================+
//                           Индикаторы                             |
//==================================================================+

   double TA1=NormalizeDouble(iCustom(NULL,0,"Trendsignal_Alert_Buy",3,300,true,true,0,0,false,1,0,1),Digits);

//==================================================================+
//                     Условия модификации Ордеров.                 |
//==================================================================+
   if(Tral==true)
     {
      int cnt;
      for(cnt=OrdersTotal(); cnt>=0; cnt--)
        {
         Or=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_SELL)
           {
            if(OrderOpenPrice()-Ask>=putr*Point)
               if(OrderStopLoss()>(Ask+Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,0);
           }

         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>=putr*Point)
               if(OrderStopLoss()<(Bid-Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,0);
           }
        }
     }

//==================================================================+
//                    Условия перевода в Безубыток.                 |
//==================================================================+  

   if(BU==true)
     {
      int cnt;
      for(cnt=OrdersTotal(); cnt>=0; cnt--)
        {
         Or=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_SELL && OrderStopLoss()>=OrderOpenPrice())
           {
            if(OrderOpenPrice()-Ask>=putr*Point)
               if(OrderStopLoss()>(Ask+Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,0);
           }

         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>=putr*Point && OrderStopLoss()<=OrderOpenPrice())
               if(OrderStopLoss()<(Bid-Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,0);
           }
        }
     }

//==================================================================+    
/*
  int q;                                             
  for(q = 1; q <= Bars; q++)
  {
   double TAq = NormalizeDouble(iCustom(NULL,0,"Trendsignal_Alert_Buy",3,300,true,true,0,0,false,1,0,q),Digits);
   if(TAq != 0)
   {
    Comment("TAq = ",TAq);
    break;
   }
  }*/
//==================================================================+
//                    Условия и Открытие Ордеров.                   |
//==================================================================+

   if(Stop==true)
     {
      if(Total_orders(_Symbol)==0)
        {
         if(TekBar==Bars)return(0);
         TekBar=Bars;
           {
            if(TA1>High[1] && TA1!=0) // Условия продажи.
               Or=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point,"000",0,0,Tomato);        // Продажа.               

            if(TA1<Low[1] && TA1!=0)
               Or=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point,"000",0,0,RoyalBlue);      // Покупка.     ;

           }
        }
     }

   if(Stop==false)
     {
      if(Total_orders(_Symbol)==0)
        {
         if(TekBar==Bars)return(0);
         TekBar=Bars;
           {
            if(TA1>High[1] && TA1!=0) // Условия продажи.
               Or=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"000",0,0,Tomato);        // Продажа.                

            if(TA1<Low[1] && TA1!=0)
               Or=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"000",0,0,RoyalBlue);      // Покупка.     
           }
        }
     }
//----   
   return(0);
  }
//+------------------------------------------------------------------+
int Total_orders(string symbol
                 //int type
                 )
  {
   int n=0;
   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         //if(OrderType()!=type)continue;
         //if(OrderMagicNumber()!=Magic)continue;
         if(OrderSymbol()!=symbol)continue;
         n++;
        }
     }
   return(n);
  }
//+------------------------------------------------------------------+
 
angel341:
Quel paramètre ou fonction permet de décaler l'indicateur vers le haut ou vers le bas de n points ?
Ajout du paramètre Shift, un nombre positif se déplace vers le haut, un nombre négatif se déplace vers le bas.
Dossiers :
 
Sergey Gritsay:

le problème est cette condition

Voici comment cela devrait fonctionner

Je ne connais pas du tout le langage de programmation... je ne comprends pas en somme. Peut-être pouvez-vous modifier ces valeurs ?
 
demonoid123000:
Je ne connais pas du tout le langage de programmation... Je ne le comprends pas. Peut-être pouvez-vous modifier ces valeurs ?
Alors où avez-vous eu ce code ?
 
Sergey Gritsay:
ajout du paramètre Shift, décalage du nombre positif vers le haut, décalage du nombre négatif vers le bas.
Merci beaucoup ! Je vais faire des tests maintenant !!!!
 

Sergey Gritsay:
добавил параметр Shift, положительное число смещение вверх, отрицательное вниз.

Merci beaucoup !

 
Sergey Gritsay:

il veut dire quelque chose comme ça

L'exécution de cette fonction supprime-t-elle les ordres ? S'il est appelé au début du code : " if(TimeCurrent()>=D'23:50')close_all();return ; " alors le programme ne fonctionne plus, c'est-à-dire que les ordres ne sont pas ouverts et que le journal indique " bouton stop pressé ". Si je supprime cette ligne, tout fonctionne et s'ouvre. Pouvez-vous expliquer ce qui ne va pas ? Je ne connais pas beaucoup les détails, donc j'ai juste copié le corps de la fonction.
 
toni_stark:
L'exécution de cette fonction supprime-t-elle les ordres ? S'il est appelé au début du code : " if(TimeCurrent()>=D'23:50')close_all();return ; " alors le programme ne fonctionne plus, c'est-à-dire que les ordres ne sont pas ouverts et que le journal indique " bouton stop pressé ". Si je supprime cette ligne, tout fonctionne et s'ouvre. Pouvez-vous expliquer ce qui ne va pas ? Je ne suis pas doué pour les détails, alors j'ai juste copié le corps de la fonction.
votre code s'il vous plaît