Die Ressourcen sind geladen. Beförderung...

Ichimoku Cloud Quant Scalping-Strategie

Schriftsteller:ChaoZhang, Datum: 21.12.2023 11:13:15
Tags:

img

Übersicht

Die Ichimoku Cloud Quant Scalping Strategie ist eine kurzfristige quantitative Strategie, die Ichimoku Cloud und den Average Directional Index (ADX) integriert.

Strategie Logik

Die Strategie besteht aus zwei Hauptbestandteilen:

  1. Ichimoku-Wolke, um die Trendrichtung zu beurteilen.

    • Umrechnungslinie: Mittelkurs der letzten sieben Perioden
    • Basislinie: Mittelkurs der letzten 26 Perioden
    • Leading Span A: Mittelpunkt der Umwandlungslinie und der Basislinie
    • Leading Span B: Mittelkurs der letzten 52 Perioden

    Der Preis über der Wolke zeigt einen Aufwärtstrend an, während unterhalb ein Abwärtstrend bedeutet.

  2. ADX zum Filtern von nicht-trendigen Märkten

    Nur wenn der ADX größer als 20 ist, was auf einen Trendmarkt hindeutet.

Handelsregeln:

  • Long Entry: Preisschwankungen über die Umrechnungslinie und ADX>20
  • Kurzer Einstieg: Preisbruch unterhalb der Umrechnungslinie und ADX>20
  • Stop Loss: 150 Ticks
  • Gewinn nehmen: 200 Ticks

Analyse der Vorteile

Die Vorteile dieser Strategie:

  1. Ichimoku Cloud kann die Trendrichtung und die Wendepunkte genau bestimmen. ADX filtert den Markt, um einen falschen Ausbruch zu verhindern.

  2. 150 Tick-Stop-Loss-Limits pro Handel.

  3. Hoher Gewinnfaktor. 200 Ticks nehmen Gewinn gegen 150 Ticks Stop-Loss gibt einen Gewinnfaktor von 1,33, leicht zu gewinnen Gewinne.

  4. Die Handelsfrequenz sollte angemessen sein, und nur dann, wenn ein Trend auftritt, kann ein Überhandel verhindert werden.

Risikoanalyse

Die Risiken sind:

  1. Trendbestimmungsfehlerrisiko. Fehlsignal, wenn Ichimoku Cloud eine Trendumkehr nicht erkennt. Kann Parameter optimieren, um die Genauigkeit zu verbessern.

  2. Der Stop-Loss kann während eines schnellen Marktes durchdrungen werden.

  3. Übernacht- und Pre-Market-Handelsrisiko. Standard-Einstellung erlaubt nur Tageshandel. Urteil kann während längerer Stunden scheitern. Kann 24 Stunden Handel aktivieren oder Strategien für längere Sitzungen anpassen.

Optimierungsrichtlinien

Die möglichen Optimierungsrichtungen:

  1. Parameter-Tuning der Ichimoku Cloud, um die optimale Einstellung zu finden.

  2. ADX-Parameter und Schwellenoptimierung zur Bestimmung der besten Werte.

  3. Gewinnziel und Optimierung des Stop-Loss auf der Grundlage historischer Daten.

  4. Stopp-Loss verfolgen, um dem Trend besser zu folgen.

  5. Zusätzliche Indikatoren wie MACD und KD, um die Trendbestimmung zu unterstützen.

  6. Adaptive Optimierung für verschiedene Produkte.

Schlussfolgerung

Die Ichimoku Cloud Quant Scalping Strategie integriert die Vorteile von Ichimoku Cloud und ADX, um Trendumkehrpunkte genau zu bestimmen und Bereichsgebundene Märkte auszufiltern. Sie hat einen hohen Gewinnfaktor, einen kontrollierbaren Drawdown und eignet sich zum Scalping entlang des Trends. Weitere Verbesserungen der Parameter, Stop Loss, Hilfsindikatoren können die Stabilität und Rentabilität verbessern.


/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]Spot/Binary Scalper V0', shorttitle='IC', overlay=true, initial_capital=100000, currency=currency.USD)
//  ||  Adapted from:
//  ||      http://www.binaryoptionsedge.com/topic/1414-ta-spot-scalping-it-works-damn-good/?hl=singh

//  ||  Ichimoku cloud:
conversionPeriods = input(title='Conversion Periods:',  defval=7, minval=1),
basePeriods = 26//input(title='Base Periods',  defval=26, minval=1)
laggingSpan2Periods = 52//input(title='Lagging Span:',  defval=52, minval=1),
displacement = 26//input(title='Displacement:',  defval=26, minval=1)

f_donchian(_len) => avg(lowest(_len), highest(_len))

f_ichimoku_cloud(_conversion_periods, _base_periods, _lagging_span)=>
    _conversion_line = f_donchian(_conversion_periods)
    _base_line = f_donchian(_base_periods)
    _lead_line1 = avg(_conversion_line, _base_line)
    _lead_line2 = f_donchian(_lagging_span)
    [_conversion_line, _base_line, _lead_line1, _lead_line2]

[conversionLine, baseLine, leadLine1, leadLine2] = f_ichimoku_cloud(conversionPeriods, basePeriods, laggingSpan2Periods)

//ps0 = plot(title='A', series=leadLine1, color=green, linewidth=2)
//ps1 = plot(title='B', series=leadLine2, color=red, linewidth=2)
//fill(title='AB', plot1=ps0, plot2=ps1, color=blue, transp=80)
//plot(title='Base', series=baseLine, color=blue, linewidth=1, offset=displacement)
plot(title='Conversion', series=conversionLine, color=blue, linewidth=1)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  ADX
len = input(title="Length",  defval=14)
th = input(title="threshold",  defval=20)

TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  Trade session:
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  Strategy:
trade_size = input(title='Trade Size:',  defval=1)
stop_loss_in_ticks = input(title='Stop Loss in ticks:',  defval=150)
take_profit_in_ticks = input(title='Take Profit in ticks:',  defval=200)

buy_icloud_signal = open < conversionLine and close > conversionLine
buy_adx_signal = DIPlus > 20
buy_signal = istradingsession and buy_icloud_signal and buy_adx_signal

sel_icloud_signal = open > conversionLine and close < conversionLine
sel_adx_signal = DIMinus > 20
sel_signal = istradingsession and sel_icloud_signal and sel_adx_signal


strategy.order('buy', long=true, qty=trade_size, comment='buy', when=buy_signal)
strategy.order('sel', long=false, qty=trade_size, comment='sel', when=sel_signal)

strategy.exit('exit buy', from_entry='buy', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)
strategy.exit('exit sel', from_entry='sel', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)


Mehr