Bei dieser Strategie handelt es sich um ein Kauf-nur-Handelssystem, das Kaufsignale auf der Grundlage von gleitenden Durchschnitts-Crossovers und dem wöchentlichen Commodity Channel Index (CCI) oder dem wöchentlichen Durchschnitts-Richtungsindex (ADX) erzeugt. Es erzeugt Kaufsignale, wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt überschreitet und wenn der wöchentliche CCI und/oder der wöchentliche ADX bestimmte Bedingungen erfüllen.
Die Strategie ermöglicht auch einen dynamischen Wiedereintritt, was bedeutet, dass sie neue Long-Positionen eröffnen kann, wenn der Preis nach einem Ausgang über die drei gleitenden Durchschnitte geht.
Das Skript definiert die Bedingungen für die Erzeugung von Kaufsignalen und überprüft zwei Bedingungen für ein gültiges Kaufsignal:
Dynamischer Wiedereintritt:Wenn keine aktive Long-Position besteht und der Preis über allen drei gleitenden Durchschnitten liegt, wird eine neue Long-Position eröffnet.
Ausgangszustand:Wenn der Schlusskurs unter den dritten gleitenden Durchschnitt fällt, schließt das Skript die Longposition.
Zu den Vorteilen dieser Strategie gehören:
Zu den Risiken dieser Strategie gehören:
Lösungen:
Diese Strategie kann optimiert werden, indem
Diese dynamische Re-Entry-Buy-Only-Strategie integriert mehrere technische Indikatoren, um den Eintrittszeitpunkt zu bestimmen, und übernimmt ein dynamisches Re-Entry-Design, um Trends in Echtzeit zu verfolgen.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true) // Input Parameters fast_length = input(20, title="Fast Moving Average Length") slow_length = input(30, title="Slow Moving Average Length") third_ma_length = input(100, title="Third Moving Average Length") cci_period = input(14, title="CCI Period for Weekly CCI") use_cci = input(true, title="Use CCI for Entry") use_adx = input(true, title="Use ADX for Entry") adx_length = input(14, title="ADX Length") adx_threshold = input(25, title="ADX Threshold") // Calculate Moving Averages fast_ma = ta.sma(close, fast_length) slow_ma = ta.sma(close, slow_length) third_ma = ta.sma(close, third_ma_length) // Weekly Commodity Channel Index (CCI) with user-defined period weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close, cci_period)) // Weekly Average Directional Index (ADX) dirmov = hlc3 plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0 minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0 trur = ta.rma(ta.tr, adx_length) plusDI = ta.rma(plus, adx_length) / trur * 100 minusDI = ta.rma(minus, adx_length) / trur * 100 sum = plusDI + minusDI DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100 ADX = ta.rma(DX, adx_length) // Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25) cci_condition = use_cci ? (weekly_cci > 100) : false adx_condition = use_adx ? (ADX > adx_threshold) : false long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition) // Exit Condition and Dynamic Re-Entry exit_condition = close < third_ma re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100 // Entry and Exit Signals strategy.entry("Long", strategy.long, when=long_condition) strategy.close("Long", when=exit_condition) // Dynamic Re-Entry and Exit if strategy.position_size == 0 and re_entry_condition strategy.entry("Long", strategy.long) if strategy.position_size > 0 and close < third_ma strategy.close("Long") // Plot Weekly CCI and ADX for reference plot(weekly_cci, title="Weekly CCI", color=color.orange) plot(ADX, title="Weekly ADX", color=color.blue)