Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1477

 
Vasiliy Pushkaryov #:

zeigt 6201 Balkeninformationen an

Was steht da drauf?

printf((string)TerminalInfoInteger(TERMINAL_MAXBARS));
Wahrscheinlich ist die Geschichte eher für den Tester, damit die Indikatoren darin richtig berechnet werden
 
MrBrooklin #:

Unter Berücksichtigung der Hinweise der Forumsmitglieder, für die es ein großes DANKESCHÖN gibt, haben wir diese Version des Skripts erhalten:

Mit freundlichen Grüßen, Vladimir.

Ich habe einen sehr wichtigen Punkt im Skript völlig übersehen. Es war notwendig, die Partie zu normalisieren. Hier ist die korrigierte Version:

//+------------------------------------------------------------------+
//|                            Lot_Size_Depending_On_Risk_And_SL.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
input uint Risk=6;         // Размер риска (> 0, но не более 100 %)
input uint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot_Size_Depending_On_Risk_And_SL()
  {
//--- блок проверки входных параметров на корректность
   if(Risk==0 || Risk>100 || Stop_Loss==0)
     {
      Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
      return(0.0);
     }
//--- блок определения размера лота
   double trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
                                   SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
   double lot=NormalizeDouble((AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/
                              (Stop_Loss*trading_account_currency),2);
//--- блок проверки размера лота на минимум и максимум от возможного
   double min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   if(lot<min_volume)
      lot=min_volume;
   if(lot>max_volume)
      lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделки
   double step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   int ratio=(int)MathRound(lot/step_volume);
   if(MathAbs(ratio*step_volume-lot)>0.0000001)
      lot=ratio*step_volume;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
  }
//+------------------------------------------------------------------+

Mit freundlichen Grüßen, Vladimir.

 
Guten Tag!
Nachdem ich die Vorwärtstests desRoboters abgeschlossen habe, bin ich auf ein hartnäckiges Problem gestoßen: Wenn ich einen einzelnen Test mit dem besten Parametersatz starte, beginnt der Strategietester mit der Ausführung und scheint ihn bis zum Ende auszuführen (wenn man nach der Fortschrittsanzeige-Engine urteilt), bleibt dann aber hängen. Metatrader muss neu gestartet werden, und die Ergebnisse des Einzeltests (und des gesamten Vorwärtstests im Allgemeinen) sind verloren.
Warum bleibt der Tester hängen und wie kann das behoben werden?
Mit freundlichen Grüßen, Alexander
 
Experten, bitte sagen Sie mir: Wie kann man die Plattform so einstellen, dass die Historie des Handels nicht in allen Zeitrahmen angezeigt wird, sondern nur in einigen von ihnen?
Und was wir jetzt haben: Klicken Sie auf das Kontrollkästchen "Handelshistorie anzeigen" und die gesamte Historie (Pfeile nach oben und unten) auf dem Wochenchart sind bereits ein solider Zaun.
Und ich möchte eine Einstellung wie andere Werkzeuge (Trendlinien, Pfeile, etc.), deren Anzeige nicht in allen Zeitrahmen eingestellt werden kann.
 

Guten Tag. Können Sie mir sagen, wo ich das einfachste Beispiel eines Expert Advisors sehen kann, der auf dem Schnittpunkt zweier MAs basiert (Sie können eine Lektion geben).
Ich weiß, wie ich einen hinzufügen kann. Ich möchte nicht ein einfaches Copy-Paste machen und den Code verlängern, ich weiß, dass es andere Methoden gibt.
Wenn ich in MQL4 keine Fragen hatte, kann ich in MQL5 nicht ganz verstehen, wie man es macht.

 
makssub Beispiel eines Expert Advisors sehen kann, der auf dem Schnittpunkt zweier MAs basiert (Sie können eine Lektion geben).
Ich weiß, wie ich einen hinzufügen kann. Ich möchte nicht ein einfaches Copy-Paste machen und den Code verlängern, ich weiß, dass es andere Methoden gibt.
Wenn ich in MQL4 keine Fragen hatte, kann ich in MQL5 nicht ganz verstehen, wie man es macht.

Hallo. Öffnen Sie MetaEDitor 5. Er hat einen eingebauten (Standard-)Expert Advisor, der auf dem Schnittpunkt zweier MAs basiert. Öffnen Sie den Code und studieren Sie ihn. Oder suchen Sie ihn in CodeBase. Hier ist zum Beispiel der erste EA, der auf dem Schnittpunkt von zwei MAs basiert.

Mit freundlichen Grüßen, Vladimir.


 
MrBrooklin #:

Hallo. Öffnen Sie MetaEDitor 5. Er hat einen eingebauten (Standard-)Expert Advisor, der auf der Schnittmenge zweier MAs basiert. Öffnen Sie den Code und studieren Sie ihn. Oder suchen Sie in CodeBase. Hier ist zum Beispiel der erste EA, der auf dem Schnittpunkt von zwei MAs basiert.

Mit freundlichen Grüßen, Vladimir.


Danke, ich habe es mir angesehen.

Ich verstehe, was in OnInit passiert.

Wie schraubt man das alles korrekt in OnTick?

 
makssub #:

Danke, ich habe es nachgeschlagen.

Bei OnInit verstehe ich ungefähr, was passiert.

Wie schraube ich es alle in OnTick?

Ich zeige hier nur eine Variante, einen Expert Advisor zu schreiben, aber es kann eine große Anzahl solcher Varianten geben. Es hängt alles von der Qualifikation des Programmierers ab. Die Struktur eines Expert Advisors kann wie folgt aussehen:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Input variables                                                  |
//+------------------------------------------------------------------+

// здесь размещаем входные параметры советника

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   // здесь деинициализируем то, что считаем нужным   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- абстрактный пример советника

   Check_Trading();           // проверим условия разрешающие торговлю
   Signal_Up();               // ищем сигнал для открытия длинной позиции
   Open_Buy_Position();       // открываем длинную позицию
   Close_Buy_Positions();     // закрываем длинную позицию
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Check_Trading()
  {

   // здесь вставляем условия разрешающие торговлю

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void  Signal_Up(); 
  {

   // здесь вставляем условия, при которых появляется сигнал на покупку

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Open_Buy_Position(); 
  {

   // здесь вставляем функцию открытия длинной позиции

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Close_Buy_Positions();
  {

   // здесь вставляем функцию закрытия длинной позиции

  }
//+------------------------------------------------------------------+

Etwa so. Ich betone noch einmal - dies ist keine Anleitung zum Schreiben von Expert Advisors, sondern eine ungefähre Struktur, an die ich mich beim Schreiben meiner Expert Advisors halte.

Mit freundlichen Grüßen, Vladimir.

 
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);

Ich weiß nicht, wie ich es schreiben soll

 
Лауреат #:

Ich weiß nicht, wie ich es schreiben soll

Was genau ist Ihnen nicht klar? Wie erstellt man eine EA-Initialisierungsfunktion? Dann versuchen Sie, diesen Artikel für Anfänger zu lesen.

Mit freundlichen Grüßen, Vladimir.

Grund der Beschwerde: