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

 
Hallo, könnten Sie mir bitte sagen, wie man das macht? Wie schreibe ich die Bedingung richtig? *wenn es eine neue Stunde gibt*?
 
MrBrooklin:

Hallo!

Helfen Sie mir auf die Sprünge. Ich habe eine Frage zu dem Handelssignalmodul "Zeitfilter".

Die Sache ist, ich habe einen EA mit diesem Modul erstellt und ihn so eingestellt, dass er nur eine Stunde Handel pro Tag zulässt. Hauptsächlich wird auf diese Weise gehandelt, aber es gibt Tage, an denen mein Expert Advisor Positionen zu jeder beliebigen Uhrzeit eröffnet. Ich habe das Handelssignalmodul "Zeitfilter" in verschiedenen Kombinationen mit anderen Handelssignalmodulen (z.B. Stochastik, WPR, etc.) ausprobiert, aber es passiert immer das Gleiche. Außerdem gibt es keine Probleme, wenn Sie 2 aufeinanderfolgende Arbeitsstunden einstellen, es funktioniert einwandfrei.

Womit kann sie in Verbindung gebracht werden? Liegt vielleicht ein Fehler im Code des Handelssignalmoduls "Zeitfilter" vor? Da ich kein Programmierungsexperte bin, bitte ich Sie, mir dabei zu helfen oder mir einen Tipp zu geben, vielleicht mache ich etwas falsch.

Mit freundlichen Grüßen, Vladimir.


Hier ist ein einfaches Beispiel auf dem Bild. An einem Tag öffnet sie um 7 Uhr, an einem anderen Tag um 5 Uhr und am dritten Tag wieder um 7 Uhr.


Können Sie einen mq5 Expert Advisor an diesen Beitrag anhängen und die Parameter des Testers angeben (zwei Screenshots: Registerkarten Einstellungen und Parameter)?

 
Snajper007:
Hallo, könnten Sie mir bitte sagen. Wie schreibe ich die Bedingung richtig? *wenn es eine neue Stunde gibt*?

Meinen Sie die Uhrzeit (z. B. die Uhr zeigte 15-00) oder meinen Sie, dass ein neuer Balken auf dem H1-Zeitrahmen entstanden ist?

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.14 12:04

Können Sie einen mq5 Expert Advisor an eine Nachricht anhängen und die Parameter des Testers angeben (zwei Screenshots: Registerkarten Einstellungen und Parameter)?


Nicht unbegründet, zum Beispiel, gerade jetzt habe ich in MQL5 Wizard das erste verfügbare Modul von AMA Handelssignalen und einem Zeitfilter generiert.

//+------------------------------------------------------------------+
//|                                                          AMA.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalAMA.mqh>
#include <Expert\Signal\SignalITF.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title            ="AMA";                  // Document name
ulong                    Expert_MagicNumber      =8503;                   //
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;                      // 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_AMA_PeriodMA     =10;                     // Adaptive Moving Average(1,1,...) Period of averaging
input int                Signal_AMA_PeriodFast   =2;                      // Adaptive Moving Average(1,1,...) Period of fast EMA
input int                Signal_AMA_PeriodSlow   =30;                     // Adaptive Moving Average(1,1,...) Period of slow EMA
input int                Signal_AMA_Shift        =0;                      // Adaptive Moving Average(1,1,...) Time shift
input ENUM_APPLIED_PRICE Signal_AMA_Applied      =PRICE_CLOSE;            // Adaptive Moving Average(1,1,...) Prices series
input double             Signal_AMA_Weight       =1.0;                    // Adaptive Moving Average(1,1,...) Weight [0...1.0]
input int                Signal_ITF_GoodHourOfDay=-1;                     // IntradayTimeFilter(-1,...) Good hour
input int                Signal_ITF_BadHoursOfDay=16777087;               // IntradayTimeFilter(-1,...) Bad hours (bit-map)
input int                Signal_ITF_GoodDayOfWeek=-1;                     // IntradayTimeFilter(-1,...) Good day of week
input int                Signal_ITF_BadDaysOfWeek=0;                      // IntradayTimeFilter(-1,...) Bad days of week (bit-map)
input double             Signal_ITF_Weight       =1.0;                    // IntradayTimeFilter(-1,...) 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 CSignalAMA
   CSignalAMA *filter0=new CSignalAMA;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodMA(Signal_AMA_PeriodMA);
   filter0.PeriodFast(Signal_AMA_PeriodFast);
   filter0.PeriodSlow(Signal_AMA_PeriodSlow);
   filter0.Shift(Signal_AMA_Shift);
   filter0.Applied(Signal_AMA_Applied);
   filter0.Weight(Signal_AMA_Weight);
//--- Creating filter CSignalITF
   CSignalITF *filter1=new CSignalITF;
   if(filter1==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter1");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter1);
//--- Set filter parameters
   filter1.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
   filter1.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
   filter1.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
   filter1.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
   filter1.Weight(Signal_ITF_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();
  }
//+------------------------------------------------------------------+

Screenshot von "Einstellungen"


Screenshot von "Einstellungen".

Screenshot derfalschen des Zeitfilters (Positionen werden an verschiedenen Tagen um 7, 12 und 7 Uhr geöffnet)


 
MrBrooklin:

Um nicht unbegründet zu sein, habe ich zum Beispiel gerade jetzt in MQL5 Wizard das erste verfügbare Modul von AMA-Handelssignalen und einen Zeitfilter generiert.

Screenshot von "Einstellungen"


Screenshot von "Einstellungen".

Screenshot der fehlerhaften Bedienung des Zeitfilters (Öffnungspositionen an verschiedenen Tagen um 7, 12 und 7 Uhr)


1. Bild mit Diagramm - wenn Sie einen Screenshot machen, tun Sie es mit dem Werkzeug "Fadenkreuz" - es ist unklar, welches Jahr es ist.

2. Bei der Arbeit mit den schwebenden Aufträgen ist zu beachten, dass der schwebende Auftrag zu einem völlig anderen Zeitpunkt (Stunde und Minuten) ausgelöst werden kann als der Zeitpunkt der Einstellung.

3. Wenn Sie Signalmodule verwenden, setzen Sie die Parameter auf die Standardwerte zurück und überprüfen Sie die Arbeit auf dem Markt - ohne ausstehende Aufträge (wenn Punkt 2 nicht klar ist).

 

Forum für Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.14 13:28

1. Diagrammabbildung - wenn Sie einen Screenshot machen, tun Sie es zusammen mit dem "Fadenkreuz"-Werkzeug - sonst ist es nicht klar, welches Jahr.

2. Wenn Sie mit schwebenden Aufträgen arbeiten, denken Sie daran, dass ein schwebender Auftrag zu einem völlig anderen Zeitpunkt (Stunde und Minuten) ausgelöst werden kann als zum Zeitpunkt der Auftragserteilung.

3. Wenn Sie Signalmodule verwenden, setzen Sie die Parameter auf die Standardwerte zurück und überprüfen Sie die Arbeit auf dem Markt - ohne die schwebenden Aufträge (dies ist der Fall, wenn Punkt 2 nicht klar ist).


1. Zum Fadenkreuz - verständlich. Auf dem Screenshot ist das Jahr 2019 und der Monat Oktober zu sehen.

2. Ich verstehe nicht ganz, was es mit der ausstehenden Bestellung auf sich hat. Woher wissen Sie, dass der EA einen schwebenden Auftrag hat und nicht zu Beginn der Stunde eine Position eröffnet? Können Sie das genauer erläutern?

3. Der Expert Advisor funktioniert problemlos mit den Standardwerten der Signalmodule. Können wir die Parameterwerte ändern?

Mit freundlichen Grüßen, Vladimir.

 

***

1. Was das Fadenkreuz betrifft, so ist es eindeutig. Auf dem Screenshot ist das Jahr 2019 und der Monat Oktober zu sehen.

***

Danke für die Klarstellung.

***

2. Ich verstehe nicht ganz, was es mit der ausstehenden Bestellung auf sich hat. Wie haben Sie festgestellt, dass der EA eine Pending Order gesetzt hat und nicht sofort zu Beginn der Stunde eine Position eröffnet? Können Sie das genauer erläutern?

***

Schauen Sie sich im visuellen Tester einfach die Registerkarte "Verlauf" an

Registerkarte "Geschichte

***

3. Mit den Standardwerten der Signalmodule funktioniert der Expert Advisor einwandfrei. Ist es nicht möglich, die Werte der Parameter zu ändern?

***

Natürlich können Sie das, aber nur, wenn Sie verstehen, was Sie tun, und wenn Sie wissen, welcher Parameter für was verantwortlich ist.

 
Vladimir Karputov:

Meinen Sie die Uhrzeit (z. B. die Uhr zeigte 15-00) oder meinen Sie, dass ein neuer Balken auf dem H1-Zeitrahmen entstanden ist?

Ich meine, die Uhr zeigte 15-00.
 
Snajper007:
Ich meine, die Uhr zeigte 15-00.

Und mit welchem Grad an Sicherheit wollen Sie das Ergebnis?

Nur ein Beispiel: Sie möchten, dass die Uhrzeit auf der Uhr mit 15 Uhr angegeben wird. Und du wartest auf sie. Aber zu diesem Zeitpunkt gab es kein Häkchen oder keine Verbindung zum Server. Und dann haben Sie die Ticks, aber die Zeit ist 15 Stunden 00 Minuten und 36 Sekunden. Was werden Sie tun?

 
Vladimir Karputov:

Und mit welchem Grad an Sicherheit wollen Sie das Ergebnis?

Nur ein Beispiel: Sie möchten, dass die Uhrzeit auf der Uhr mit 15 Uhr angegeben wird. Und du wartest auf sie. Aber zu diesem Zeitpunkt gab es kein Häkchen oder keine Verbindung zum Server. Und dann haben Sie die Ticks, aber die Zeit ist 15 Stunden 00 Minuten und 36 Sekunden. Was werden Sie tun?

Können Sie es möglich machen, nicht genau 15-00, sondern den Beginn der Stunde zu überprüfen? Mit anderen Worten, die erste Minute würde bereits anzeigen, dass die vorherige Stunde beendet war und die neue Stunde begonnen hatte.
Grund der Beschwerde: