
Die Binär-Gleichgewichts-Umkehr-Handelsstrategie erzeugt Handelssignale, indem sie einfache Moving Averages für zwei verschiedene Perioden in der kurzfristigen und langfristigen Periode berechnet und auf der Grundlage der Beziehung zwischen dem Preis und dem Moving Average erstellt. Wenn Sie den langfristigen Durchschnitt über dem kurzfristigen Durchschnitt durchbrechen, machen Sie mehr; wenn Sie den langfristigen Durchschnitt unter dem kurzfristigen Durchschnitt durchbrechen, machen Sie weniger.
Die Strategie setzt durch Eingabeparameter einfache Moving Averages mit zwei unterschiedlichen Periodenlängen ein. Kurze Periodenlinien werden als schnelle und lange als langsame bezeichnet. Die schnelle Linie reagiert schneller auf Preisänderungen, um kurzfristige Trends zu erfassen. Die langsame Linie reagiert langsamer auf Preisänderungen, um kurzfristige Marktgeräusche zu filtern und die Hauptrends zu erfassen.
Konkret berechnet die Strategie die beiden Mittellinien mit der Funktion sma () und weist die Berechnungsergebnisse auf xSMA (langsam) und schnelle Linien zurück. Die Strategie berechnet die Mittellinie mit dem Close-Preis. Wenn der Close-Preis die xSMA überschreitet, macht man einen Plus; wenn der Close-Preis die xSMA unterschreitet, macht man einen Minus.
Die Strategie setzt für jeden Handel einen Stop-Loss-Punkt ein und stoppt sofort, wenn der Stop-Loss-Punkt erreicht wird. Gleichzeitig zeigt die Strategie die Beziehung zwischen dem Preis und der langsamen Linie über die Barcolor-Funktion auf der K-Linie an: Wenn es zu viel ist, ist die K-Linie grün; wenn es leer ist, ist die K-Linie rot; wenn es leer ist, ist die K-Linie blau.
Risiken können reduziert werden, indem die Parameter der Durchschnittslinie angepasst, die Stop-Loss-Strategie optimiert, die Zeitbeschränkung aufgehoben oder ein vernünftigerer Handelszeitraum festgelegt wird. Die Kombination anderer Indikatoren kann auch als Filterbedingungen in Betracht gezogen werden, um zu viele falsche Signale zu vermeiden.
Die Strategie ist einfach umzusetzen, ist klar im Kopf und ist für Anfänger geeignet. Sie kann jedoch durch Parameteroptimierung und die Einführung von Hilfsindikatoren verbessert werden, um die Strategie stabiler und zuverlässiger zu machen. Wenn die Strategie verwendet wird, kann sie einen stabilen Gewinn erzielen.
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
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/
// © HPotter
// Simple SMA strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0)
strategy.close_all()
if (UseTPSL)
strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0 and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)