Die Ichimoku Cloud Quant Scalping Strategie ist eine kurzfristige quantitative Strategie, die Ichimoku Cloud und den Average Directional Index (ADX) integriert.
Die Strategie besteht aus zwei Hauptbestandteilen:
Ichimoku-Wolke, um die Trendrichtung zu beurteilen.
Der Preis über der Wolke zeigt einen Aufwärtstrend an, während unterhalb ein Abwärtstrend bedeutet.
ADX zum Filtern von nicht-trendigen Märkten
Nur wenn der ADX größer als 20 ist, was auf einen Trendmarkt hindeutet.
Handelsregeln:
Die Vorteile dieser Strategie:
Ichimoku Cloud kann die Trendrichtung und die Wendepunkte genau bestimmen. ADX filtert den Markt, um einen falschen Ausbruch zu verhindern.
150 Tick-Stop-Loss-Limits pro Handel.
Hoher Gewinnfaktor. 200 Ticks nehmen Gewinn gegen 150 Ticks Stop-Loss gibt einen Gewinnfaktor von 1,33, leicht zu gewinnen Gewinne.
Die Handelsfrequenz sollte angemessen sein, und nur dann, wenn ein Trend auftritt, kann ein Überhandel verhindert werden.
Die Risiken sind:
Trendbestimmungsfehlerrisiko. Fehlsignal, wenn Ichimoku Cloud eine Trendumkehr nicht erkennt. Kann Parameter optimieren, um die Genauigkeit zu verbessern.
Der Stop-Loss kann während eines schnellen Marktes durchdrungen werden.
Ü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.
Die möglichen Optimierungsrichtungen:
Parameter-Tuning der Ichimoku Cloud, um die optimale Einstellung zu finden.
ADX-Parameter und Schwellenoptimierung zur Bestimmung der besten Werte.
Gewinnziel und Optimierung des Stop-Loss auf der Grundlage historischer Daten.
Stopp-Loss verfolgen, um dem Trend besser zu folgen.
Zusätzliche Indikatoren wie MACD und KD, um die Trendbestimmung zu unterstützen.
Adaptive Optimierung für verschiedene Produkte.
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)