
Эта стратегия основана на сравнительно сильных и слабых индикаторах (RSI) для определения перекупа и перепродажи, создание реверсивных позиций, когда RSI достигает зоны перекупа и перепродажи, с целью достижения низких цен. Стратегия проста и эффективна, чтобы получить прибыль, захватывая краткосрочные перекупы и перепродажи на рынке.
Стратегия использует только RSI в качестве сигнала для построения позиции. Сделать больше, когда RSI пересекает установленное низкое значение (задаточный 20) и сделать пустое, когда RSI пересекает установленное высокое значение (задаточный 80). Фиксированный капитал на каждую сделку (задаточный 100 долларов США), в любом случае преследуя только прибыль 1%. Если убыток достигнет 3%, то остановиться.
В частности, основная логика стратегии заключается в следующем:
Как видно, эта стратегия очень проста, механическая, и практически нет места для оптимизации параметров. Она использует чисто математические характеристики индикатора RSI, чтобы получить обратную прибыль от обратного позиционирования в зоне перепродажи.
Самая большая преимущество этой стратегии в том, что она проста и эффективна.
Кроме того, стратегия также устанавливает стоп-стоп-лосс для блокировки прибыли и контроля риска, а также механизм приостановки торговли для снижения частоты торгов. Это позволяет стратегии получать стабильную прибыль с минимальным риском.
Основные риски этой стратегии исходят из:
Когда тренд очень силен, RSI может находиться в длительной зоне перекупа или перепродажи, и у нее мало шансов на обратный ход, и эта стратегия будет трудно прибыльной.
Слишком большая стоп-установка может привести к увеличению убытков. В настоящее время стоп-убыток составляет 3%, может потребоваться корректировка до 1-2%, что является более разумным.
Слишком высокая частота сделок может привести к увеличению прибыли, но следует правильно контролировать частоту открытия позиций.
Фиксированный капитал в размере 100 долларов США за каждое открытие позиции может представлять собой чрезмерную концентрацию риска, которая должна быть оптимизирована в процентах от капитала.
Согласно анализу, данная стратегия может быть оптимизирована в следующих аспектах:
Повышение показателей, определяющих тенденцию, таких как MA, приостановка торговли при неопределенности тенденции.
Оптимизируйте коэффициент остановки убытков, чтобы скорректировать остановку убытков на 1-2% более разумно, остановка может быть настроена на плавающую остановку.
Увеличение ограничения на частоту открытия позиций, например, в течение определенного периода времени допускается открытие позиций только один-два раза.
Измените фиксированный капитал в 100 долларов США на процент от капитала, например, на 1%.
Оптимизация комбинации параметров, таких как циклы RSI, перекуп и перепродажа.
Увеличение контроля над позицией, при увеличении первоначального капитала не увеличивается сумма отдельных сделок.
Оптимизация вышеперечисленных пунктов позволяет эффективно снизить риски торговли и повысить стабильность и надежность стратегии.
Эта стратегия в целом очень проста и прямая, благодаря RSI-индикатору, чтобы получить краткосрочную обратную прибыль. Преимущество заключается в том, что она проста и эффективна, не требует прогнозов, логика торговли ясна, легко отслеживается и проверяется. Однако может быть трудно справиться с тенденцией, существует определенный риск потери.
/*backtest
start: 2023-11-02 00:00:00
end: 2023-11-09 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("rsi超买超卖_回测用", overlay=false, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash)
open_pos = input.int(50000, title = "每次开单资金(usdt)")
rsi_period = input.int(14, title = "rsi周期")
rsi_line = input.float(20.0, title='RSI触发线', step=0.05)
stop_rsi_top_line = input.float(70, title = "顶部rsi止损线")
stop_rsi_bottom_line = input.float(30, title = "底部rsi止损线")
stop_loss_perc = input.float(0.03, title = "止损线")
stop_profit = input.float(0.01, title = "止盈")
loss_stop_trade_k = input.int(24, title = "亏损后x根K线不做交易")
rsiParam = ta.rsi(close, rsi_period)
var int failedTimes = 0
var bool stopTrade = false
// plot(rsiParam)
if stopTrade
failedTimes += 1
if failedTimes == loss_stop_trade_k
failedTimes := 0
stopTrade := false
// 获取当前持仓方向
checkCurrentPosition() =>
strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
curPosition = checkCurrentPosition()
// 当前持仓成本价
position_avg_price = strategy.position_avg_price
// 当前持单, 触达反向的rsi线,清仓
if curPosition > 0 and rsiParam >= stop_rsi_top_line
strategy.close_all(comment = "closebuy")
if curPosition < 0 and rsiParam <= stop_rsi_bottom_line
strategy.close_all(comment = "closesell")
// 止盈止损清仓
if curPosition > 0
// if (position_avg_price - close) / close >= stop_loss_perc
// // 止损
// strategy.close_all(comment = "closebuy")
// stopTrade := true
if (close - position_avg_price) / position_avg_price >= stop_profit
// 止盈
strategy.close_all(comment = "closebuy")
if curPosition < 0
// if (close - position_avg_price) / position_avg_price >= stop_loss_perc
// // 止损
// strategy.close_all(comment = "closesell")
// stopTrade := true
if (position_avg_price - close) / close >= stop_profit
// 止盈
strategy.close_all(comment = "closesell")
a = strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1)
if bar_index == a and strategy.closedtrades.profit(strategy.closedtrades - 1) < 0
stopTrade := true
var float openPrice = 0.0
if rsiParam <= rsi_line and stopTrade == false
strategy.entry("long", strategy.long, open_pos / close, comment = "long")
if curPosition == 0
openPrice := close
strategy.exit("long_stop", "long", limit = openPrice * (1+stop_profit), stop=openPrice * (1-stop_loss_perc), comment = "closebuy")
if rsiParam >= 100 - rsi_line and stopTrade == false
strategy.entry("short", strategy.short, open_pos / close, comment = "short")
if curPosition == 0
openPrice := close
strategy.exit("short_stop", "short", limit = openPrice * (1-stop_profit), stop=openPrice * (1+stop_loss_perc), comment = "closesell")
plot(failedTimes)