Antwort

Lassen Sie uns die benutzerdefinierten MQL4-Funktionen von SQ hier teilen!

10 Antworten

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #114883

Hallo, liebe SQ-Nutzer,

Da nur wenige von uns aus der MQL4-Programmierung kommen, haben wir unsere eigenen Ideen, wie wir die MQL4-Funktionalitäten der ursprünglichen SQ verbessern können,

Ich wollte einige meiner "Add-Ons" mit euch teilen, die ich in die originalen MQL4-Dateien von SQ implementiert habe.

Außerdem möchte ich, dass jeder, der seine SQ's MQL4 Dateien irgendwie modifiziert hat, seine Modifikationen hier auch mit allen teilt 🙂

 

Ich fange an, indem ich ein paar von meinen mitteile - viel Spaß!

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

¢ BACKTEST VIEL SCHNELLER, WENN SIE MT4 VERWENDEN (OHNE VISUELLEN MODUS):

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Öffnen Sie Ihre Datei "Main.tpl" und fügen Sie die folgende Codezeile irgendwo unter "int start() {" und über "drawStats();" ein:

if(IsTesting()&&IsVisualMode()==false){ObjectsDeleteAll();} //Löscht alle Objekte für schnelleres MT4-Backtesting..

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

¢-SPREIZUNGSBEGRENZER:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Suchen Sie in der Datei "PrintParameters.inc" nach "MaxSlippage = 3;", und fügen Sie unter dieser Zeile die folgende Codezeile ein:

extern double MaxSpread = 1.5; // << Geben Sie hier Ihre maximale Spanne in PIPs ein

Suchen Sie in der Datei "MT4Functions.inc" nach "void openPosition" und fügen Sie dann unter "if(sqIsTradeAllowed() == 1) {" den folgenden Code ein:

         string OrderTypeString;
         if(orderType==OP_BUY) OrderTypeString="#BUY";
         if(orderType==OP_SELL) OrderTypeString="#SELL";
         if(orderType==OP_BUYLIMIT) OrderTypeString="#BUY_LIMIT";
         if(orderType==OP_SELLLIMIT) OrderTypeString="#SELL_LIMIT";
         if(orderType==OP_BUYSTOP) OrderTypeString="#BUY_STOP";
         if(orderType==OP_SELLSTOP) OrderTypeString="#SELL_STOP";
         //
         int orderStartPointInTime = GetTickCount();
         if(orderType==OP_BUY||orderType==OP_SELL){if(DoubleToStr((Ask - Bid)*gPointPow, 1)>DoubleToStr(MaxSpread, 1)){Log("#ERROR!: Order's ("+OrderTypeString+") Spread was too high, - (Current Spread: ("+DoubleToStr((Ask - Bid)*gPointPow, 1)+")>("+DoubleToStr(MaxSpread, 1)+" Maximum), Delayed.");Sleep(500);return(0);}}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

¢ Feststellen, ob der Auftrag durch Stoploss/Takeprofit geschlossen wurde LOG NOTIFIER:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Öffnen Sie Ihre Datei "Main.tpl" und fügen Sie die folgende Codezeile irgendwo unter "int start() {" und über "drawStats();" ein:

Order_Closure_OfSLTP_Notifier();

Öffnen Sie Ihre "CustomCodeMT4,mq4"-Datei und fügen Sie den folgenden Code irgendwo unter dem Rest des vorhandenen Codes ein, der bereits vorhanden ist..:

void Bestellung_Abschluss_vonSLTP_Notifier()
{
   for(int i=OrderHistoryTotal()-1;i>=0;i--){
   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true&&OrderSymbol()==Symbol()){
   if(AuftragMagischeZahl()==MagischeZahl){
   if(TimeCurrent()-OrderCloseTime()==0) //<=OrderTakeProfit()){Log("#Order: ("+OrderTypeString+" [Ticket: "+OrderTicket()+"]) wurde von TP geschlossen.");}
            if(OrderType()==OP_BUY&&OrderClosePrice()<=OrderStopLoss()){Log("#Order: ("+OrderTypeString+" [Ticket: "+OrderTicket()+"]) wurde von SL geschlossen.");}
            //
            if(OrderType()==OP_SELL&&OrderClosePrice()=OrderStopLoss()){Log("#Order: ("+OrderTypeString+" [Ticket: "+OrderTicket()+"]) wurde von SL geschlossen.");}
         //
      //________________________________________________________
   }}}}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #135833

Wenn jemand einen BreakEven & TrailingStop von TICKS hat, bitte teilen..,

Danke...

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #135874

Wenn jemand einen BreakEven & TrailingStop von TICKS hat, bitte teilen..,

Danke...

Jemand...

0

stearno

Kunde, bbp_participant, Gemeinschaft, 379 Antworten.

Profil besuchen

vor 8 Jahren #135903

Karish,

Es tut mir leid, dass ich eine so einfache Frage habe. Wo ist die "Main.tpl"?  

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Profil besuchen

vor 8 Jahren #135904

Karish,

Es tut mir leid, dass ich eine so einfache Frage habe. Wo ist die "Main.tpl"?  

Alle Dateien befinden sich im Ordner "SQ\code",

die Datei "Main.tpl", die sich im Ordner "SQ\code\Mql_MT4" befindet.

 

Es gibt auch eine Main.tpl im Ordner "SQ\code\Mql_MT4_BarOpen", aber ich benutze die "BarOpen"-Funktion nicht, nur Tick-basiert, also verweise ich auf den Ordner "SQ\code\Mql_MT4".

0

stearno

Kunde, bbp_participant, Gemeinschaft, 379 Antworten.

Profil besuchen

vor 8 Jahren #135905

Danke!

0

.

Kunde, bbp_participant, community, sq-ultimate, 487 Antworten.

Profil besuchen

vor 7 Jahren #141012

hat jemand Änderungen an den MQL4-Code von SQ getan, um durch den Validierungsprozess auf MQL Market zu erhalten? Ich bin auf dieses Problem stecken https://www.mql5.com/en/articles/2555#invalid_lot

Sie wollen ein profitabler Algotrader werden? Wir haben Anfang 2014 begonnen, die StrateQuant-Software zu nutzen. Mittlerweile haben wir ein sehr großes Knowhow für die Erstellung von EAs für alle möglichen Arten von Märkten. Wir teilen dieses Knowhow, Apps, Tools und auch alle fertigen Strategien mit echten Tradern. Wenn Sie sich uns anschließen möchten, füllen Sie bitte das FORMEL.

0

daveng

Customer, bbp_participant, community, 93 replies.

Profil besuchen

vor 7 Jahren #141066

Ja, es ist Teil der MQL-Anforderung, die Losgröße zu überprüfen, um sicherzustellen, dass sie innerhalb des minimalen und maximalen Losgrößenbereichs des Brokers bleibt. Und auch die Losgröße muss überprüft werden.

Sie können den folgenden Code (für MT4) verwenden, den ich aus dem Originalcode von MQL abgeändert habe:

============================================================================

bool CheckLotSizeValue(double volume)
{
//- minimal zulässiges Volumen für Handelsgeschäfte
   if(Volumen<min_Volumen)
   {
      Print("Das Volumen der Losgröße ist kleiner als der zulässige Mindestwert. Die minimal zulässige Losgröße ist ",min_volume);
      return(false);
   }

//- maximal zulässiges Volumen von Handelsgeschäften
   if(Volumen>max_Volumen)
   {
      Print("Das Volumen der Losgröße ist größer als der zulässige Höchstwert. Die maximal zulässige Losgröße ist ",max_volume);
      return(false);
   }

//- Minimaler Schritt der Volumenänderung
   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(Verhältnis*Volumenschritt-Volumen)>0,0000001)
   {
      PrintFormat("Lot Size volume is not a multiple of the minimum step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f",volume_step,ratio*volume_step);
      return(false);
   }
   
   return(true);
}

 

========================================================

 

Fügen Sie diese dann in Ihren "Init"-Abschnitt ein:

 

min_volume=MarketInfo(Symbol(),MODE_MINLOT);
max_volume=MarketInfo(Symbol(),MODE_MAXLOT);
volume_step=MarketInfo(Symbol(),MODE_LOTSTEP);

 

========================================================

 

Fügen Sie außerdem den Befehl zum Funktionsaufruf in Ihren "Start"-Abschnitt ein:

 

   if(!CheckLotSizeValue(LotSize))return;

 

Normalerweise müssen Sie dies gleich zu Beginn einfügen, damit Ihr EA zuerst die Losgröße prüft, bevor er den Rest des Codes ausführt...

=========================================================

 

Und das ist nur eine der Überprüfungen, es gibt eine ganze Reihe anderer Überprüfungen, die der MQL-Administrator von Ihnen erwarten würde. Dazu gehören die Überprüfung der freien Marge, die Überprüfung des Stop-Levels, die Überprüfung des Freeze-Levels, die Überprüfung des Limits für ausstehende Aufträge, die Überprüfung des Losvolumens und die Überprüfung von Ordermodify error 1. Im Grunde sind alle diese im MQL-Artikel erwähnt.

Nicht zu vergessen ist auch, dass alle Ihre externen Parameter eine Prüffunktion haben müssen, um jeden Parameterwert zu überprüfen, so dass, wenn ein Benutzer einen ungültigen Wert eingibt, Ihr EA automatisch eine Fehlermeldung im Journal ausgibt, um den Benutzer zu warnen und den EA anzuhalten.

 

Herzliche Grüße,

Dave

 

0

.

Kunde, bbp_participant, community, sq-ultimate, 487 Antworten.

Profil besuchen

vor 6 Jahren #143499

Ist jemand in der Lage, benutzerdefinierte MQL-Änderung von MQ4-Code auf die SQ zu tun, so dass die approriate Lotsize geht rechts von SQ auf den Strategie-Code? Also, wenn ich in SQ Lotsize 0,08 es wird diese Größe rechts setzen, nachdem ich MQ4-Code generieren klicken? wenn ich dies in 100+ Strs seine sehr ärgerlich ändern müssen

Sie wollen ein profitabler Algotrader werden? Wir haben Anfang 2014 begonnen, die StrateQuant-Software zu nutzen. Mittlerweile haben wir ein sehr großes Knowhow für die Erstellung von EAs für alle möglichen Arten von Märkten. Wir teilen dieses Knowhow, Apps, Tools und auch alle fertigen Strategien mit echten Tradern. Wenn Sie sich uns anschließen möchten, füllen Sie bitte das FORMEL.

0

daveng

Customer, bbp_participant, community, 93 replies.

Profil besuchen

vor 6 Jahren #143502

Ist jemand in der Lage, benutzerdefinierte MQL-Änderung von MQ4-Code auf die SQ zu tun, so dass die approriate Lotsize geht rechts von SQ auf den Strategie-Code? Also, wenn ich in SQ Lotsize 0,08 es wird diese Größe rechts setzen, nachdem ich MQ4-Code generieren klicken? wenn ich dies in 100+ Strs seine sehr ärgerlich ändern müssen

Wenn Sie damit meinen, dass Sie den Standardwert für die Losgröße in den Codes manuell ändern müssen, ist das ganz einfach.

Suchen Sie in den Codes nach "extern double Lots = 0.1;", das sich normalerweise im oberen Teil der Codes befindet, und ändern Sie den Wert manuell in "0.08".

Speichern Sie es, und dann wird jedes Mal, wenn Sie den EA ausführen, eine Standard-Losgröße von "0,08" verwendet.

Aber wenn Sie 100 EAs haben, müssen Sie dies manuell für jeden EA tun. Ich weiß nicht, ob es eine einfache Möglichkeit gibt, dies massenhaft zu ändern.

 

Herzliche Grüße,

Dave

0

.

Kunde, bbp_participant, community, sq-ultimate, 487 Antworten.

Profil besuchen

vor 6 Jahren #143503

Dieser Rat ist nutzlos, ich weiß, wie man es manuell zu tun, ich weiß, wie man es zusammen für 100+ Strs in einem Klick zu tun, wenn die Losgröße der gleiche Wert ist - aber für mich jede Strategie Handel unterschiedliche Losgröße, die bereits in SQ verwendet wird und ist in STR-Datei gespeichert. und ich will einfache Art und Weise, wie man diesen genauen Wert rechts auf die MQL-Code setzen

 

wenn wir nicht so etwas schreiben können wie die hier besprochene - benutzerdefinierte MQL-Funktion

 

Wir können ein Skript ausführen (R, Python, was auch immer), das nach der Losgröße in der STR-Datei sucht und sie automatisch in die MQ4-Datei überträgt.

Sie wollen ein profitabler Algotrader werden? Wir haben Anfang 2014 begonnen, die StrateQuant-Software zu nutzen. Mittlerweile haben wir ein sehr großes Knowhow für die Erstellung von EAs für alle möglichen Arten von Märkten. Wir teilen dieses Knowhow, Apps, Tools und auch alle fertigen Strategien mit echten Tradern. Wenn Sie sich uns anschließen möchten, füllen Sie bitte das FORMEL.

0

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)