
Das Doppel-Zyklus-Volatilität-Anpassung-Break-Trading-System ist eine quantitative Strategie, die auf dem berühmten Seiländetrading-Gesetz basiert und zwei verschiedene Zeitspannen ((20- und 55-Tage) nutzt, um Markt-Breakthroughs zu erfassen und gleichzeitig Volatilitätsindikatoren für die dynamische Positionsverwaltung zu verwenden. Das System integriert mehrere quantitative Trading-Techniken wie Trend-Tracking, Breakthroughs, Volatilität-Anpassung von Positionen und Pyramiden-Haufen, um die mittelfristigen und langfristigen Markttrends effektiv zu erfassen. Die Kernlogik der Strategie besteht darin, vor dem Preis-Breaking-Hoch oder -Tief in den Markt einzutreten, indem die Volatilität ((ATR) berechnet wird, um die Positionsgröße zu berechnen und bei anhaltender Entwicklung des Trends eine Pyramiden-Hauflage zu erzielen, die schließlich durch einen kurzen Zyklus-
Aus der Analyse des Codes geht hervor, dass die Kernprinzipien der Strategie folgende Aspekte umfassen:
Durchbruch in der doppelten SaisonStrategie: Zwei Arten von Einstiegssystemen - System 1 verwendet den 20-Tage-Hoch/Low-Breakout als Haupt-Einstiegssignal; System 2 wird nach dem Verlust des vorherigen Handels aktiviert und verwendet den 55-Tage-Hoch/Low-Breakout als Einstiegssignal. Diese Konstruktion ermöglicht die automatische Anpassung der Einstiegssensitivität an die Marktlage.
Ermittlung von Volatilität und PositionsverwaltungDie Strategie verwendet die 20-Tage-Durchschnitts-Real-Wavelength (ATR) als Maß für die Marktvolatilität und berechnet die angemessene Position mit der Formel: Einheitsposition = Risikobetrag / (N * Punktwert). Die Risikobetrag ist gleich dem Konto-Ertrag multipliziert mit dem festgelegten Risiko-Prozentsatz (Default 1%). Diese Methode gewährleistet eine gleichbleibende Risikobereitschaft in verschiedenen Umgebungen mit hoher Volatilität.
Pyramiden-PositionsmechanismusDie Strategie erlaubt es, neue Einheiten derselben Größe hinzuzufügen, wenn die Preise der bereits gewinnbringenden Positionen sich weiterhin in eine günstige Richtung bewegen (mindestens 0,5 N). Diese pyramidenartige Hinterlagerungsmethode erweitert das Gewinnpotenzial in stark trendigen Märkten.
Kurze Zyklus umgekehrtStrategie: Verwenden Sie die 10-Tage-Tief/Hoch als Ausstiegssignal für die Mehr/Leer Position. Alle Mehrpositionen werden gelöscht, wenn der Preis unter dem 10-Tage-Tief fällt. Alle Leerpositionen werden gelöscht, wenn der Preis den 10-Tage-Hoch überschreitet.
SystemwechselmechanismenDie Strategie passt das Eintrittssystem automatisch an die Ergebnisse der Transaktionen an. Wenn ein Handel in einer bestimmten Richtung verliert, wird der nächste Handel in derselben Richtung mit dem System 2 ((55-Tage-Zyklus) verwendet. Nach einem profitablen Handel wird das System 1 ((20-Tage-Zyklus) wieder verwendet.
Durch die Kombination dieser Prinzipien kann die Strategie einen frühen Eintritt in einen Trendmarkt, einen positiven Anstieg und einen Ausstieg bei einem Trendwechsel vornehmen, um die mittleren und langfristigen Markttrends effektiv zu erfassen.
Wenn wir den Code analysieren, können wir folgende Hauptvorteile der Strategie zusammenfassen:
Automatische HandelsentscheidungenDie Strategie basiert auf der vollständigen Ausführung von Transaktionen nach quantitativen Regeln, beseitigt die künstliche Störung der Emotionen und gewährleistet die strikte Ausführung der Handelsdisziplin. Der Code definiert eindeutig die Bedingungen für den Eintritt, die Verlagerung und den Ausstieg, ohne dass subjektive Beurteilungen erforderlich sind.
Dynamische RisikomanagementDurch die Begrenzung des Risikos pro Transaktion auf einen festen Prozentsatz der Kontowirkung (default 1%) und die Kombination von ATR-Anpassung der Positionsgröße kann die Strategie eine einheitliche Risikobereitschaft in unterschiedlichen Umgebungen mit hoher Volatilität aufrechterhalten. Diese Methode reduziert automatisch die Positionen in hochvolatilen Märkten und erhöht die Positionen angemessen in niedrigvolatilen Märkten.
Anpassung an MarktbedingungenDie Strategie ist so konzipiert, dass sie sich automatisch an die Marktsituation anpasst. Die Kurzzeit (20 Tage) wird in einem kontinuierlich profitablen Trendmarkt verwendet, um die Sensibilität zu bewahren. Der Wechsel zu einer längeren Zeit nach einem Verlust (55 Tage) reduziert die Falschsignale.
WachstumsmechanismenDie Strategie basiert auf der Berechnung der Positionsgröße des aktuellen Kontos und erhöht die Positionen automatisch mit dem Wachstum des Kontos, um einen Ertragseffekt zu erzielen. Gleichzeitig wird das Ertragspotenzial in starken Trends durch die Pyramiden-Haufposition erweitert.
MehrwertsteuerungDie Strategie ist für verschiedene Anlageklassen konzipiert und hat sich besonders in Märkten mit deutlichen Trendmerkmalen wie Gold bewährt. Durch die Anpassung der Parameter kann für verschiedene Marktmerkmale optimiert werden.
Klare RisikokontrollenDer 10-Tage-Rückschlag wird als Ausstiegssignal verwendet, um einen klaren Stop-Loss-Punkt für jeden Handel bereitzustellen und das Risiko für einzelne Geschäfte effektiv zu kontrollieren. Gleichzeitig wird das systematische Risiko durch die Einstellung des maximalen Risikoprozentsatzes kontrolliert.
Obwohl diese Strategie viele Vorteile hat, gibt es folgende potenzielle Risiken:
Falsche DurchbruchgefahrIn einem schwankenden Markt können Preise häufig Höhen/Tiefs überschreiten, aber dann schnell zurückgehen, was zu fortlaufenden Verlusten führt. Der Mangel an einem Mechanismus, um falsche Durchbrüche zu filtern, kann in einem nicht-trendenden Markt zu mehr unwirksamen Signalen führen.
Die Risiken der Aktienanlage werden erhöhtDie Pyramiden-Positionierung ist sehr effektiv, wenn der Trend anhält, aber wenn der Trend plötzlich umkehrt, können mehrere Einheiten zu großen Verlusten führen. Obwohl die Strategie die Bedingungen für den Ausstieg festgelegt hat, können bei einer starken Umkehr große Verluste verursacht werden.
ParameterempfindlichkeitDie Strategieleistung ist stark von den verschiedenen Parameter-Einstellungen abhängig (Zugangs- und Ausstiegs-Zyklen, ATR-Zyklen, Aufnahmeintervalle usw.). Unterschiedliche Marktumgebungen können unterschiedliche Kombinationen von Parametern erfordern, und feste Parameter können zu instabilen Leistungen führen.
LiquiditätsrisikenIn weniger liquiden Märkten kann ein hoher Anteil an Aktienpositionen zu einem Anstieg der Schlupfpunkte oder zu Schwierigkeiten führen, die erwarteten Preise zu erzielen, was die tatsächliche Ausführung beeinträchtigt. Es gibt keine Abwicklungsmechanismen für Liquiditätsprobleme im Code.
Systemische RisikenAls reine Trend-Tracking-Strategie kann es während allgemeiner Marktrückgänge oder starker Schwankungen zu einer hohen Relevanz zu anderen Trend-Strategien führen, was eine Diversifizierungsschutz-Strategie erschwert.
BerechnungspräzisionDie Funktion math.floor wird im Code verwendet, um die gesamte Position nach unten zu berechnen, was dazu führen kann, dass die Positionen in kleinen Konten zu klein sind oder nicht gehandelt werden können. Gleichzeitig kann eine falsche Einstellung der Punktwerte zu einer falschen Positionsberechnung führen.
Um diese Risiken abzudecken, können Risikokontrollen durch die Hinzufügung von Trendfiltern, die Einstellung von Maximalpositionsbeschränkungen, die Optimierung von Aufnahmevorschriften und die Erhöhung der Volatilitätsanpassungsmechanismen in Betracht gezogen werden.
Auf der Grundlage der Code-Analyse gibt es einige Optimierungsmöglichkeiten für diese Strategie:
Trendfilter hinzufügenDie aktuelle Strategie basiert ausschließlich auf Preis-Breakouts und ist sehr anfällig für False Breakouts. Sie kann Trendindikatoren (wie beispielsweise Moving Averages, ADX, etc.) als Filterbedingungen hinzufügen und nur dann handeln, wenn die Richtung der Tendenz übereinstimmt, um Verlustgeschäfte in einem wackligen Markt zu reduzieren.
Optimierung der AufschlagregelnDie bestehenden Anlagen sind relativ einfach, und es kann in Betracht gezogen werden, eine rückläufige Anlagerequenz einzuführen (mit einer schrittweisen Verringerung der nachfolgenden Anlagereinheiten) oder eine Begrenzung der maximalen Anzahl der Anlagen festzulegen, um die Erfordernisse der Erweiterung der Erträge und der Risikokontrolle auszugleichen.
Anpassung der dynamischen ParameterEintritts-/Austrittszyklen und Positionspausen können dynamisch angepasst werden, basierend auf der Marktvolatilität oder der Trendstärke. Zum Beispiel kann die Eintritts-/Austrittszyklen in hochvolatilen Märkten verlängert und die Ausstiegszyklen in niedrigvolatilen Märkten verkürzt werden, um die Strategie anpassungsfähiger zu machen.
Filterzeit erhöhenDas Unternehmen hat sich darauf eingestellt, den Handel zu filtern, um wichtige Wirtschaftsdaten zu vermeiden und die Gefahr von außergewöhnlichen Schwankungen zu verringern.
Mehrfache ZeitrahmenbestätigungTrendrichtung in Kombination mit längeren Zeitzyklen als Handelsfilterbedingungen, z. B. Handel nur dann, wenn die Tageslinie mit der 4-Stunden-Trendrichtung übereinstimmt, verbessert die Signalqualität.
Optimierung der KapitalverwaltungEs können komplexere Modelle für die Vermögensverwaltung eingeführt werden, wie die Kelly-Formel oder die optimale f-Wert-Methode, um die Kapitalwachstumskurve weiter zu optimieren und das Risiko auf die erwartete Gewinn- und Gewinn-/Verlust-Dynamik anzupassen.
Erhöhung der BremssperreDie derzeitige Strategie basiert ausschließlich auf einem Ausgang, der auf einem rückwärtsbrechenden Ausgang basiert. Es kann in Erwägung gezogen werden, einen gewissen Gewinnschließmechanismus hinzuzufügen, z. B. die Ausgleichung von Positionen bei Erreichen bestimmter Gewinnziele, wobei Trendfang und Gewinnschutz berücksichtigt werden.
Diese Optimierungsrichtungen können die Stabilität und Profitabilität der Strategie, insbesondere die Anpassungsfähigkeit in verschiedenen Marktumgebungen, wirksam verbessern.
Das Doppel-Zyklus-Volatilitäts-Adjustment-Breakout-Trading-System ist eine vollständige Quantifizierungs-Trading-Strategie, die auf den Hafen-Trading-Regeln basiert und mehrere Quantifizierungs-Trading-Techniken wie Breakout-Eintritt, Volatilitäts-Positionsmanagement, Pyramiden-Haufen und Anpassungszyklen kombiniert. Die Strategie greift durch Preis-Breakouts in den Trend ein, nutzt die Risikolockage der Volatilität, und maximiert den Trendgewinn durch Pyramiden-Haufen.
Der Kernwert der Strategie liegt in der umfassenden Systemgestaltung, die Ein- und Ausstieg, Positionsmanagement und Risikokontrollen umfasst. Sie bildet ein eigenständiges Handelssystem. Insbesondere die Volatilitätsanpassung der Positionsmechanismen und die zweijährige Anpassungsentwicklung ermöglichen es der Strategie, in verschiedenen Marktumgebungen relativ stabil zu funktionieren.
Als eine Trend-Tracking-Strategie kann sie jedoch in einem wackligen Markt schlecht abschneiden und muss verbessert werden, z. B. durch die Hinzufügung von Trendfiltern, die Optimierung von Aufstockungsregeln und die Anpassung der dynamischen Parameter. Gleichzeitig ist die Strategie als Teil eines Portfolios geeignet, um in Kombination mit anderen Arten von Strategien (z. B. der Mean Return-Strategie) eine glattere Gewinnkurve zu erzielen.
Insgesamt handelt es sich um eine quantitative Handelsstrategie, die vernünftig und logisch konzipiert ist und eine gute theoretische Grundlage und praktische Wert hat. Mit geeigneten Parameteroptimierungen und Ergänzungsmechanismen hat die Strategie das Potenzial, in einer Vielzahl von Marktumgebungen stabile Erträge zu erzielen.
/*backtest
start: 2024-06-16 00:00:00
end: 2025-06-15 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
//策略声明和基础设置
strategy("Turtle Trading System (Full Version)", overlay=true, pyramiding=5)
//风险控制参数
riskPercent = input.float(0.5, title="每笔交易风险占资金百分比", minval=0.1, maxval=5.0, step=0.1)
pointValue = input.float(1.0, title="点值($/点)")
//入场周期参数
entryPeriod1 = input.int(20, title="系统1入场周期")
entryPeriod2 = input.int(55, title="系统2入场周期(亏损后)")
//出场和波动性参数
exitPeriod = input.int(10, title="出场周期")
nPeriod = input.int(20, title="N周期(ATR)")
pyramidSpacing = input.float(0.5, title="每N x ...添加单位", step=0.1)
//波动性指标计算
N = ta.atr(nPeriod)//计算ATR作为市场波动性的量化标准
//系统1入场通道计算(20周期)
entryHigh1 = ta.highest(high, entryPeriod1)//计算20周期内最高价作为做多突破位
entryLow1 = ta.lowest(low, entryPeriod1)//计算20周期内最低价作为做空突破位
//系统2入场通道计算(55周期)
entryHigh2 = ta.highest(high, entryPeriod2)//计算55周期内最高价作为保守做多突破位
entryLow2 = ta.lowest(low, entryPeriod2)//计算55周期内最低价作为保守做空突破位
//出场通道计算(10周期)
exitLong = ta.lowest(low, exitPeriod)//计算10周期内最低价作为多头出场位
exitShort = ta.highest(high, exitPeriod)//计算10周期内最高价作为空头出场位
//交易状态跟踪变量
var bool lastLongLoss = false//记录上次多头交易是否亏损
var bool lastShortLoss = false//记录上次空头交易是否亏损
var float lastLongEntryPrice = na//记录上次多头入场价格
var float lastShortEntryPrice = na//记录上次空头入场价格
//账户权益和风险计算
equity = strategy.equity//获取当前账户总权益
riskDollars = equity * (riskPercent / 100)//计算每笔交易允许的风险金额
unitSize = riskDollars / (N * pointValue)//基于ATR计算标准头寸规模
positionSize = math.round(unitSize, 3)//设定最终头寸大小
//入场信号生成逻辑
useSystem1Long = close > entryHigh1[1]//系统1多头入场条件
useSystem2Long = lastLongLoss and close > entryHigh2[1]//系统2多头入场条件(仅在上次亏损后)
useSystem1Short = close < entryLow1[1]//系统1空头入场条件
useSystem2Short = lastShortLoss and close < entryLow2[1]//系统2空头入场条件(仅在上次亏损后)
//金字塔加仓条件
canAddLong = strategy.opentrades > 0 and strategy.position_size > 0 and close >= lastLongEntryPrice + (pyramidSpacing * N)
//多头加仓条件
canAddShort = strategy.opentrades > 0 and strategy.position_size < 0 and close <= lastShortEntryPrice - (pyramidSpacing * N)
//空头加仓条件
//出场信号生成
longExit = close < exitLong//多头出场条件
shortExit = close > exitShort//空头出场条件
//多头入场执行
if (useSystem1Long or useSystem2Long)
strategy.entry("Long", strategy.long, qty=positionSize)//执行多头开仓
lastLongEntryPrice := close//记录多头入场价格作为加仓基准
lastLongLoss := false//重置多头亏损状态
//空头入场执行
if (useSystem1Short or useSystem2Short)
strategy.entry("Short", strategy.short, qty=positionSize)//执行空头开仓
lastShortEntryPrice := close//记录空头入场价格作为加仓基准
lastShortLoss := false//重置空头亏损状态
//多头加仓执行
if (canAddLong)
strategy.entry("Long Add", strategy.long, qty=positionSize)//执行多头加仓
lastLongEntryPrice := close//更新多头入场价格基准
//空头加仓执行
if (canAddShort)
strategy.entry("Short Add", strategy.short, qty=positionSize)//执行空头加仓
lastShortEntryPrice := close//更新空头入场价格基准
//多头出场执行
if (longExit)
strategy.close("Long")//平掉初始多头头寸
strategy.close("Long Add")//平掉所有多头加仓头寸
lastLongLoss := close < lastLongEntryPrice//根据出场价格更新亏损状态
//空头出场执行
if (shortExit)
strategy.close("Short")//平掉初始空头头寸
strategy.close("Short Add")//平掉所有空头加仓头寸
lastShortLoss := close > lastShortEntryPrice//根据出场价格更新亏损状态
//系统1入场信号可视化
plot(entryHigh1, title="20周期高点", color=color.green)//绘制系统1多头入场线
plot(entryLow1, title="20周期低点", color=color.red)//绘制系统1空头入场线
//系统2入场信号可视化
plot(entryHigh2, title="55周期高点", color=color.lime, linewidth=1)//绘制系统2多头入场线
plot(entryLow2, title="55周期低点", color=color.maroon, linewidth=1)//绘制系统2空头入场线
//出场信号可视化
plot(exitLong, title="10周期低点(多头出场)", color=color.orange)//绘制多头出场信号线
plot(exitShort, title="10周期高点(空头出场)", color=color.blue)//绘制空头出场信号线