Ich habe einen einfachen Expert Advisor mit VQL5 Wizard erstellt, der Code ist unten. Bitte helfen Sie mir, herauszufinden, warum die Funktion "Verfall von schwebenden Aufträgen (in Bars)" nicht funktioniert. Ich habe beliebige Signal_Expiration-Werte von 1 bis 1000 eingestellt, aber die Pending-Order existiert immer noch nur innerhalb eines Balkens. Ich füge auch Parametereinstellungen bei.
Zum Testen verwende ich ein Demokonto im Metatrader 5 Terminal, Build 2136.
Mit freundlichen Grüßen, Vladimir.
//+------------------------------------------------------------------+//| EA_MasterMQL5.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\SignalITF.mqh>
//--- available trailing#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+//| Inputs |//+------------------------------------------------------------------+//--- inputs for expertinputstring Expert_Title ="EA_MB_MasterMQL5"; // Document nameulong Expert_MagicNumber =1473; //bool Expert_EveryTick =false; ////--- inputs for main signalinputint Signal_ThresholdOpen =0; // Signal threshold value to open [0...100]inputint Signal_ThresholdClose =0; // Signal threshold value to close [0...100]inputdouble Signal_PriceLevel =0.0; // Price level to execute a dealinputdouble Signal_StopLevel =50.0; // Stop Loss level (in points)inputdouble Signal_TakeLevel =50.0; // Take Profit level (in points)inputint Signal_Expiration =4; // Expiration of pending orders (in bars)inputint Signal_ITF_GoodHourOfDay=-1; // IntradayTimeFilter(-1,...) Good hourinputint Signal_ITF_BadHoursOfDay=8389119; // IntradayTimeFilter(-1,...) Bad hours (bit-map)inputint Signal_ITF_GoodDayOfWeek=-1; // IntradayTimeFilter(-1,...) Good day of weekinputint Signal_ITF_BadDaysOfWeek=0; // IntradayTimeFilter(-1,...) Bad days of week (bit-map)inputdouble Signal_ITF_Weight =1.0; // IntradayTimeFilter(-1,...) Weight [0...1.0]//--- inputs for moneyinputdouble Money_FixRisk_Percent =10.0; // Risk percentage//+------------------------------------------------------------------+//| Global expert object |//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+//| Initialization function of the expert |//+------------------------------------------------------------------+intOnInit()
{
//--- Initializing expertif(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
{
//--- failedprintf(__FUNCTION__+": error initializing expert");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Creating signal
CExpertSignal *signal=new CExpertSignal;
if(signal==NULL)
{
//--- failedprintf(__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 CSignalITF
CSignalITF *filter0=new CSignalITF;
if(filter0==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating filter0");
ExtExpert.Deinit();
return(INIT_FAILED);
}
signal.AddFilter(filter0);
//--- Set filter parameters
filter0.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
filter0.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
filter0.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
filter0.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
filter0.Weight(Signal_ITF_Weight);
//--- Creation of trailing object
CTrailingNone *trailing=new CTrailingNone;
if(trailing==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating trailing");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add trailing to expert (will be deleted automatically))if(!ExtExpert.InitTrailing(trailing))
{
//--- failedprintf(__FUNCTION__+": error initializing trailing");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Set trailing parameters//--- Creation of money object
CMoneyFixedRisk *money=new CMoneyFixedRisk;
if(money==NULL)
{
//--- failedprintf(__FUNCTION__+": error creating money");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Add money to expert (will be deleted automatically))if(!ExtExpert.InitMoney(money))
{
//--- failedprintf(__FUNCTION__+": error initializing money");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Set money parameters
money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parametersif(!ExtExpert.ValidationSettings())
{
//--- failed
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- Tuning of all necessary indicatorsif(!ExtExpert.InitIndicators())
{
//--- failedprintf(__FUNCTION__+": error initializing indicators");
ExtExpert.Deinit();
return(INIT_FAILED);
}
//--- okreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Deinitialization function of the expert |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
ExtExpert.Deinit();
}
//+------------------------------------------------------------------+//| "Tick" event handler function |//+------------------------------------------------------------------+voidOnTick()
{
ExtExpert.OnTick();
}
//+------------------------------------------------------------------+//| "Trade" event handler function |//+------------------------------------------------------------------+voidOnTrade()
{
ExtExpert.OnTrade();
}
//+------------------------------------------------------------------+//| "Timer" event handler function |//+------------------------------------------------------------------+voidOnTimer()
{
ExtExpert.OnTimer();
}
//+------------------------------------------------------------------+
Wird es für Entwickler anstelle von OrderCloseTime()? funktionieren?
Meine Erfahrung mit MQL5 ist der vierte Tag, aber ich habe schon die Nase voll!
Bringen Sie die OrderCloseTime() Funktion zurück, diese Position kann irgendwie programmatisch gemacht werden.... - Auftrag - dann Handel - dann Position, oder ist es so schwer, die Position maschinell zu berechnen?
Beobachten Sie unnatürliches Verhalten des Bahnsteigs.
1. Die ME5 behält nicht die Schnittstelleneinstellungen bei, die beim Ausschalten vorhanden waren. Insbesondere verschwindet das Einstellungsfeld. Kann wiederhergestellt werden, muss aber bei jedem Einschalten erneut durchgeführt werden.
2. Ich mache einen Indikator. Die Änderung der Indikatoreinstellungen im MT5 führt in der Regel zu einem Fehler: Die Form der Linien ändert sich erheblich, die Farbe kann nicht geändert werden usw. Und wenn Sie die Einstellungen in einem neu installierten Indikator ändern, funktioniert alles wie geplant.
Probleme:
1. Liegt es nur an mir oder ist es ein allgemeines Problem? 2. Wenn ich etwas übersehen oder falsch gemacht habe, bitte ich um einen Rat.
Wenn es nicht zu viel Mühe ist, korrigieren Sie bitte den MQL4-Code, damit er in ML5 funktioniert.
Zunächst einmal müssen Sie die Systemfunktionen richtig schreiben. Am einfachsten geht das in MetaEditor 5 über das Menü Datei - Erstellen - Expert Advisor (Vorlage). Vergleichen Sie Ihren Code mit meinem:
Wird es für Entwickler anstelle von OrderCloseTime()? funktionieren?
Meine Erfahrung mit MQL5 ist der vierte Tag, aber ich habe schon die Nase voll!
Bringen Sie die OrderCloseTime() Funktion zurück, diese Position kann irgendwie programmatisch gemacht werden.... - Auftrag - dann Handel - dann Position, oder ist es so schwierig, die Position maschinell zu berechnen?
Was genau wollen Sie bekommen? Benötigen Sie den Zeitpunkt des letzten Handels(Art des Handels "Marktaustritt")? Oder möchten Sie den Schlusszeitpunkt einer Position in der Handelshistorie erfahren?
Beobachten Sie das unnatürliche Verhalten der Plattform.
1. Die ME5 behält nicht die Schnittstelleneinstellungen bei, die beim Ausschalten vorhanden waren. Insbesondere verschwindet das Einstellungsfeld. Sie kann wiederhergestellt werden, aber das muss bei jedem Einschalten geschehen.
Das Einstellungsfeld ist mein Vorbehalt. Ich meine die Symbolleiste mit den Schaltflächen, einschließlich Compile. (Ich sagte "Einstellungen" aus Trägheit - ich bin es mit MT5, der auch mit dem Indikator-Einstellungsfeld zu kämpfen hat)
Das Einstellungsfeld ist mein Vorbehalt. Ich meine die Symbolleiste, die Schaltflächen wie Compile enthält. (Ich sagte "Einstellungen" aus Trägheit - ich bin es mit MT5, der sich auch mit dem Einstellungsfeld der Indikatorparameter beschäftigt)
Build 2138 vom 06.09.2019.
Bitte geben Sie an, bei welchem Gerät dies der Fall ist:
Guten Tag allerseits und tolle Gewinne!
Ich habe einen einfachen Expert Advisor mit VQL5 Wizard erstellt, der Code ist unten. Bitte helfen Sie mir, herauszufinden, warum die Funktion "Verfall von schwebenden Aufträgen (in Bars)" nicht funktioniert. Ich habe beliebige Signal_Expiration-Werte von 1 bis 1000 eingestellt, aber die Pending-Order existiert immer noch nur innerhalb eines Balkens. Ich füge auch Parametereinstellungen bei.
Zum Testen verwende ich ein Demokonto im Metatrader 5 Terminal, Build 2136.
Mit freundlichen Grüßen, Vladimir.
Wird es für Entwickler anstelle von OrderCloseTime()? funktionieren?
Meine Erfahrung mit MQL5 ist der vierte Tag, aber ich habe schon die Nase voll!
Bringen Sie die OrderCloseTime() Funktion zurück, diese Position kann irgendwie programmatisch gemacht werden.... - Auftrag - dann Handel - dann Position, oder ist es so schwer, die Position maschinell zu berechnen?
Guten Tag zusammen!
Wenn es nicht zu viel Mühe ist, korrigieren Sie bitte den MQL4-Code, damit er in ML5 funktioniert.
Beobachten Sie unnatürliches Verhalten des Bahnsteigs.
1. Die ME5 behält nicht die Schnittstelleneinstellungen bei, die beim Ausschalten vorhanden waren. Insbesondere verschwindet das Einstellungsfeld. Kann wiederhergestellt werden, muss aber bei jedem Einschalten erneut durchgeführt werden.
2. Ich mache einen Indikator. Die Änderung der Indikatoreinstellungen im MT5 führt in der Regel zu einem Fehler: Die Form der Linien ändert sich erheblich, die Farbe kann nicht geändert werden usw.
Und wenn Sie die Einstellungen in einem neu installierten Indikator ändern, funktioniert alles wie geplant.
Probleme:
1. Liegt es nur an mir oder ist es ein allgemeines Problem?
2. Wenn ich etwas übersehen oder falsch gemacht habe, bitte ich um einen Rat.
Guten Tag zusammen!
Wenn es nicht zu viel Mühe ist, korrigieren Sie bitte den MQL4-Code, damit er in ML5 funktioniert.
Zunächst einmal müssen Sie die Systemfunktionen richtig schreiben. Am einfachsten geht das in MetaEditor 5 über das Menü Datei - Erstellen - Expert Advisor (Vorlage). Vergleichen Sie Ihren Code mit meinem:
Wenn Sie es korrigiert haben, machen wir weiter ...Wird es für Entwickler anstelle von OrderCloseTime()? funktionieren?
Meine Erfahrung mit MQL5 ist der vierte Tag, aber ich habe schon die Nase voll!
Bringen Sie die OrderCloseTime() Funktion zurück, diese Position kann irgendwie programmatisch gemacht werden.... - Auftrag - dann Handel - dann Position, oder ist es so schwierig, die Position maschinell zu berechnen?
Was genau wollen Sie bekommen? Benötigen Sie den Zeitpunkt des letzten Handels(Art des Handels "Marktaustritt")? Oder möchten Sie den Schlusszeitpunkt einer Position in der Handelshistorie erfahren?
Beobachten Sie das unnatürliche Verhalten der Plattform.
1. Die ME5 behält nicht die Schnittstelleneinstellungen bei, die beim Ausschalten vorhanden waren. Insbesondere verschwindet das Einstellungsfeld. Sie kann wiederhergestellt werden, aber das muss bei jedem Einschalten geschehen.
Wer ist ICH? Wer ist das Einstellungspanel?
Wer ist ICH? Wer ist das Einstellungspanel?
ME = MetaEditor.
Das Einstellungsfeld ist mein Vorbehalt. Ich meine die Symbolleiste mit den Schaltflächen, einschließlich Compile.
Build 2138 vom 06.09.2019.(Ich sagte "Einstellungen" aus Trägheit - ich bin es mit MT5, der auch mit dem Indikator-Einstellungsfeld zu kämpfen hat)
ME = MetaEditor.
Das Einstellungsfeld ist mein Vorbehalt. Ich meine die Symbolleiste, die Schaltflächen wie Compile enthält.
Build 2138 vom 06.09.2019.(Ich sagte "Einstellungen" aus Trägheit - ich bin es mit MT5, der sich auch mit dem Einstellungsfeld der Indikatorparameter beschäftigt)
Bitte geben Sie an, bei welchem Gerät dies der Fall ist:
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
Vladimir Karputov, 2019.07.31 12:12
Geben Sie diese Daten an:
drei Zeilen aus der Registerkarte "Log" kopieren (drei Zeilen markieren -> rechte Maustaste -> Kopieren)
und fügen Sie es in Ihre Nachricht ein. Sie sollten etwa so etwas erhalten: