Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1091

 

Grüße. MQL4. Ich möchte ein Schlangenspiel zu meinem EA hinzufügen.

Können Sie bitte mitteilen, ob es möglich ist, die Anzahl der Sekunden, die die Periodizität der OnTimer()-Ereignisse bestimmt, auf weniger als 1, z. B. 0,7, einzustellen?

Oder auf andere Weise die periodische Ausführung eines Teils des Codes zu implementieren, aber so, dass es die Ausführung in OnTick() nicht verzögert?

 
Andrey Sokolov:

Grüße. MQL4. Ich möchte ein Schlangenspiel zu meinem EA hinzufügen.

Können Sie bitte mitteilen, ob es möglich ist, die Anzahl der Sekunden, die die Periodizität der OnTimer()-Ereignisse bestimmt, auf weniger als 1, z. B. 0,7, einzustellen?

Oder auf andere Weise die periodische Ausführung eines Teils des Codes zu implementieren, aber so, dass die Ausführung in OnTick() nicht verzögert wird?

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

Der folgende Code gibt 牖漠摲牥⁳湩潦〉〮र〲थ⸰〰㠉┰〉〮र aus.

Es soll den Text test ausgeben

Die Dateien befinden sich im Ordner Files\\\Test\\.

Funktion sagt, dass Handle korrekt ist, es ist 1 und sofort GetLastError sagt Fehler 5008 Wrong handle ....

Was sollte ich tun?

//+------------------------------------------------------------------+
//| 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:

Der folgende Code gibt 牖漠摲牥⁳湩潦〉〮र〲थ⸰〰㠉┰〉〮र aus.

Sieht aus wie "Coronavirus".

 

Hallo....helfen Sie mir bitte, einen mt5-Advisor in 4 zu konvertieren. Ich habe weder Lust noch das Bedürfnis, selbst zu lernen, wenn es kompliziert ist, verstehe ich es und vergesse es, ich brauche nicht viel...

Ich habe bereits gefragt, aber mein Feedback war über, wie zu lernen, oder ich fragte nach Einstellungen und "Gral Experte". Beim Lesen der Foren, schien es, dass die Menschen helfen ... was interessant ist, wenn die Leute fragen, etwas zu tun, nicht teuer, für Geld ... Hilfe kostenlos, und wenn ich nur um Geld bitten, sie wahrscheinlich denken, jemand, der Fremde Hände benutzen will und fragen Sie kostenlos ... hatte das Geld hier und jetzt, würde sofort bezahlt haben und nicht stören, aber sie tun es nicht, und wenn Sie nicht brauchen ... leichter zu punkten, aber immer noch ... die Hoffnung stirbt zuletzt.


Ich kann später bezahlen, wenn ich es habe...

Dateien:
Lift.mq5  9 kb
 
eKpuBu4:

Hallo....helfen Sie mir bitte, einen mt5-Advisor in 4 zu konvertieren. Ich will oder muss es nicht selbst lernen, wenn es kompliziert ist, werde ich es verstehen und vergessen, ich brauche nicht viel...

Wo ist der Rest?

Experte.mqh>

SignalTRIX.mqh>


SignalStoch.mqh>

TrailingFixedPips.mqh>

GeldFestesRisiko.mqh>

 
Hallo. Ich habe keine großen Kenntnisse in der mql4-Programmierung.
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;
                 }
              }
           }
        }
     }
  }

Aber ich kann nicht herausfinden, wie ich das folgende Problem lösen kann:

double StL=NormalizeDouble(Tupf,_Digits);

Der Stop-Loss wird auf das vorherige "Top-Fraktal" gesetzt.

So sollte es sein:

Wenn das letzte untere Fraktal durchbrochen wird, wird der Stop-Loss aufden maximalen Preis zwischen dem unteren Fraktal und dem Durchbruch gesetzt.

Wenn das letzte obere Fraktal durchbrochen wird, wird der Stop Loss auf den Mindestpreis zwischen dem oberen Fraktal und dem Ausbruch gesetzt.

Ich versuche, die Zeit der Fraktalbildung mit itime einzustellen und den Index zu definieren, aber ich weiß nicht, wie ich die aktuelle Zeit erreichen und von der aktuellen Zeit bis zum Fraktal suchen kann, indem ich jedes Mal durch die Balken gehe, bis der Auftrag geöffnet wird.

Vielleicht sollten wir bei der Auftragseröffnung darauf achten? Und durch die Änderung der Reihenfolge zu ändern, die Haltestelle und ndp, aber wie, kann ich nicht verstehen.

Ich weiß nicht, wie ich es machen soll und möchte um Hilfe bitten. Liebe Fachleute, können Sie 5 Minuten Ihrer Zeit erübrigen?

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
 
v0van1990:
Bitte um Hilfe. Geschätzte Profis, nehmen Sie sich fünf Minuten Zeit.

Sie müssen es hier reparieren

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

Hier müssen Sie korrigieren.

Diese Funktion gibt mir Informationen über die zuletzt gebildeten Nicht-Standard-Fraktale, und ich ändere diese Nicht-Standard-Fraktale zu Beginn des EA.

Oder sollte ich dem Indikator eine weitere Funktion hinzufügen - Informationen über das Hoch oder Tief, bevor das letzte Fraktal durchbrochen wird oder wenn ein neues Fraktal gebildet wird?

Verstehe ich das richtig?

Grund der Beschwerde: