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

 
Artyom Trishkin:
Je ne suis pas offensé par l'entêtement. Pourquoi ?
Et les variables doivent être initialisées explicitement. Vous verrez un jour l'importance de l'initialisation. En attendant, vous pouvez jeter tout ce qui se trouve à l'intérieur des accolades.

J'apprécie la blague. Merci.

 
input int ExtDepth=12;//
input int ExtDeviation=5;//
input int ExtBackstep=3;//

input int Deviation=10;

//---------------------------------
int zz_handle;
struct zz_info{
   double P_;
   datetime T_;
};
double zz_value[];
datetime zz_time[];
zz_info zz_highs[2];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   zz_handle=iCustom(_Symbol,PERIOD_CURRENT,"Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep);
   

   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   int count=0; 
   int i=1;
   
   CopyBuffer(zz_handle,0,1,1,zz_value);
   if(zz_value[0]!=0)
      {
      while(count<2)
         {
            CopyBuffer(zz_handle,0,i,1,zz_value);
            CopyTime(_Symbol,PERIOD_CURRENT,i,1,zz_time);
            i++;
            if(zz_value[0]!=0)
               {
                  zz_highs[count].P_=zz_value[0];
                  zz_highs[count].T_=zz_time[0];
                  count++;
               }
                           
         }
      DrawFibofan(zz_highs);
      }
      double high[];
      double low[];
      datetime Time[];
      CopyHigh(_Symbol,PERIOD_CURRENT,1,1,high);
      CopyLow(_Symbol,PERIOD_CURRENT,1,1,low);
      CopyTime(_Symbol,PERIOD_CURRENT,1,1,Time);
      double fibo_p=ObjectGetValueByTime(0,"DisFibo",Time[0],0);
      Comment(fibo_p);
   
  }
//+------------------------------------------------------------------+
void DrawFibofan(zz_info &zz[])
{
   if(zz[0].P_-zz[1].P_>0) 
      {
         ObjectDelete(0,"AscFibo");
         ObjectCreate(0,"AscFibo",OBJ_FIBOFAN,0,zz[1].T_,zz[1].P_,zz[0].T_,zz[0].P_);
         ObjectSetInteger(0,"AscFibo",OBJPROP_LEVELS,1);
         ObjectSetDouble(0,"AscFibo",OBJPROP_LEVELVALUE,0.882);
         ObjectSetInteger(0,"AscFibo",OBJPROP_LEVELCOLOR,clrNavy);
         ObjectSetInteger(0,"AscFibo",OBJPROP_WIDTH,2);
         ObjectSetString(0,"AscFibo",OBJPROP_LEVELTEXT,"88.2");
      }

      else
      {
         ObjectDelete(0,"DisFibo");
         ObjectCreate(0,"DisFibo",OBJ_FIBOFAN,0,zz[1].T_,zz[1].P_,zz[0].T_,zz[0].P_);
         ObjectSetInteger(0,"DisFibo",OBJPROP_LEVELS,1);
         ObjectSetDouble(0,"DisFibo",OBJPROP_LEVELVALUE,0.882);
         ObjectSetInteger(0,"DisFibo",OBJPROP_LEVELCOLOR,clrNavy);
         ObjectSetInteger(0,"DisFibo",OBJPROP_WIDTH,2);
         ObjectSetString(0,"DisFibo",OBJPROP_LEVELTEXT,"88.2");
      }
}

Pouvez-vous me dire ce qui ne va pas, je ne comprends pas comment obtenir la valeur de la ligne de Fibo fan sur la bougie précédente ?

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Обсудим совместные проекты в редакторе - зачем они и...
 
Roman Sharanov:

Pouvez-vous me dire ce qui ne va pas, je ne comprends pas comment obtenir la valeur de la ligne de Fibo fan sur la bougie précédente ?

Quelque chose s'est accumulé ici, à la fois mql4 et mql5...

Quelle langue dois-je utiliser pour obtenir la valeur ?

 
nicholishen:

Comparaison de nombres avec un point flottant pour l'égalité

bool ( fabs (number1-number2) < _Point / 10 * 5 )
bool flag = ( fabs (number1-number2) < _Point / 10 * 5 )
 
Si vous supprimez un compte dans le terminal, je comprends que seul l'affichage du compte dans le terminal est supprimé. Le compte lui-même sur le serveur du courtier n'est pas supprimé.
 
igrok333:
Si vous supprimez un compte dans le terminal, je comprends que seul l'affichage du compte dans le terminal est supprimé. Le compte lui-même sur le serveur du courtier n'est pas supprimé.

Oui, tu as raison.

 
STARIJ:
C'est très simple. Vous devez définir 7 paramètres pour calculer l'iMA. Le premier paramètre, le nom du symbole, est évident. Comme deuxième cadre temporel, définissez M1. Le troisième paramètre - la période - définit autant de fois que nécessaire, combien de jours sont supérieurs à une minute. Le quatrième paramètre - shift = 0. Les deux paramètres suivants - la méthode de calcul de la moyenne et le type de prix - vous les connaissez. Le dernier est le numéro de barre. Veuillez calculer le numéro de barre si vous connaissez le temps dont vous avez besoin. C'est tout ! Vérifiez-le en effectuant des calculs pour les échéances M5 et M15. Peut-être même pour le M30.

Alekseu Fedotov:

C'est aussi simple que cela.

C'est comme ça.


Je l'essaierai demain et ferai un rapport. Merci)

 

Pouvez-vous me dire comment attraper et verrouiller le moment de renversement de l'indicateur SAR parabolique? Au moins juste une idée de comment faire. Merci d'avance !

 
Corvin85:

Pouvez-vous me dire comment attraper et verrouiller le moment de renversement de l'indicateur SAR parabolique ? Au moins juste une idée de comment faire. Je n'ai aucune idée de comment l'utiliser.


vous pouvez vérifier la barre actuelle et précédente.

Par exemple, le précédent était supérieur au prix, l'actuel est inférieur au prix.

 

Bonjour, chers membres du forum. Pouvez-vous me dire ce qu'il faut faire pour que le ticket t1 ne soit pas redessiné lorsqu'une position est ouverte dans les mêmes conditions. Ainsi, lorsqu'une condition pour fermer ces positions (mais pas les autres) se produit, les deux (ou éventuellement plusieurs)

if(ЗДЕСЬ УСЛОВИЕ ОТКРЫТИЯ ПОЗИЦИИ БАЙ)
      {
      t1=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,"",0,0,Green);
      if(t1>0)
           {
            if(OrderSelect(t1,SELECT_BY_TICKET,MODE_TRADES))
              { Print("Открыта позиция BUY20");
               buy20=true;
              }
           }
         else
            Print("Error opening BUY20 order : ",GetLastError());
      return;
      }


billet. Jusqu'à présent, seul le dernier ticket est lu et la boucle de fermeture ignore le premier. La boucle semble être construite correctement :

void ClosePoz()
  { RefreshRates();
         double WPR0 = iWPR(NULL,PERIOD_M5,bars,0);
         bool rez1 = false;
         bool rez2 = false;
  int total=OrdersTotal();
      for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
         if(OrderTicket()==t1 && buy20 && MathAbs(WPR0)>81)
         rez1 =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,clrNONE); 
        
         if(OrderTicket()==t2 && buy80 && MathAbs(WPR0)<20)
         rez2 =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,clrNONE);                 
         }
       continue;  
      }      
     
  } 
Raison: