Die Strategie nennt sich Quantitative Trading Strategie, bei der der RSI-Indikator mit einem Moving Average kombiniert wird. Die Strategie nutzt den RSI-Indikator und den Moving Average als Handelssignal, um eine quantitative Trading-Strategie zu realisieren, bei der Rückschläge im Trendkontext durchgeführt werden. Die Kernidee besteht darin, Positionen zu eröffnen, wenn ein Rückschlagsignal auftritt, und bei Überkauf und Überverkauf zu stoppen.
Die Strategie verwendet hauptsächlich den RSI-Indikator und den Slow Moving Average, um die Kursentwicklung und den Zeitpunkt der Umkehrung zu bestimmen. Insbesondere berechnet die Strategie zuerst den Fast Moving Average (SMA) und den Slow Moving Average, der ein Kaufsignal erzeugt, wenn der Fast Moving Average den Slow Moving Average überquert.
Die Strategie berechnet den RSI, um zu beurteilen, ob der Aktienpreis überkauft oder überverkauft ist. Bevor die Position eröffnet wird, wird beurteilt, ob der RSI-Indikator normal ist. Wenn der RSI den festgelegten Tiefstand überschreitet, wird die Position aufgeschoben, bis der RSI zurückfällt.
Durch die Kombination von RSI-Indikatoren und Moving Averages können Positionen eröffnet werden, wenn der Aktienpreis ein Umkehrsignal erzeugt; und bei Überkauf und Überverkauf wird ein Stop-Off durchgeführt, um eine quantitative Handelsstrategie zu realisieren, bei der die Umkehrung im Zusammenhang mit dem Aktienpreistrend profitabel ist.
Diese Strategie hat folgende Vorteile:
Die Aktienkurse können bei einer Umkehrung präzise eingehalten werden. Die Verwendung von Moving Average Gold Forks als Kaufsignal und Dead Forks als Verkaufssignal ermöglicht die präzise Erfassung der Umkehrung der Aktienkurse.
Die RSI-Indikatoren beurteilen Überkaufe und Überverkäufe. Sie verhindern die Errichtung von Positionen bei übermäßigen kurzfristigen Aktienpreisschwankungen und verhindern unnötige Verluste.
RSI-Stopps können die Position in einem angemessenen Gewinnbereich halten und das Handelsrisiko effektiv kontrollieren.
Einfache Parameter-Anpassung: SMA-Zyklen, RSI-Parameter usw. können flexibel angepasst werden, um sich an verschiedene Marktumgebungen anzupassen.
Die Kapitalnutzungs-Effizienz ist hoch. Sie können in der Phase der Trendbereinigung häufig handeln und ihre Mittel effizient nutzen.
Die Gefahren dieser Strategie sind:
Gefahr von Tracking Error. Der Moving Average ist ein Trend-Anzeige-Indikator, der etwas zurückliegt, was dazu führen kann, dass der Zeitpunkt für den Start der Position ungenau ist.
Häufige Handelsrisiken. In einem bewegten Umfeld kann es zu häufigen Positionserhebungen kommen.
Parameter-Anpassungsrisiken. Die SMA-Zyklen und RSI-Parameter müssen wiederholt getestet und angepasst werden, um sich an den Markt anzupassen. Unzureichende Einstellungen können die Strategie beeinträchtigen.
Stopprisiken. Fehl eingestellte RSI-Stopps können auch dazu führen, dass Positionen nach einem vorzeitigen Ausstieg oder einem Stopp weiter steigen.
Die Optimierung der Strategie erfolgt wie folgt:
Versuchen Sie, andere Indikatoren wie MACD, Brinline und RSI zu verwenden, um das Signal genauer und zuverlässiger zu machen.
Hinzufügung von Machine-Learning-Algorithmen, die die Parameter automatisch an die historischen Daten anpassen, um das Risiko einer Parameter-Optimierung zu verringern.
Erweiterung der Optimierungsmechanismen für Stoppstrategien, um Stopps intelligenter und anpassungsfähiger für Veränderungen am Markt zu machen.
Optimierung der Positionsmanagement-Strategie, um das Risiko für einzelne Geschäfte durch dynamische Anpassung der Positionsgröße zu verringern.
In Kombination mit Hochfrequenzdaten wird die Frequenz der Strategie erhöht, indem in Echtzeit-Daten auf Tick-Ebene hochfrequente Transaktionen durchgeführt werden.
Insgesamt, die Strategie verwendet RSI-Indikator und Moving Average, um Handelssignale zu erzeugen, um eine quantitative Strategie zu realisieren, die Reverse-Operation während des Trendlaufens durchführt. Im Vergleich zur Verwendung von Moving Average allein, kann die Strategie die RSI-Indikatorentscheidung effektiv verhindern, dass ungünstige Zeitpositionen eröffnet werden, und die Handelsrisiken durch die RSI-Stoppung kontrolliert werden, was die Strategie zu einem gewissen Grad verbessert.
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//1. 做多
// a. RSI在超买区间时不开单,直到RSI回落一点再开单
// b. 已经有多仓,如果RSI超买,则平多获利,当RSI回落一点之后,再次开多,直到有交叉信号反转做空
//2. 做空
// a. RSI在超卖区间时不开单,直到RSI回落一点之后再开多单
// b. 已经有空仓,如果RSI超卖,则平空获利,当RSI回落一点之后,再开空单,直到有交叉信号反转做多
//@version=4
strategy("策略_RSI+移动揉搓线_", overlay=true)
// 输入
fastLength = input(11, minval=1)
slowLength = input(82,minval=1)
length = input(title="长度", type=input.integer, defval=14, minval=1, maxval=100)
hight_rsi = input(title="rsi超过上轨平多获利", type=input.integer, defval=80, minval=1, maxval=100)
low_rsi = input(title="rsi超过下轨平空获利", type=input.integer, defval=20, minval=1, maxval=100)
open_long_rsi_threshold = input(title="rsi低于该阈值时才开多", type=input.integer, defval=75, minval=1, maxval=100)
open_short_rsi_threshold = input(title="rsi高于该阈值时才开空仓", type=input.integer, defval=25, minval=1, maxval=100)
// 均线
sma_fast = sma(close, fastLength)
sma_slow = sma(close, slowLength)
// RSI
rsi = rsi(close, length)
//**********变量*start*******//
var long_f = false // 标记是否是均线交叉多头
var short_f = false // 标记是否是均线交叉空头
var long_open_pending = false // 标记开仓时rsi是否处于超买状态
var short_open_pending = false // 标记开仓时rsi是否处于超卖
var long_rsi_over_buy = false // 标记 多仓时 是否发生超买平多获利
var short_rsi_over_sell = false // 标记 空仓时 是否发生超卖平空获利
//**********逻辑*start*******//
// 买入
longCondition = crossover(sma_fast, sma_slow)
if (longCondition)
short_rsi_over_sell := false // 清空该标记,防止再次开空仓
long_f := true
short_f := false
if (rsi < hight_rsi)
// 并且没有超买
strategy.entry("多", long=strategy.long)
if (rsi > hight_rsi)
// 开仓时发生超买,等待rsi小于hight_rsi
long_open_pending := true
// 卖出
shortCondition = crossunder(sma_fast, sma_slow)
if (shortCondition)
long_rsi_over_buy := false //清空该标记,防止再次开多仓
long_f := false
short_f := true
if (rsi > low_rsi)
strategy.entry("空", long=strategy.short)
if (rsi < low_rsi)
// 开仓时发生超卖,等待rsi大于low_rsi
short_open_pending := true
// 等待RSI合理,买入开仓
if (long_f and long_open_pending and strategy.position_size == 0 and rsi < open_long_rsi_threshold)
strategy.entry("多", long=strategy.long)
long_open_pending := false
// 等待RSI合理,卖出开仓
if (short_f and short_open_pending and strategy.position_size == 0 and rsi > open_short_rsi_threshold)
strategy.entry("空", long=strategy.short)
short_open_pending := false
//RSI止盈(RSI超买平多)
if (strategy.position_size > 0 and long_f and rsi > hight_rsi)
strategy.close_all()
long_rsi_over_buy := true
//RSI止盈(RSI超卖平空)
if (strategy.position_size < 0 and short_f and rsi < low_rsi)
strategy.close_all()
short_rsi_over_sell := true
//RSI止盈之后,再次开多
if (long_f and long_rsi_over_buy and strategy.position_size == 0 and rsi < hight_rsi)
long_rsi_over_buy := false
strategy.entry("多", long=strategy.long)
//RSI止盈之后,再次开空
if (short_f and short_rsi_over_sell and strategy.position_size == 0 and rsi > low_rsi)
short_rsi_over_sell := false
strategy.entry("空", long=strategy.short)
//**********绘图*start*******//
p1 = plot(sma_fast, linewidth=2, color=color.green)
p2 = plot(sma_slow, linewidth=2, color=color.red)
fill(p1, p2, color=color.green)
plot(cross(sma_fast, sma_slow) ? sma_fast : na, style = plot.style_circles, linewidth = 4)
// 绘制rsi线
//plot(rsi, color=color.green, editable=true, style=plot.style_circles, linewidth=2)
// 绘制上下轨
//high_ = hline(80, title="上轨")
//low_ = hline(20, title="下轨")
//fill(high_, low_, transp=80, editable=true, title="背景")