
Стратегия определяет точки покупки и продажи через пересечение RSI с его средней линией и относится к стратегии короткой торговли. Стратегия покупает, когда RSI ниже ее средней линии, и продает, когда она выше ее средней линии, и относится к типичной стратегии низкой покупки и высокой продажи.
Это типичная стратегия обратного тренда, которая использует характеристики RSI для определения времени покупки и продажи. Эта стратегия имеет следующие преимущества:
В целом, это простая и практичная стратегия для коротких сделок.
В этой стратегии также есть некоторые риски, о которых следует помнить:
Эти риски могут быть смягчены путем оптимизации параметров, увеличения условий фильтрации и т. д.
Эта стратегия может быть оптимизирована в следующих аспектах:
Повышение эффективности стратегии может быть достигнуто с помощью комбинирования нескольких показателей, управления убытками и оптимизации параметров.
Эта стратегия в целом является очень типичной и практической стратегией торговли короткой линией. Она использует RSI для определения времени покупки и продажи, а также поддерживает фильтрацию равномерной линией. Логика стратегии проста, понятна, параметры регулируются гибко и легко реализуются. Существует определенный рыночный риск, но его можно контролировать путем усовершенствования механизма входа и выхода, оптимизации параметров и т. Д. Если комбинировать больше технических показателей и средств контроля риска, эта стратегия может стать короткой стратегией с относительно стабильной прибылью.
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
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/
// © I11L
//@version=5
strategy("I11L - Meanreverter 4h", overlay=false, pyramiding=3, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash,process_orders_on_close=false, calc_on_every_tick=false)
frequency = input.int(10)
rsiFrequency = input.int(40)
buyZoneDistance = input.int(5)
avgDownATRSum = input.int(3)
useAbsoluteRSIBarrier = input.bool(true)
barrierLevel = 50//input.int(50)
momentumRSI = ta.rsi(close,rsiFrequency)
momentumRSI_slow = ta.sma(momentumRSI,frequency)
isBuy = momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) //and (momentumRSI < barrierLevel or not(useAbsoluteRSIBarrier))
isShort = momentumRSI > momentumRSI_slow*(1+buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))
momentumRSISoftClose = (momentumRSI > momentumRSI_slow) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))
isClose = momentumRSISoftClose
plot(momentumRSI,color=isClose ? color.red : momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) ? color.green : color.white)
plot(momentumRSI_slow,color=color.gray)
plot(barrierLevel,color=useAbsoluteRSIBarrier ? color.white : color.rgb(0,0,0,0))
plot(momentumRSI_slow*(1-buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+(buyZoneDistance*2)/100),color=color.gray)
// plot(strategy.wintrades - strategy.losstrades)
if(isBuy)
strategy.entry("Buy",strategy.long, comment="#"+str.tostring(strategy.opentrades+1))
// if(isShort)
// strategy.entry("Sell",strategy.short, comment="#"+str.tostring(strategy.opentrades+1))
if(isClose)
strategy.exit("Close",limit=close)