
Эта стратегия называется количественная торговая стратегия RSI в сочетании с движущейся средней. Эта стратегия использует RSI и движущуюся среднюю в качестве торговых сигналов, чтобы реализовать количественную торговую стратегию, которая выполняет обратную операцию в контексте тенденции.
Стратегия использует в основном RSI и медленно движущиеся средние для определения тенденции цен на акции и времени обратного хода. В частности, стратегия сначала рассчитывает быстро движущиеся средние (SMA) и медленно движущиеся средние, которые создают сигнал покупки при прохождении медленно движущихся средних над быстро движущимися средними и сигнал продажи при прохождении медленно движущихся средних ниже быстро движущихся средних.
В то же время, эта стратегия рассчитывает показатель RSI, чтобы определить, находится ли цена акции в состоянии перекупа или перепродажи. Перед открытием позиции, будет определено, нормален ли показатель RSI, если RSI превысит установленный порог, открытие позиции будет приостановлено до тех пор, пока RSI не вернется. Это позволит избежать создания позиции в неблагоприятное время для перекупа.
Позиции могут быть открыты при появлении обратного сигнала в ценах на акции с помощью RSI и движущихся средних. Стоп-стопы могут быть сделаны при перекупке и перепродаже, что позволяет реализовать количественную торговую стратегию, позволяющую получать прибыль от обратных операций в контексте тенденции цен на акции.
Эта стратегия имеет следующие преимущества:
Можно точно открыть позицию, когда цена акции поменялась. Используйте движущуюся среднюю линию в качестве сигнала для покупки, мертвую линию в качестве сигнала для продажи, чтобы точно поймать возможность помены тенденции цены акций.
Избегайте открытия позиций в неблагоприятное время. Используя показатель RSI для определения перекупа и перепродажи, вы можете эффективно предотвратить создание позиций при чрезмерном краткосрочном колебании цен на акции и избежать ненужных потери.
RSI-остановка позволяет держать позиции в пределах разумной прибыльности и эффективно контролировать риск торговли.
Легкость регулировки параметров. Периоды SMA, параметры RSI и т. Д. могут быть гибко скорректированы, чтобы адаптироваться к различным рыночным условиям.
Высокая эффективность использования капитала. Можно совершать частые сделки во время сбора тенденций и потрясений, эффективно использовать средства.
Также существуют риски:
Риск отслеживания ошибок. Существует определенная задержка в использовании движущейся средней в качестве индикатора тренда, что может привести к неточному времени открытия позиции.
Частые торговые риски. В условиях шока может привести к слишком частому открытию и закрытию позиций.
Параметры SMA и RSI требуют повторного тестирования и корректировки, чтобы адаптироваться к рынку. Неправильная настройка может повлиять на эффективность стратегии.
Неправильно настроенная остановка RSI также может привести к тому, что позиция будет расти после преждевременного выхода или после остановки.
Стратегия направлена на оптимизацию следующего:
Попробуйте использовать другие индикаторы, такие как MACD, линию Блинна, в сочетании с RSI, чтобы сделать сигнал более точным и надежным.
Добавление алгоритмов машинного обучения, позволяющих автоматически корректировать параметры на основе исторических данных, снижая риск корректировки параметров.
Добавление механизмов оптимизации стратегии сдерживания, чтобы сделать сдерживание более интеллектуальным и адаптированным к изменениям рынка.
Оптимизация стратегии управления позициями, снижение риска по отдельным сделкам путем динамического регулирования размеров позиций.
Высокочастотная торговля в сочетании с высокочастотными данными, используя реальные данные на уровне тиков, повышает частоту стратегии.
В целом, эта стратегия использует индикатор RSI и движущуюся среднюю для создания торговых сигналов, чтобы реализовать количественную стратегию обратного расчета в процессе движения тренда. По сравнению с использованием движущейся средней, эта стратегия эффективно предотвращает открытие позиции в неблагоприятное время и контролирует торговый риск с помощью RSI Stop, в некоторой степени повышая стабильность стратегии.
/*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="背景")