
Die Strategie berechnet die Länge des Sonnenschatts der K-Linien, um die Richtung des aktuellen Trends zu bestimmen, die Trenderkennung in Verbindung mit dem ATR der mittleren wahren Breite durchzuführen, die Position an den Durchbruchspunkten rückwärts zu eröffnen, die Stop-Loss-Stopps einzurichten und die kurzfristigen Trends zu erfassen.
Die Strategie wird hauptsächlich durch die Berechnung des Verhältnisses zwischen der Länge des Sonnenschatts und der Länge der K-Linie verwendet, um die Richtung des aktuellen Trends zu bestimmen. Wenn die Sonnenschatten zu lang sind, wird dies als Abwärtstrend und wenn die Sonnenschatten zu lang sind, als Aufwärtstrend beurteilt.
Die Logik der Strategie lautet:
Das ist die grundlegende Handelslogik der Strategie, um die Positionen durch die Identifizierung von Trendbrechpunkten rückwärts zu eröffnen und nach dem Setzen eines Stop-Loss-Stopps die Gewinne zu optimieren.
Risiken können durch vernünftige Stop-Loss, Optimierung von Parametern und rechtzeitige Stop-Loss-Kontrolle kontrolliert werden.
Die Strategie kann in folgenden Bereichen optimiert werden:
Durch mehrfache Tests und Optimierungen kann die Wirksamkeit der Strategie maximiert werden.
Im Allgemeinen ist die Strategie eine kurzfristige, effektiv stabilisierte Strategie, die kurzfristige Preisschwankungen nutzt, indem sie Trends erkennt und Risiken kontrolliert. Optimiert, kann sie zu einem wichtigen Teil des quantitativen Handels werden.
/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ondrej17
//@version=4
strategy("longWickstrategy", overlay=true )
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)
// Entries and Exits
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0
strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)
longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na
strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)
plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)
plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)