Эта стратегия в основном сочетает в себе 5-дневный индикатор RSI и 200-дневную скользящую среднюю для формирования сигналов решения о торговле, которая принадлежит к стратегии комбинации технических индикаторов. Его основной принцип торговли заключается в следующем: когда цена достигает зоны перекупа/перепродажи, она сигнализирует о продаже; когда цена падает до зоны перепродажи, она сигнализирует о покупке.
Эта стратегия в основном сочетает в себе 5-дневный индикатор RSI и 200-дневную скользящую среднюю для оценки перекупленной/перепроданной зоны, где цены идут, и формирует торговые решения:
5-дневный индикатор RSI определяет зону перекупки/перепродажи, в которой цены идут. Линия перекупки устанавливается на 72 и зона перепродажи составляет 30. Когда индикатор RSI проходит через 30 сверху вниз, генерируется сигнал покупки; когда индикатор RSI падает сверху вниз ниже 72, генерируется сигнал продажи.
200-дневная скользящая средняя определяет направление средне- и долгосрочной тенденции. Когда цена ниже 200-дневной скользящей средней, это нисходящая фаза цены; когда цена выше 200-дневной скользящей средней, это восходящая фаза цены.
Комбинируя суждение 1 и 2, эта стратегия продает, когда 5-дневный индикатор RSI перекуплен и опускается ниже 72, и покупает, когда 5-дневный RSI опускается ниже 30 и цена ниже 200-дневной скользящей средней.
Сигнал стратегии является относительно ясным, используя индикатор RSI для определения сигнала перекупленности/перепроданности по зоне суждения.
200-дневная скользящая средняя определяет направление основного тренда, чтобы избежать противоположных операций.
Максимальное количество позиций может быть установлено для контроля рисков.
Стратегия имеет большое пространство для оптимизации параметров, регулируемых параметров RSI и параметров скользящей средней.
Относительно небольшой риск ретраксера может эффективно контролировать максимальный ретраксер стратегии.
При использовании только показателей RSI и скользящей средней, сигнал стратегии может быть нестабильным, с риском длительных и коротких потерь на волатильных рынках.
Необходимо оптимизировать и протестировать параметры RSI и скользящие средние параметры для достижения лучших результатов стратегии.
Другие индикаторы или модели могут быть введены для оптимизации сигнала стратегии, такие как внедрение индикаторов волатильности, суждения машинного обучения и т. Д.
Используйте больше комбинаций индикаторов для суждения, таких как MACD, KD, индикаторы волатильности и т.д.
Увеличьте модели машинного обучения, такие как LSTM для оценки стабильности торговых сигналов.
Увеличить количественные факторы, такие как изменения объема торговли, направления потока капитала и другие оценки факторов капитала.
Оптимизируйте параметры стратегии, такие как параметры RSI, параметры скользящей средней и т.д.
Оптимизировать механизмы стоп-лосса, такие как перемещение стоп-лосса, время стоп-лосса и т.д.
Эта стратегия в основном использует комбинацию 5-дневного индикатора RSI и 200-дневного скользящего среднего показателя для оценки перекупленной/перепроданной области цен и формирования торговых сигналов. Она относится к стратегии комбинации технических индикаторов. Сигнал стратегии относительно ясен, а максимальный риск ретрекшенса относительно мал. Но он может быть дополнительно оптимизирован с помощью комбинаций нескольких индикаторов и суждений машинного обучения для улучшения результатов стратегии.
/*backtest start: 2024-01-24 00:00:00 end: 2024-01-31 00:00:00 period: 3m basePeriod: 1m 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/ // ©chewyScripts. //@version=5 strategy("96er RSI+200EMA Strategy + Alerts", overlay=true) // This works best on a small account $100, with 50% of equity and up to 10 max open trades. // 96% Profitable, turns $100 into $350 in 1 month. very few losses. super happy with it. // So far it triples the account on a 1m chart in 1 month back testing on the SEI-USD pair. // I did not test on FX pairs or other instruments. // had some issues with the inputs not working so had to hard code some, also the lastClose var sometimes breaks and starts following every candle, not sure why. in_r1 = input.int(5,"5 day input or RSI1") in_openOrders = input.int(3,"max open orders") in_lowerRSI = input.int(30,"RSI Lower") in_upperRSI = input.int(72,"RSI Upper ") in_emaperiod = input.int(200,"EMA Period") in_buybreakout = input.int(50,"Buy breakout range") in_buyTP = input.float(1.05,"Buy TP: 1+TP %, .05 seems to work well.") in_sellTP = input.float(0.9850, "Sell TP: 1-TP%. .025 seems to work well. ") simple int rsi5 = in_r1 // 3 rsi strategy , when all of them are overbought we sell, and vice versa rsi7 = ta.rsi(close,rsi5) lastClose = request.security(syminfo.tickerid, "D", close, lookahead = barmerge.lookahead_on) rsi3 = ta.rsi(close[5],rsi5) ma = ta.ema(close,in_emaperiod) plot(rsi7,"5 Day RSI",color.red) plot(lastClose,"Yesterdays Close",color.green) plot(rsi3,"Previous 5th candles RSI",color.purple) // sell condition //sell = ta.crossunder(rsi7,70) and ta.crossunder(rsi14,70) and ta.crossunder(rsi21,70) //buy condition //buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and rsi3 <= in_upperRSI and strategy.opentrades < in_openOrders //sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and rsi3 >= in_lowerRSI3 and strategy.opentrades < in_openOrders buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and close < lastClose and strategy.opentrades < in_openOrders sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and close > lastClose and strategy.opentrades < in_openOrders var lastBuy = close var lastSell = close if (buy) strategy.entry("BUY", strategy.long) lastBuy := close alert("Buy") if ((close >= lastBuy*in_buyTP ) or rsi7 > in_buybreakout and close >= lastClose and (close >= lastClose*in_buyTP or close >= lastBuy*in_buyTP ) ) strategy.close("BUY", "BUY Exit") alert("Buy Exit") if (sell) strategy.entry("SELL", strategy.short) lastSell := close alert("Sell") if ( close < ma and (close <= lastSell*in_sellTP ) or (close < lastClose*in_sellTP) ) strategy.close("SELL", "Sell Exit") alert("Sell Exit")