Die neue Methode von SQX? SL/PT basierend auf festen Pips oder ATR-Wert.
5 Antworten
eastpeace
vor 5 Jahren #240480
Im TS-Code habe ich festgestellt, dass die SL/PT-Berechnung zwischen SQX und SQ 3.8 unterschiedlich ist.
SQX-Stil:
if(MarktPosition > 0) then begin
If BarsSinceEntry = 0 then begin
LongSL = 0;
LongTrailingStop = 0;
Ende;
LongSLPlaced = false;
// StopLoss
LongSL = EntryPrice - 450.0 * tickSize;
LongSL = SQ_CorrectMinMaxSLPT(LongSL, MinimumSLPT, MaximumSLPT, true);Sell("LongSL") nächster Bar zum LongSL-Stop;
LongSLPlaced = true;// ProfitTarget
PT = EntryPrice + 955,0 * tickSize;
PT = SQ_CorrectMinMaxSLPT(PT, MinimumSLPT, MaximumSLPT, false);
Sell("LongPT") nächster Bar zum PT-Limit;…
SQ 3.8 Stil
{
Tradestation Strategie vom 25_03_2017Strategie 1.3073Erzeugt von StrategyQuant Version 3.8.1
Erzeugt am Wed Apr 17 08:20:00 GMT 2019Getestet am SHEF_RB, H1, 27.03.2009 - 03.03.2017
}Eingaben:
//——————————————————————
// Strategieoptionen
MaxTradesPerDay(10),
ExitOnClose(false),
LimitSignalsToRange(false),
TimeRangeFrom(0900),
TimeRangeTo(1455),//——————————————————————
// Parameter für die Geldverwaltung
// MoneyManagementType:
// 0 - feste Größe (aus TradeSize)
// 1 - Risiko fest % des Eigenkapitals des Kontos
// 2 - Risiko Festbetrag in $
//——————————————————————
CapitalSize(10000),
MoneyManagementType(0),
TradeSize(1.0),
SizeRounding(0),
RiskPerTrade(0), // in % oder in $, je nach MM-Typ
MaxTradeSize(0);vars:
tickSize(MinMove/PriceScale),
PriceLevel(0), NumberOfShares(0),
LongSL(0),LongPT(0),
ShortSL(0),ShortPT(0),
SLSize(0),
LongEntryCondition(false),ShortEntryCondition(false),
LongExitCondition(false),ShortExitCondition(false);// ——————————————
// EINTRITTSVORSCHRIFTEN
// ——————————————
if(LimitSignalsToRange = false oder (Time >= TimeRangeFrom und Time < TimeRangeTo)) then begin// Lang ---
if(MaxTradesPerDay = 0 oder EntriesToday(Date) < MaxTradesPerDay) then begin
LongEntryCondition = (High[18] < Open[1]);
if(LongEntryCondition = true) then begin
SLSize = Round2Fraction((5.88 * AvgTrueRange(109)[0]));
NumberOfShares = SQ_MoneyManagement(CapitalSize, SLSize, MoneyManagementType, TradeSize, SizeRounding, RiskPerTrade, MaxTradeSize);Buy("LongMarket") NumberOfShares Aktien nächster Balken am Markt;
Ende;
Ende;// Kurz ---
if(MaxTradesPerDay = 0 oder EntriesToday(Date) < MaxTradesPerDay) then begin
ShortEntryCondition = (Low[18] > Open[1]);
if(ShortEntryCondition = true) then begin
SLSize = Round2Fraction((5.88 * AvgTrueRange(109)[0]));
NumberOfShares = SQ_MoneyManagement(CapitalSize, SLSize, MoneyManagementType, TradeSize, SizeRounding, RiskPerTrade, MaxTradeSize);
SellShort("ShortMarket") NumberOfShares Aktien nächster Balken am Markt;
Ende;
Ende;
Ende;// ——————————————
// HANDELS- UND AUSSTIEGSREGELN VERWALTEN
// ——————————————// Lang ---
if(MarktPosition > 0) then begin
If BarsSinceEntry = 0 then begin
LongPT = 0;
LongSL = Round2Fraction(EntryPrice - (5,88 * AvgTrueRange(109)[0]));
Ende;
// Profit nachlaufend
PriceLevel = Round2Fraction((3.23 * AvgTrueRange(126)[0]));
if(Preisniveau > 0) then begin
PriceLevel = Close - PriceLevel;
if(LongSL = 0 oder LongSL < PriceLevel) then
LongSL = PreisNiveau;
Ende;if(LongPT > 0) then
Sell("LongPT") nächster Takt zum LongPT-Limit;
if(LongSL > 0) then
Sell("LongSL") nächster Bar zum LongSL-Stop;
Ende;// Kurz ---
if(MarktPosition < 0) then begin
If BarsSinceEntry = 0 then begin
KurzPT = 0;
ShortSL = Round2Fraction(EntryPrice + (5,88 * AvgTrueRange(109)[0]));
Ende;
// Profit nachlaufend
PriceLevel = Round2Fraction((3.23 * AvgTrueRange(126)[0]));
if(Preisniveau > 0) then begin
PriceLevel = Close + PriceLevel;
if(ShortSL = 0 oder ShortSL > PriceLevel) then
ShortSL = PreisNiveau;
Ende;if(KurzPT > 0) then
BuyToCover("ShortPT") nächster Takt am ShortPT-Limit;
if(ShortSL > 0) then
BuyToCover("ShortSL") nächster Takt zum ShortSL-Stop;
Ende;if(ExitOnClose) then
SetExitOnClose;
Es ist OK, wenn die Strategie feste Pips verwendet. Sie haben den gleichen Aufwand.
Aber wenn wir die SL- und PT-Einstellung von ATR verwenden, haben die beiden Methoden nicht dasselbe getan.
Im SQX-Stil würden die SL- und PT-Werte von Takt zu Takt geändert werden, da die ATR nicht fest ist.
Ich mag diese neue Methode nicht, und ist das ein Fehler?
tomas262
vor 5 Jahren #240493
Hallo,
Es wurden Änderungen am TS-Code im Vergleich zu SQ3 vorgenommen. Wenn Sie Probleme mit einer Strategie SL/PL haben, wenn ATR verwendet wird, fügen Sie es bitte in unsere Roadmap ein, damit die Entwickler es überprüfen können https://roadmap.strategyquant.com/projects/sq4/tasks
eastpeace
vor 4 Jahren #242341
Hallo, Tomas,
Hier ist der Beitrag zur Aufgabe der Roadmap. Würden Sie ihn bitte überprüfen? Ich denke, es ist ein grundlegendes und wichtiges Thema.
tomas262
vor 4 Jahren #242343
Danke, die Entwickler werden das Problem prüfen und so schnell wie möglich beheben.
Mark Fric
vor 4 Jahren #242377
Ich verstehe Ihren Standpunkt, aber es ist absichtlich so, und zwar wegen der Geldverwaltung.
Sehen Sie, wenn Sie MM haben, um zum Beispiel 5% Ihres Kontostandes zu riskieren, wird es von Stop Loss berechnet. So dass Sie nur 5% verlieren werden, wenn Ihr SL getroffen wird.
Aus diesem Grund muss der SL zum Zeitpunkt der Handelsplatzierung berechnet werden und kann nicht dynamisch für jeden Bar neu berechnet werden.
Mark
StrategyQuant Architekt
eastpeace
vor 4 Jahren #242408
Sie haben Recht, Mark. Ich stimme Ihnen in der ersten Hälfte zu.
Und in der TS/MC-Code jetzt, die SL-Ebene und PT Ziel ist wirklich jeder bar geändert, wenn es Position halten. Sie können den SL/PT-Wert in MC drucken. Bitte überprüfen Sie es noch einmal.
Bei der Stop-Entry-Order kennen wir zunächst den Einstiegskurs. Ein kleines Problem gibt es bei der Verwendung von Market-Orders. Im Bar-by-Bar-Modus von MC kann der SL/PT nicht mit der ATR zum gleichen Zeitpunkt des Einstiegs berechnet werden.
Wir können davon ausgehen, dass der Einstiegskurs der Schlusskurs des vorherigen Signalbalkens ist.
if marketpostion0 then begin
print("date: ",date,",mp=",marketposition,",entryprice=",entryprice,",atr=",SQ_ATR(20)[1],",sl=",LongSL);
Ende
Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)