Diese Strategie verwendet das Doppel-Grenzen-System, um nach potenziellen Durchbruchsmöglichkeiten in bestimmten Aktien oder Kryptowährungen zu suchen. Die Grundprinzip ist, Aktien oder Kryptowährungen zu kaufen, wenn die kurzfristige Grenze von der langfristigen unterhalb zurückgeht.
Die Strategie nutzt einen einfachen Moving Average (SMA) aus zwei verschiedenen Perioden als Handelssignal. Der erste SMA-Zyklus ist länger und repräsentiert die allgemeine Trendrichtung. Der zweite SMA-Zyklus ist kürzer und dient dazu, kurzfristige Preisbewegungen zu erfassen.
Wenn der kurzfristige SMA den langfristigen SMA von unten durchzieht, bedeutet dies, dass der Preis in einer insgesamt steigenden Tendenz ist, und die Strategie eröffnet daher mehrere Positionen. Wenn der Preis sinkt, wird der langfristige SMA erneut getestet, was das Ende des kurzfristigen Pullbacks anzeigt, und die Strategie berücksichtigt den Stop-Loss oder den Gewinn, um die Position zu schließen.
Die Strategie enthält außerdem die Bedingungen für den Überverkauf und den Überkauf, um den Handel unter extremen Umständen zu vermeiden. Die Position wird nur dann eröffnet, wenn gleichzeitig die Bedingungen für die Überschneidung und die angemessene Bewertung erfüllt sind.
Die Strategie kann noch weiter optimiert werden:
Diese Strategie integriert die Vorteile von Trend-Tracking und Kehrhandel und nutzt die doppelte Gleichgewicht-System, um Gelegenheiten zu beurteilen. Gleichzeitig sind bestimmte Überkauf-Überverkauf-Bedingungen eingebaut, um unnötige Positionen zu vermeiden.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2 = (ma2/ma1-1) < too_deep
too_thin2 = (ma2/ma1-1) > too_thin
// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na
// Entry and close orders
if buy_condition
strategy.entry('Long',strategy.long)
if buy_condition[1]
buy_price := open
if close_condition1 or close_condition2
strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
buy_price := na
plot(ma1,color = color.blue)
plot(ma2,color = color.orange)