Antwort

Profit Trailing (bei Abschluss) ... wie konvertiert man Tick für Tick?!

23 Antworten

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #115026

Ich verstehe, dass eine empirische Studie zu haben, in der Live-Handel berichtet werden, ist groß, um die Funktion, dass SQ haben, aber wir sollten die Fähigkeit, besser auf die Strategie zu arbeiten, sobald Sie eine gute finden
Diese Funktionen ermöglichen es Ihnen, Gewinn-Trailing, Breakeven, Trailing-Stop-etc etc. verwenden .. aber für viele Strategien, vor allem die aggressiveren, warten auf das Schließen der Kerze ist eine Funktion, die wir nicht brauchen.
alle diese Funktionen (für einige Strategien) sind nutzlos, wenn ich bis zum Schließen der Kerze warten muss!
Ich gebe an, dass ich nur mit tick-real! arbeite.
aber jeder der Breakeven- und Trailing-Parameter ist gesetzt und wartet auf die Schließung der Einstiegskerze...warum?
Hunderte und Aberhunderte von Strategien, die ich implementiert habe, sind mit dem "Trailing on close" eingestellt ... und wären viel effizienter mit einem Trailing Tick für Tick vom Einstieg in den Markt
sicherlich, warten Sie auf die Schließung der Kerze, wird in nicht fallen in overfitting oder sehen gute Strategien, die nicht funktionieren, dann leben
aber es sollte die Möglichkeit haben, diese Funktion zu beseitigen, sobald Sie eine gute Strategie zu finden und dann eine bessere Leistung in Trailing nicht warten, bis das Schließen der Kerze arbeiten
weiß jemand, wie zu tun? Ich muss die Datei mql ändern? Muss ich einige Codes darin löschen oder ersetzen? Ich muss die SQ einstellen?
Ich danke Ihnen allen
Giorgio

0

mikeyc

Kunde, bbp_participant, Gemeinschaft, 877 Antworten.

Profil besuchen

vor 8 Jahren #136500

//+------------------------------------------------------------------+
/**
 * Handel verwalten - SL auf Break Even oder Trailing Stop verschieben
 */
void manageStop() {

    if(!sqIsBarOpen) return;

... Rest des Codes

Wenn Sie das auskommentieren:

 

if(!sqIsBarOpen) return;

 

Zeile als:

 

// if(!sqIsBarOpen) return;

 

Dann wird die manageStop-Funktion für jeden Tick ausgeführt, und alle Arten von Stop-Loss-Bewegungen werden bei Bedarf jeden Tick ausgeführt. Dies wird eine viel größere CPU-Last auf dem Computer aber machen.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Profil besuchen

vor 8 Jahren #136504

.... und es wird Ihre Strategie ruinieren. Sie werden sehen, dass in 99% der Fälle das Ausführen einer Strategie mit Trailing per Tick statt per Bar Open (wie sie von SQ erstellt wurde) zu einer negativen Equity-Kurve führt. Das liegt ganz einfach daran, dass die Strategie von SQ mit einem Trailing auf dem Balken gefunden und auf diese Weise erstellt wurde. Wenn Sie das Trailing so beschleunigen, wird sich die gesamte Strategie komplett ändern und Ihnen nichts nützen, aber Sie werden sehen, was ich meine, wenn Sie Ihre Tests im MT4 mit Trailing by tick statt bar open durchführen;)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #136505

//+------------------------------------------------------------------+
/**
 * Handel verwalten - SL auf Break Even oder Trailing Stop verschieben
 */
void manageStop() {

    if(!sqIsBarOpen) return;

... Rest des Codes

Wenn Sie das auskommentieren:

if(!sqIsBarOpen) return;

Zeile als:

// if(!sqIsBarOpen) return;

Dann wird die manageStop-Funktion für jeden Tick ausgeführt, und alle Arten von Stop-Loss-Bewegungen werden bei Bedarf jeden Tick ausgeführt. Dies wird eine viel größere CPU-Last auf dem Computer aber machen.

Danke für die Antwort mein Freund.. so habe ich Kommentar aus "if(!sqlsBarOpen) return;" mit " // " und das Ergebnis ist diese :

aus diesem Standardcode ...

 

an diesem :

 

aber nach dieser Änderung hat sich nichts geändert
Ich habe etwas anderes zu ändern? Ich habe versucht, ein einfaches Trailing um 1 Pip einzurichten, aber es funktioniert nicht!  :angry:
Ich habe es mehrmals versucht und dabei die Art des Nachspanns geändert ... keine Chance!
das Trailing wird erst mit dem Schließen der Kerze aktiviert ..
Ich bin sicher, Sie können dieses Problem lösen 😀  😀 ...bitteeee
Nochmals vielen Dank 
Giorgio

0

mikeyc

Kunde, bbp_participant, Gemeinschaft, 877 Antworten.

Profil besuchen

vor 8 Jahren #136510

Nur die getProfitTrailingByTick Funktion wirkt sich nur dann aus, wenn sie mit einer Anzahl von Pips als Rückgabewert definiert ist (diese Funktion ist leer, also tut sie nichts).

double getProfitTrailingByTick() {
   if (OrderType() == OP_BUY) {
      // langer Wert hier
   } else if (OrderType() == OP_SELL) {
      // hier kurzer Wert
   }

   return(0);
}

Die andere Art des Stop-Trailing (die einen oder mehrere Indikatoren verwendet) wird immer noch beim Abschluss nachgezogen, da sich der Indikatorwert nur bei jedem Balken ändert:

double getStopTrailingByClose() {
   double Wert = 0;
   if (OrderType() == OP_BUY) {
      value = iCustom(NULL,0, "Pivots", 0, 0, 15, 0, 0, 0, 0, 0, 0, 1) + (0.8) * (MathAbs(iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 1) - iMA(NULL, 0, 1872, 0, MODE_LWMA, PRICE_CLOSE, 1)));

   } else if (OrderType() == OP_SELL) {
      value = iCustom(NULL,0, "Pivots", 0, 0, 15, 0, 0, 0, 0, 0, 0, 1) + (-0.8) * (MathAbs(iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 1) - iMA(NULL, 0, 1872, 0, MODE_LWMA, PRICE_CLOSE, 1)));
   }

   return(value);
}

0

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #136513

Nur die getProfitTrailingByTick Funktion wirkt sich nur dann aus, wenn sie mit einer Anzahl von Pips als Rückgabewert definiert ist (diese Funktion ist leer, also tut sie nichts).

double getProfitTrailingByTick() {
   if (OrderType() == OP_BUY) {
      // langer Wert hier
   } else if (OrderType() == OP_SELL) {
      // hier kurzer Wert
   }

   return(0);
}

Die andere Art des Stop-Trailing (die einen oder mehrere Indikatoren verwendet) wird immer noch beim Abschluss nachgezogen, da sich der Indikatorwert nur bei jedem Balken ändert:

double getStopTrailingByClose() {
   double Wert = 0;
   if (OrderType() == OP_BUY) {
      value = iCustom(NULL,0, "Pivots", 0, 0, 15, 0, 0, 0, 0, 0, 0, 1) + (0.8) * (MathAbs(iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 1) - iMA(NULL, 0, 1872, 0, MODE_LWMA, PRICE_CLOSE, 1)));

   } else if (OrderType() == OP_SELL) {
      value = iCustom(NULL,0, "Pivots", 0, 0, 15, 0, 0, 0, 0, 0, 0, 1) + (-0.8) * (MathAbs(iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 1) - iMA(NULL, 0, 1872, 0, MODE_LWMA, PRICE_CLOSE, 1)));
   }

   return(value);
}

Sorry.. aber nicht durch tick 🙁 ich kompilieren auf diese Weise, aber nicht eine nachlaufende durch tick .. es ist nicht richtig?

 

0

mikeyc

Kunde, bbp_participant, Gemeinschaft, 877 Antworten.

Profil besuchen

vor 8 Jahren #136514

Okay, es ist etwas komplizierter, weil die Funktion manageStop Close[1] als aktuellen Kurs verwendet. Natürlich ändert sich dieser Preis nur jeden Balken, so dass der Stop nur jeden Balken verschoben wird.

         //------------------------------
         // Gewinn-Trailing auf TICK!!!!!
         trailingStopValue = getProfitTrailingByTick();
         if(trailingStopValue > 0) {
            if(OrderType() == OP_BUY) {
               tsLevel = Bid - trailingStopValue;
            } else {
  	            tsLevel = Ask + trailingStopValue;
            }

Ändern Sie den Code wie oben gezeigt, indem Sie close durch Bid und Ask ersetzen.

0

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #136515

Okay, es ist etwas komplizierter, weil die Funktion manageStop Close[1] als aktuellen Kurs verwendet. Natürlich ändert sich dieser Preis nur jeden Balken, so dass der Stop nur jeden Balken verschoben wird.

         //------------------------------
         // Gewinn-Trailing auf TICK!!!!!
         trailingStopValue = getProfitTrailingByTick();
         if(trailingStopValue > 0) {
            if(OrderType() == OP_BUY) {
               tsLevel = Bid - trailingStopValue;
            } else {
  	            tsLevel = Ask + trailingStopValue;
            }

Ändern Sie den Code wie oben gezeigt, indem Sie close durch Bid und Ask ersetzen.

Ich habe in Bid & Ask ändern .. aber nie geändert.. nicht Spur 🙁

könnte es sein, dass ich "double close = Close [1]" ändern muss ??
danke für all die Hilfe, die Sie mir geben 🙂

0

mikeyc

Kunde, bbp_participant, Gemeinschaft, 877 Antworten.

Profil besuchen

vor 8 Jahren #136516

Ich habe diese Änderungen vorgenommen, und das "Trailing by tick" hat funktioniert:

 

211 2015.08.24 02:45 buy 11 1.00 1.56723 0.00000 0.00000 0.00 9788.26
212 2015.08.24 02:45 ändern 11 1.00 1.56723 1.54657 0.00000 0.00 9788.26
213 2015.08.24 02:50 ändern 11 1.00 1.56723 1.56723 0.00000 0.00 9788.26
214 2015.08.24 02:52 ändern 11 1.00 1.56723 1.56724 0.00000 0.00 9788.26
215 2015.08.24 02:52 ändern 11 1.00 1.56723 1.56725 0.00000 0.00 9788.26
216 2015.08.24 02:52 ändern 11 1.00 1.56723 1.56726 0.00000 0.00 9788.26
217 2015.08.24 02:52 ändern 11 1.00 1.56723 1.56727 0.00000 0.00 9788.26
218 2015.08.24 02:52 ändern 11 1.00 1.56723 1.56728 0.00000 0.00 9788.26
219 2015.08.24 02:53 ändern 11 1.00 1.56723 1.56729 0.00000 0.00 9788.26
220 2015.08.24 02:53 ändern 11 1.00 1.56723 1.56732 0.00000 0.00 9788.26
221 2015.08.24 02:53 ändern 11 1.00 1.56723 1.56734 0.00000 0.00 9788.26
222 2015.08.24 02:53 ändern 11 1.00 1.56723 1.56737 0.00000 0.00 9788.26
223 2015.08.24 02:53 ändern 11 1.00 1.56723 1.56739 0.00000 0.00 9788.26
224 2015.08.24 02:53 ändern 11 1.00 1.56723 1.56740 0.00000 0.00 9788.26
225 2015.08.24 02:56 s/l 11 1,00 1,56740 1,56740 0,00000 10,73 9798,99
 

0

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #136519

Ich habe es viele Male versucht, aber nichts!
Ich dachte, dass das Problem vielleicht darin liegt, dass meine Aufträge Buystop und Sellstop sind, während ich feststellte, dass Ihre Aufträge Marktaufträge sind.
könnte dies die Ursache sein?
um den genauen Befehl für Kauf- und Verkaufsstopp-Aufträge festzulegen, sollte ich vielleicht andere Dinge ändern?
 
Nochmals vielen Dank
 
Giorgio

0

geektrader

Customer, bbp_participant, community, 522 replies.

Profil besuchen

vor 8 Jahren #136530

Sie müssen auch die Zeile "if (OrderOpenTime() >= Time[0])..." entfernen, da die Funktion sonst an dieser Stelle beendet wird, solange die Order nicht mindestens 1 Takt lang geöffnet wurde. Es wird also erst 1 Takt nach Eröffnung der Order mit dem Trailing (in Ihrem Fall durch Tick) begonnen. Wenn Sie diese Zeile entfernen, beginnt sie sofort 1 Tick nach der Auftragseröffnung.

 

Ich sage Ihnen immer noch, dass dies zu nichts führt, was profitabler ist als Ihre ursprüngliche Strategie. Es ist schlimmer, viel schlimmer, wenn die Strategie mit On-Bar-Trailing erstellt wurde. Auf diese Weise machen Sie die gesamte Strategie zunichte, da auch die nächsten Aufträge durch das frühere Schließen der vorherigen Aufträge beeinflusst werden. Es ist der perfekte Weg, um Ihr Geld loszuwerden, das zu tun, aber scheint, dass Sie auf die harte Tour lernen müssen:)


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

geektrader

Customer, bbp_participant, community, 522 replies.

Profil besuchen

vor 8 Jahren #136532

//+------------------------------------------------------------------+
/**
 * Handel verwalten - SL auf Break Even oder Trailing Stop verschieben
 */
void manageStop() {

    //if(!sqIsBarOpen) return;
      
   double trailingStopValue, moveSLValue;
   double orderSL, normalOrderSL, orderOpen;
   double close = Close[0];
   double tsLevel, newSL;

   for(int i=0; i= Time[0]) continue; // exit, wenn die Order gerade eröffnet wurde

         //------------------------------
         // Gewinn-Trailing beim Schließen
         trailingStopValue = getProfitTrailingByTick();
         if(trailingStopValue > 0) {
            if(OrderType() == OP_BUY) {
               tsLevel = close - trailingStopValue;
            } else {
  	            tsLevel = close + trailingStopValue;
            }
            orderSL = OrderStopLoss();
            normalOrderSL = getNormalSL(orderSL);
            newSL = getSpecialSL(tsLevel);

            if(OrderType() == OP_BUY) {
               if(isSLCorrect(tsLevel) && (orderSL == 0 || normalOrderSL tsLevel) && !doublesAreEqual(orderSL, newSL)) {
     	            rettmp = OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0);
     	         }
            }
         }

			//--------------------------------------------------------
   		// Stop-Trailing nach Schluss verwalten
         trailingStopValue = getStopTrailingByClose();
         if(trailingStopValue > 0) {
            orderOpen = OrderOpenPrice();
            orderSL = OrderStopLoss();
            normalOrderSL = getNormalSL(orderSL);
            newSL = getSpecialSL(trailingStopValue);

            if(OrderType() == OP_BUY) {
              	if(isSLCorrect(trailingStopValue) && (orderSL == 0 || normalOrderSL trailingStopValue) && !doublesAreEqual(orderSL, newSL)) {
	           		rettmp = OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0);
	           	}
	         }
         }

         //--------------------------------------------------------
         // SL 2 BE verwalten (nach Tick)
         moveSLValue = getMoveSLValueByTick();
         if(moveSLValue > 0) {
            orderSL = OrderStopLoss();
            normalOrderSL = getNormalSL(orderSL);
            orderOpen = OrderOpenPrice();
            newSL = getSpecialSL(orderOpen);

            if(OrderType() == OP_BUY) {
               if(isSLCorrect(orderOpen) && (close - orderOpen >= moveSLValue) && (orderSL == 0 || normalOrderSL = moveSLValue) && (orderSL == 0 || normalOrderSL > orderOpen) && !doublesAreEqual(orderSL, newSL)) {
                  rettmp = OrderModify(OrderTicket(), orderOpen, newSL, OrderTakeProfit(), 0);
               }
            }
         }
      }
   }
}
//+------------------------------------------------------------------+

Dies ist der komplette Code, der zu ersetzen ist, dies wird Ihre Bestellung dann Tick für Tick verfolgen.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #136542

...vielen Dank geektrader 😀 ... ich werde das einmal ausprobieren und dir Bescheid geben

Nochmals vielen Dank

0

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #136545

dann:
Ich habe versucht, in jeder Weise, entweder durch Ändern des Codes innerhalb der Strategie (wie von Ihnen angegeben) und sogar die Erstellung einer Strategie manuell, von StrategyQuant, in der "Strategie-Editor", kann ich nicht bekommen nesun trailing tick-by-tick
Ich bemerkte in der Tat, dass selbst wenn ich eine einfache Strategie mit dem StrategyQuant erstellen, wenn ich eine einfache "Gewinn-Trailing" eingeben wird erstellt, automatisch, die Einstellung der Trailing "on close" Kerze und nie tick-by-tick.
Selbst wenn Sie die "Build-Strategien", durch die Einstellung real tick, findet nie eine nachlaufende tick by tick
immer immer immer "(on close)" ... in irgendeiner Weise kann ich nicht scheinen, um die schnellste Trailing auf den Preis Tick-by-Tick haben.
es ist unglaublich 🙁
einige von Ihnen können mir sagen, was falsch ist? Sie haben jemals eine Strategie mit Trailing Tick-by-Tick erstellt?
mein "StrategyQuant" hat nie eine Strategie mit Trailing tick-by-tick erstellt ... sondern nur "on close"
Warum?

0

Gaudio Fx

Abonnent, bbp_participant, Gemeinschaft, 22 Antworten.

Profil besuchen

vor 8 Jahren #136616

kann mir niemand helfen?
jemand kann bestätigen, dass die STRATEGYQUANT Strategien mit dynamischen Trailing Tick-by-Tick erstellen?
Warum hat er nicht einmal ein Trailing mit Tick-by-Tick erstellt?
Ich meine nicht zu zwingen, profitabel, auch unrentabel ... hat nie eine Strategie mit Trailing anderen als "Trailing (auf schließen)" erstellt
Warum?
Wenn ich das Fach manuell erstelle, ist es immer dasselbe (ON CLOSE)!!! 🙁

0

geektrader

Customer, bbp_participant, community, 522 replies.

Profil besuchen

vor 8 Jahren #136634

NEIN, SQ wird nur Strategien mit Trailing auf BAR CLOSE erstellen, wie bereits mehrfach hier und in anderen Threads erklärt. Das einzige, was Sie tun können, ist ein EA für MT4 zu exportieren, die Trails ON TICK durch Ändern der MQL4-Code in der Art und Weise, die wir es für Sie bereits ein paar Mal in diesem Thread gepostet haben. Dies wird NICHTS an der Tatsache ändern, dass SQ STILL nur Strategien mit Trailing auf Bar schließen nur erstellen wird. Und warum das der Fall ist, wurde auch im Forum (von mir und anderen) ein paar Mal erklärt.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 23)

1 2