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

 

Salutations. MQL4. Je veux ajouter un jeu de serpent à mon EA.

Pouvez-vous nous dire s'il est possible de définir le nombre de secondes qui détermine la périodicité des événements OnTimer() comme étant inférieur à 1, par exemple 0,7 ?

Ou d'autres moyens d'implémenter l'exécution périodique d'une partie du code, mais de manière à ne pas retarder l'exécution dans OnTick() ?

 
Andrey Sokolov:

Salutations. MQL4. Je veux ajouter un jeu de serpent à mon EA.

Pouvez-vous nous dire s'il est possible de définir le nombre de secondes qui détermine la périodicité des événements OnTimer() comme étant inférieur à 1, par exemple 0,7 ?

Ou d'autres moyens d'implémenter l'exécution périodique d'une partie du code, mais de manière à ne pas retarder l'exécution dans OnTick() ?

https://docs.mql4.com/ru/eventfunctions/eventsetmillisecondtimer
EventSetMillisecondTimer - Работа с событиями - Справочник MQL4
EventSetMillisecondTimer - Работа с событиями - Справочник MQL4
  • docs.mql4.com
Указывает клиентскому терминалу, что для данного эксперта или индикатора необходимо генерировать события таймера с периодичностью менее одной секунды. нужно получать события таймера чаще, чем один раз в секунду. Если вам достаточно обычного таймера с периодом в несколько секунд, то используйте EventSetTimer(). Обычно эта функция должна...
 
 

Le code ci-dessous produit 牖漠摲牥⁳湩潦〉〮र〲थ⸰〰㠉┰〉〮र

C'est censé sortir le test de texte

Les fichiers se trouvent dans le dossier "Files".

La fonction dit que le handle est correct c'est 1 et immédiatement GetLastError dit erreur 5008 Wrong handle ....

Que dois-je faire ?

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   core();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

  }
//+------------------------------------------------------------------+
void core()
  {
   string value = "", name = "";

   name =  "Test" + "\\test.csv";
   Print(FileIsExist(name));

   ResetLastError();

   int m_hendle = -1;
   m_hendle = FileOpen(name, FILE_READ | FILE_WRITE | FILE_CSV);
   if(m_hendle != INVALID_HANDLE)
     {
      Print((string)m_hendle + "    " + name + " [" + (string)FileSize(m_hendle) + "]"+ (string)GetLastError());
       while(!FileIsEnding(m_hendle))
        {
         string sCurrent = FileReadString(m_hendle);
         Print("sCurrent = ", sCurrent);
        }
      FileClose(m_hendle);
     }
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

Le code ci-dessous produit 牖漠摲牥⁳湩潦〉〮र〲थ⸰〰㠉┰〉〮र

On dirait un "coronavirus"

 

Bonjour.... aidez-moi à convertir un conseiller mt5 en 4 s'il vous plaît. Je n'ai aucune envie ou besoin d'apprendre moi-même, si c'est compliqué, je comprendrai et j'oublierai, je n'ai pas besoin de beaucoup...

J'ai déjà demandé, mais mes commentaires portaient sur la façon d'apprendre, ou j'ai demandé des paramètres et un " expert du Graal". Tout en lisant les forums, il semblait que les gens vont aider ... ce qui est intéressant, si les gens demandent à faire quelque chose de pas cher, pour l'argent ... l'aide gratuite, et quand je suis juste demander de l'argent, ils pensent probablement quelqu'un qui veut utiliser les mains des étrangers et demander gratuitement ... avait l'argent ici et maintenant, aurait payé immédiatement et ne pas déranger, mais ils n'ont pas, et quand vous ne sera pas besoin ... plus facile à marquer, mais encore ... l'espoir meurt dernier.


Je peux payer plus tard, quand je l'aurai...

Dossiers :
Lift.mq5  9 kb
 
eKpuBu4:

Bonjour.... aidez-moi à convertir un conseiller mt5 en 4 s'il vous plaît. Je ne veux pas ou n'ai pas besoin de l'apprendre moi-même, si c'est compliqué, je comprendrai et j'oublierai, je n'ai pas besoin de beaucoup...

Où est le reste ?

Expert.mqh>

SignalTRIX.mqh>


SignalStoch.mqh>

TrailingFixedPips.mqh>

MoneyFixedRisk.mqh>

 
Bonjour. Je n'ai pas une grande connaissance de la programmation mql4.
input double   Lots=0.01;     //Lots size
input int      Tprof=1000;     //TakeProfit
input int      TreilSt=100;    //Trailing Stop
input int      TrStKor=10;     //The size of the correction Trailing Stop
input int      Magik=1001012;  //Magic Number
extern int Bars_left = 5;
extern int Bars_right = 5;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static double Upf,Lowf;
   double Tupf=0,Tlowf=0;
   int i,k;
   for(i=2; i<100; i++)
     {
      Tupf=iCustom(Symbol(),0,"takbir",Bars_left,Bars_right,0,i);
      if(Tupf>0)
         break;
     }
   for(k=2; k<100; k++)
     {
      Tlowf=iCustom(Symbol(),0,"takbir",Bars_left,Bars_right,1,k);
      if(Tlowf>0)
         break;
     }
//----Open position
//if(i>0) Print("i = ", i, " k = ",k);
   int total=OrdersTotal();
/*if(total<1)
      {*/
    
   if(Ask>Tupf+15*_Point && Tupf!=Upf)
     {
      double StL=NormalizeDouble(Tlowf,_Digits);
      int ticket=OrderSend(NULL,OP_BUY,Lots,Ask,30,StL,Bid+Tprof*_Point,NULL,Magik,0,clrBlue);
      if(ticket<0)
        {
         Print("OrderSend error #",GetLastError());
        }
      else {Print("Ask=",Ask,"Upf=",Upf," StL=",StL); Upf=Tupf;}
     }
   if(Bid<Tlowf-15*_Point && Tlowf!=Lowf)
     {
      double StL=NormalizeDouble(Tupf,_Digits);
      int ticket=OrderSend(NULL,OP_SELL,Lots,Bid,30,StL,Ask-Tprof*_Point,NULL,Magik,0,clrRed);
      if(ticket<0)
        {
         Print("OrderSend error #",GetLastError());
        }
      else {Print("Bid=",Bid,"Lowf=",Lowf," StL=",StL);   Lowf=Tlowf;}
     }
// }
//----Trailing Stop operation
   for(int cni=0;cni<total;cni++)
     {
      if(!OrderSelect(cni,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderMagicNumber()==Magik && TreilSt>0)
        {
         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>_Point*TreilSt)
              {
               if(OrderStopLoss()<Bid-_Point*TreilSt-TrStKor*_Point)
                 {
                  //--- modify order and exit
                  if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-_Point*TreilSt,OrderTakeProfit(),0,clrBlue))
                     Print("OrderModify error ",GetLastError());
                  return;
                 }
              }
           }
         if(OrderType()==OP_SELL)
           {
            if((OrderOpenPrice()-Ask)>_Point*TreilSt)
              {
               if(OrderStopLoss()>Ask+_Point*TreilSt+_Point*TrStKor)
                 {
                  //--- modify order and exit
                  if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TreilSt,OrderTakeProfit(),0,clrRed))
                     Print("OrderModify error ",GetLastError());
                  return;
                 }
              }
           }
        }
     }
  }

Mais je n'arrive pas à trouver comment réparer ce qui suit :

double StL=NormalizeDouble(Tupf,_Digits);

Le stop loss est fixé au "top fractal" précédent.

Il devrait l'être :

Si la dernière fractale inférieure est cassée - le stop loss est fixé auprix maximum entre la fractale inférieure et la cassure.

Si la dernière fractale supérieure est franchie - le stop loss est fixé au prix minimum entre la fractale supérieure et le franchissement.

J'essaie de définir le moment de la formation de la fractale à l'aide de itime et de définir l'index, mais je ne sais pas comment atteindre le moment actuel et rechercher à partir du moment actuel jusqu'à la fractale, en passant par les barres à chaque fois, jusqu'à ce que l'ordre soit ouvert.

Peut-être devrions-nous le chercher pendant l'ouverture des commandes ? Et par la modification de l'ordre de changer le stop et le ndp, mais comment, je ne peux pas comprendre.

Je ne sais pas comment faire. Chers professionnels, pouvez-vous consacrer 5 minutes de votre temps ?

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
 
v0van1990:
Aidez-moi, s'il vous plaît. Professionnels respectés, prenez cinq minutes de votre temps.

Vous devez le réparer ici

     {
      Tupf=iCustom(Symbol(),0,"takbir",Bars_left,Bars_right,0,i);
      if(Tupf>0)
         break;
     }
 
MakarFX:

Vous devez corriger ici.

Cette fonction me donne des informations sur les fractales non standard formées en dernier lieu, et je change ces fractales non standard au début de l'EA.

Ou, dois-je ajouter une autre fonction à l'indicateur - l'information sur le haut ou le bas avant la pénétration de la dernière fractale ou lorsqu'une nouvelle fractale est formée ?

Est-ce que je comprends bien ?