Стратегия автономного скальпера Buy-Swing на основе Stochastic RSI и EMA


Дата создания: 2023-10-31 11:34:47 Последнее изменение: 2023-10-31 11:34:47
Копировать: 0 Количество просмотров: 808
1
Подписаться
1617
Подписчики

Стратегия автономного скальпера Buy-Swing на основе Stochastic RSI и EMA

Обзор

Стратегия направлена на реализацию стратегии Scalper, которая заключается в самостоятельном покупке и хранении валюты на основе случайных индикаторов RSI и EMA. Она применяется к 5-минутным K-линиям и оптимизирована для BTC. Цель стратегии - держать как можно больше валют, когда они находятся в поперечном положении или не падают сильно.

Стратегический принцип

Эта стратегия использует RSI, чтобы определить, находится ли он в зоне перекупа или перепродажи, и в сочетании с K- и D-значениями случайных RSI, чтобы дать сигнал о покупке и продаже.

Продажа рассматривается как перепродажа, когда K-линия случайного RSI находится ниже 20 и создает сигнал к покупке, когда K-линия больше D-линии. Продажа определяется в соответствии с тремя условиями: 1) переворачивание EMA после повышения цены более чем на 1%; 2) переворачивание K-линии случайного RSI ниже D-линии; 3) стоп-цены, достигающие 98.5% от цены входа.

Кроме того, когда краткосрочная EMA переворачивается вниз после роста, это также рассматривается как сигнал к продаже.

Стратегические преимущества

  • Использование случайного RSI-индиката для определения момента покупки более надежно, и может эффективно отфильтровывать ложные прорывы.
  • В сочетании с показателями EMA можно лучше определить, когда изменится тенденция.
  • Применение стоп-лосса может эффективно контролировать убытки.
  • Владение как можно большим количеством монет позволяет снизить частоту сделок, а также комиссионные.

Стратегический риск

  • Возможность ложного сигнала RSI. Для оптимизации RSI параметры могут быть адаптированы.
  • Снижение цены стоп-лосса может привести к увеличению убытков. Стоп-лосса может быть скорректирован соответствующим образом.
  • Неправильно настроенные параметры EMA могут пропустить время изменения тренда. Можно тестировать параметры для разных периодов EMA.

Направление оптимизации

  • Тестирование различных RSI и случайных RSI параметров, чтобы найти оптимальную комбинацию параметров
  • Попробуйте различные степени остановки, чтобы сбалансировать убытки и удержать прибыль
  • Тестирование длинно- и короткопериодных комбинаций ЭМА для определения наилучших параметров изменения тренда
  • Можно рассмотреть возможность добавления других индикаторов для повышения точности определения времени покупки и продажи

Подвести итог

Стратегия объединяет преимущества нескольких индикаторов, таких как случайный RSI и EMA, используя более стабильный метод определения времени покупки и продажи. С помощью оптимизации параметров и управления рисками можно еще больше повысить доходность и стабильность стратегии. В целом, логика стратегии обоснована и заслуживает проверки и оптимизации в реальном мире.

Исходный код стратегии
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Stochastic RSI W Auto Buy Scalper Scirpt III ", shorttitle="Stoch RSI_III", format=format.price, precision=2)
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)
plot(k, "K", color=#2962FF)
plot(d, "D", color=#FF6D00)
h0 = hline(80, "Upper Band", color=#787B86)
hline(50, "Middle Band", color=color.new(#787B86, 50))
h1 = hline(20, "Lower Band", color=#787B86)

longStopLoss  = strategy.opentrades.entry_price(0)* (.985)

stochDropping = ta.falling(k,2)
shortSma = ta.sma(hlc3,12)
shorterSma = ta.sma(hlc3,3)
plot(shortSma[3])

shortSmaFlip = (ta.change(shortSma,3)>0) and ta.falling(hlc3,1)
shorterSmaFlip = (ta.change(shorterSma,2)>0) and ta.falling(hlc3,1)
messageSellText ='"type": "sell", "symbol": "BTCUSD", "marketPosition": "{{strategy.market_position}}"'

messageBuyText ='"type": "buy", "symbol": "BTCUSD", "marketPosition": {{strategy.market_position}}"'

fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")

strategy.entry("Tech", strategy.long, when=(strategy.position_size <= 0 and k<17 and k>d),alert_message=messageBuyText)
//original: strategy.close("TL", when=(strategy.position_size >= 0 and (k>90 and k<d)))

takeProfit = hlc3 > strategy.opentrades.entry_price(0)*1.01
//longStopLoss  = strategy.opentrades.entry_price(0)* (.995)

strategy.close("Tech", when=(strategy.position_size >= 0 and (k>90 and k<d and stochDropping)) or close<longStopLoss, comment="rsi or Stop sell",alert_message=messageSellText)
//strategy.close("Tech", when=(strategy.position_size >= 0 and close<longStopLoss), comment="stopLoss sell",alert_message=messageSellText)

strategy.close("Tech", when=(shortSmaFlip and k>20 and takeProfit),comment="Sma after profit",alert_message=messageSellText)