Diskussion über die Einführung von Ratsmitgliedern. - Seite 5

 
Ivan_Invanov:
Hier habe ich die Syntax der Sprache gelernt. Ich lerne gerade den Konstruktor als Beispiel. Ich sehe einen Klassenbesuch. Von hier aus ist die Logik für mich abgeschnitten. Was sollte ich tun? Suchen Sie nach Artikeln? Ist es besser, mit Standardmitteln zu implementieren oder meine eigenen Klassen zu schreiben?
Ich finde einen Artikel zur Klärung des Konstruktors. Zum Beispiel erklären, wie ein Signalblock funktioniert. Und ein paar trockene Phrasen wie "Ja, dieser Parameter ist festgelegt". Und es gibt nichts, was daran etwas ändern könnte. Ich habe solche Fragen, wenn ich den Parameter nicht brauche, kann ich ihn einfach löschen? er ist in der Initialisierung, auch dort löschen? Wie kann ich weitere Parameter hinzufügen und wie? Wenn ich ein Beispiel für eine Veränderung sehen würde, könnte ich es herausfinden. Ich denke, es ist ein reines Bezugsproblem. Nicht genug Details, nicht genug Beispiele, nicht genug Verallgemeinerungen für eine systematische Wahrnehmung. Vielleicht bin ich sehr unverblümt, ich weiß es nicht. Ich frage mich, ob das nur an mir liegt? Oder müssen vielleicht die Schulungshandbücher verbessert werden? Ich bin bereit, persönlich Geld für ein Beispiel zu bezahlen.
 
Ivan_Invanov:

MQL5 - Dies ist die Ressource mit der ausführlichsten Beschreibung der Dokumentation. Es gibt eine riesige Menge an Informationen in den Artikeln, im Forum und in KodoBase. Nirgendwo sonst auf der Welt finden Sie eine so detaillierte Beschreibung.

Alles, was Sie brauchen, ist der Wille, das alles zu verstehen.

 
Vladimir Karputov:

MQL5 - Dies ist die Ressource mit der ausführlichsten Beschreibung der Dokumentation. In den Artikeln, im Forum und in der KodoBase gibt es eine Fülle von Informationen. Sie werden nirgendwo sonst eine so ausführliche Erklärung finden.

Man muss nur den Willen haben, das alles zu begreifen.

Ich habe eine konkrete Frage. Wir haben CExpertSignal mit der Funktion AddFilter. Wir haben dort zum Beispiel einen Brotaufstrich. Wie mache ich es, wenn ich das Beispiel nicht sehen kann? Was genau soll ich tun? Nun, ich werde jetzt versuchen, es zu erraten.

CExpert ExtExpert;
ExtExpert.InitSignal(signal);
signal.AddFilter(filter0);
filer0.Spread(20);

Kompilierung ohne Fehler. Habe ich es richtig geschrieben? Jetzt werden die Geschäfte nicht abgeschlossen, wenn die Spanne 20? Und was sollte ich in einem solchen Fall tun? Was kann man lesen?

 
Ivan_Invanov:

Ich habe eine konkrete Frage. Es gibt ein CExpertSignal mit AddFilter darin, aber die Hilfe sagt nichts über AddFilter-Funktionen. Zum Beispiel gibt es eine Spanne. Wie schreibe ich es, wenn ich das Beispiel nicht sehen kann? Was genau soll ich tun? Nun, ich werde jetzt versuchen, es zu erraten.

Kompilierung ohne Fehler. Habe ich es richtig geschrieben? Jetzt werden die Geschäfte nicht abgeschlossen, wenn die Spanne 20? Und was sollte ich in einem solchen Fall tun? Was sollte ich lesen?

Lesen:MQL4/MQL5-Assistent

Zuweisung:

  • So erstellen Sie einen einfachen Expert Advisor mit dem Assistenten
  • im MetaEditor den resultierenden Code öffnen
Danach stellen Sie Fragen.
Мастер MQL4/MQL5 - Справка по MetaEditor
Мастер MQL4/MQL5 - Справка по MetaEditor
  • www.metatrader5.com
Благодаря Мастеру MQL4/MQL5, трейдер может создать советника, не обладая знаниями в области программирования. Все что нужно сделать — это выбрать торговые сигналы, которые будет использовать советник, алгоритм мани-менеджмента и трейлинг-стопа. Код советника будет сгенерирован автоматически на основе выбранных параметров. Помимо этого, Мастер...
 
Ivan_Invanov:

Ich habe eine konkrete Frage. Es gibt ein CExpertSignal mit AddFilter darin, aber die Hilfe sagt nichts über AddFilter-Funktionen. Zum Beispiel gibt es eine Spanne. Wie schreibe ich es, wenn ich das Beispiel nicht sehen kann? Was genau soll ich tun? Nun, ich werde jetzt versuchen, es zu erraten.

Kompilierung ohne Fehler. Habe ich es richtig geschrieben? Jetzt werden die Geschäfte nicht abgeschlossen, wenn die Spanne 20? Und was sollte ich in einem solchen Fall tun? Was sollte ich lesen?

Ich habe den Eindruck, dass hier versucht wird, ohne Grundkenntnisse sofort mit dem Schreiben von Themen für Erwachsene zu beginnen. So funktioniert das nicht. Zuerst lernen sie das Alphabet, dann lernen sie, in Druckbuchstaben zu schreiben, und nach und nach kommen sie zu Aufsätzen, und dann braucht man Talent. Es ist also dasselbe, wenn man ohne Grundkenntnisse versucht, automatisch generierten Code zu verstehen... Nicht die beste Art, den Kopf gegen die Wand zu schlagen.

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalMA.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title         ="1";         // Document name
ulong                    Expert_MagicNumber   =15825;       //
bool                     Expert_EveryTick     =false;       //
//--- inputs for main signal
input int                Signal_ThresholdOpen =10;          // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose=10;          // Signal threshold value to close [0...100]
input double             Signal_PriceLevel    =0.0;         // Price level to execute a deal
input double             Signal_StopLevel     =50.0;        // Stop Loss level (in points)
input double             Signal_TakeLevel     =50.0;        // Take Profit level (in points)
input int                Signal_Expiration    =4;           // Expiration of pending orders (in bars)
input int                Signal_MA_PeriodMA   =12;          // Moving Average(12,0,...) Period of averaging
input int                Signal_MA_Shift      =0;           // Moving Average(12,0,...) Time shift
input ENUM_MA_METHOD     Signal_MA_Method     =MODE_SMA;    // Moving Average(12,0,...) Method of averaging
input ENUM_APPLIED_PRICE Signal_MA_Applied    =PRICE_CLOSE; // Moving Average(12,0,...) Prices series
input double             Signal_MA_Weight     =1.0;         // Moving Average(12,0,...) Weight [0...1.0]
//--- inputs for money
input double             Money_FixRisk_Percent=10.0;        // Risk percentage
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalMA
   CSignalMA *filter0=new CSignalMA;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodMA(Signal_MA_PeriodMA);
   filter0.Shift(Signal_MA_Shift);
   filter0.Method(Signal_MA_Method);
   filter0.Applied(Signal_MA_Applied);
   filter0.Weight(Signal_MA_Weight);
//--- Creation of trailing object
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedRisk *money=new CMoneyFixedRisk;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+
Hallo. Könnten Sie mir bitte sagen, welches Markteintrittssignal dieser EA hat und wo es sich im Code befindet?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Das Markteintrittssignal befindet sich im "Filter", richtig?
 
Warum unterschiedliche Klassendeklarationen? Warum manchmal gestapelter Speicher und manchmal nicht? Mit und ohne Sternchen?
 
Ich brauche einen Spreizfilter und würde gerne verstehen, was hier gemacht wird. Habe ich richtig verstanden, dass die Strategie hier ist, dass, wenn der Preis um eine beliebige Zahl aus dem Durchschnitt höher ist, dann ein Handel gemacht wird?
 
Ivan_Invanov:
Hallo. Können Sie mir bitte sagen, was das Markteintrittssignal dieses EA ist und wo es sich im Code befindet?

Um solche Probleme zu lösen, müssen Sie einen Debugger verwenden.

Wenn ein Tick kommt, wird die Funktion OnTick() aufgerufen. Hier findet die gesamte Verarbeitung statt, die Signale werden bei Bedarf identifiziert, und es werden bei Bedarf Handelsaktionen durchgeführt.

Wie Sie sehen können, wird in dieser Funktion der ExtExpert. Alles geschieht innerhalb dieser Funktion, es gibt nichts anderes im Code.

Dementsprechend setzen Sie einen Haltepunkt an dieser Stelle und führen den Expert Advisor im Debugger aus. Sobald der erste Tick kommt, wird der Haltepunkt ausgelöst und Sie halten den Code an dieser Stelle an. Und dann geht man Schritt für Schritt durch den Code und findet heraus, warum welche Aktionen ausgeführt werden.