Эта стратегия использует 7 индикаторов RSI с различными временными рамками для определения рыночных тенденций и установления позиций сетки для эффективной сетевой торговли, когда индикаторы RSI колеблются.
Стратегия использует 7 индикаторов RSI с различными временными рамками (1 минута, 5 минут, 15 минут, 30 минут, 1 час, 2 часа и 1 день). Когда все 7 индикаторов RSI одновременно ниже линии перекупа, генерируется сигнал покупки. Когда все 7 индикаторов RSI одновременно выше линии перепродажи, генерируется сигнал продажи.
На основе сигналов покупки и продажи 20 ордеров с фиксированными процентными интервалами цены размещаются вокруг текущей цены.
Когда цена достигает одной из цен ордера, ордер выполняется и позиция устанавливается.
Использование нескольких индикаторов позволяет избежать неправильной интерпретации рыночной тенденции.
Показатель RSI надежно определяет уровни перекупленности и перепродажи, избегая покупки максимумов и продажи минимумов.
Постепенное вхождение на плоские рынки позволяет оптимизировать затраты на вход.
Настройки для получения прибыли и остановки убытков помогают управлять рисками и снижают риск потерь во время экстремальных движений.
Резкие движения цен могут проникнуть в сетку. Это можно решить, разумно установив интервалы сетки и добавив маржи.
Стоп-потери, размещенные слишком близко, могут повлечь за собой ненужные расходы на скольжение.
Фильтрация определенных временных рамок RSI может изолировать проблемы.
Различные комбинации параметров и альтернативные логики суждений могут быть проверены для уточнения стратегий входа и выхода.
Включить показатели волатильности для автоматической корректировки интервалов сетки с более широкими интервалами в условиях повышенной волатильности.
Добавление модулей управления капиталом для динамического изменения максимального размера позиций, интервалов сетки и т.д. на основе собственного капитала счета.
Эта стратегия сочетает в себе многочасовые индикаторы RSI для определения рыночных тенденций, эффективно устанавливая сетевые позиции во время рыночных колебаний. Преимущества оптимизации затрат, получения прибыли, сокращения потерь и контроля рисков делают ее подходящей для трейдеров, стремящихся извлечь выгоду из рыночных колебаний, допуская определенные риски.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] args: [["MinLot",0.001,358374]] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © rrolik66 //@version=4 strategy(title="7-RSI strategy", overlay=true) // inputs src = input(close, "Source RSI", type = input.source) bot_res = input(title="Bot period", type=input.resolution, defval="1") srcin_bot = input(ohlc4, "Source Bot", type = input.source) src_bot = security(syminfo.tickerid, bot_res, srcin_bot) tradeDirection = input(title="Trade Direction", type=input.string, options=["Long Bot", "Short Bot"], defval="Long Bot") rsi1_res = input(title="RSI-1 period", type=input.resolution, defval="1", group="indicators") rsi1_Len = input(14, minval=1, title="RSI-1 Length", group="indicators") rsi2_res = input(title="RSI-2 period", type=input.resolution, defval="5", group="indicators") rsi2_Len = input(14, minval=1, title="RSI-2 Length", group="indicators") rsi3_res = input(title="RSI-3 period", type=input.resolution, defval="15", group="indicators") rsi3_Len = input(14, minval=1, title="RSI-3 Length", group="indicators") rsi4_res = input(title="RSI-4 period", type=input.resolution, defval="30", group="indicators") rsi4_Len = input(14, minval=1, title="RSI-4 Length", group="indicators") rsi5_res = input(title="RSI-5 period", type=input.resolution, defval="60", group="indicators") rsi5_Len = input(14, minval=1, title="RSI-5 Length", group="indicators") rsi6_res = input(title="RSI-6 period", type=input.resolution, defval="120", group="indicators") rsi6_Len = input(14, minval=1, title="RSI-6 Length", group="indicators") rsi7_res = input(title="RSI-7 period", type=input.resolution, defval="1D", group="indicators") rsi7_Len = input(14, minval=1, title="RSI-7 Length", group="indicators") longProfitPerc = input(title="Long Bot Take Profit (%)", type=input.float, minval=0.0, step=0.05, defval=0.5, group="Long Bot") * 0.01 st_long_orders = input(title="Long Bot Step orders (%)", type=input.float, minval=0.0, step=0.1, defval=2.0, group="Long Bot") * 0.01 rsi1_low = input(100, title="RSI-1 <", group="Long Bot") rsi2_low = input(100, title="RSI-2 <", group="Long Bot") rsi3_low = input(100, title="RSI-3 <", group="Long Bot") rsi4_low = input(100, title="RSI-4 <", group="Long Bot") rsi5_low = input(100, title="RSI-5 <", group="Long Bot") rsi6_low = input(100, title="RSI-6 <", group="Long Bot") rsi7_low = input(100, title="RSI-7 <", group="Long Bot") shortProfitPerc = input(title="Short Bot Take Profit (%)", type=input.float, minval=0.0, step=0.05, defval=0.5, group="Short Bot") * 0.01 st_short_orders = input(title="Short Bot Step orders (%)", type=input.float, minval=0.0, step=0.1, defval=2.0, group="Short Bot") * 0.01 rsi1_up = input(0, title="RSI-1 >", group="Short Bot") rsi2_up = input(0, title="RSI-2 >", group="Short Bot") rsi3_up = input(0, title="RSI-3 >", group="Short Bot") rsi4_up = input(0, title="RSI-4 >", group="Short Bot") rsi5_up = input(0, title="RSI-5 >", group="Short Bot") rsi6_up = input(0, title="RSI-6 >", group="Short Bot") rsi7_up = input(0, title="RSI-7 >", group="Short Bot") //indicators rsi1 = rsi(src, rsi1_Len) rsi1_sec = security(syminfo.tickerid, rsi1_res, rsi1) rsi2 = rsi(src, rsi2_Len) rsi2_sec = security(syminfo.tickerid, rsi2_res, rsi2) rsi3 = rsi(src, rsi3_Len) rsi3_sec = security(syminfo.tickerid, rsi3_res, rsi3) rsi4 = rsi(src, rsi4_Len) rsi4_sec = security(syminfo.tickerid, rsi4_res, rsi4) rsi5 = rsi(src, rsi5_Len) rsi5_sec = security(syminfo.tickerid, rsi5_res, rsi5) rsi6 = rsi(src, rsi6_Len) rsi6_sec = security(syminfo.tickerid, rsi6_res, rsi6) rsi7 = rsi(src, rsi7_Len) rsi7_sec = security(syminfo.tickerid, rsi7_res, rsi7) //RSI rsi1_up_signal = rsi1_sec > rsi1_up rsi1_low_signal = rsi1_sec < rsi1_low rsi2_up_signal = rsi2_sec > rsi2_up rsi2_low_signal = rsi2_sec < rsi2_low rsi3_up_signal = rsi3_sec > rsi3_up rsi3_low_signal = rsi3_sec < rsi3_low rsi4_up_signal = rsi4_sec > rsi4_up rsi4_low_signal = rsi4_sec < rsi4_low rsi5_up_signal = rsi5_sec > rsi5_up rsi5_low_signal = rsi5_sec < rsi5_low rsi6_up_signal = rsi6_sec > rsi6_up rsi6_low_signal = rsi6_sec < rsi6_low rsi7_up_signal = rsi7_sec > rsi7_up rsi7_low_signal = rsi7_sec < rsi7_low //Buy & Sell Buy = rsi1_low_signal and rsi2_low_signal and rsi3_low_signal and rsi4_low_signal and rsi5_low_signal and rsi6_low_signal and rsi7_low_signal Sell = rsi1_up_signal and rsi2_up_signal and rsi3_up_signal and rsi4_up_signal and rsi5_up_signal and rsi6_up_signal and rsi7_up_signal // input into trading conditions longOK = (tradeDirection == "Long Bot") shortOK = (tradeDirection == "Short Bot") // in entry orders price longEntryPrice1 = src_bot * (1 - (st_long_orders)) longEntryPrice2 = src_bot * (1 - (st_long_orders*2)) longEntryPrice3 = src_bot * (1 - (st_long_orders*3)) longEntryPrice4 = src_bot * (1 - (st_long_orders*4)) longEntryPrice5 = src_bot * (1 - (st_long_orders*5)) longEntryPrice6 = src_bot * (1 - (st_long_orders*6)) longEntryPrice7 = src_bot * (1 - (st_long_orders*7)) longEntryPrice8 = src_bot * (1 - (st_long_orders*8)) longEntryPrice9 = src_bot * (1 - (st_long_orders*9)) longEntryPrice10 = src_bot * (1 - (st_long_orders*10)) longEntryPrice11 = src_bot * (1 - (st_long_orders*11)) longEntryPrice12 = src_bot * (1 - (st_long_orders*12)) longEntryPrice13 = src_bot * (1 - (st_long_orders*13)) longEntryPrice14 = src_bot * (1 - (st_long_orders*14)) longEntryPrice15 = src_bot * (1 - (st_long_orders*15)) longEntryPrice16 = src_bot * (1 - (st_long_orders*16)) longEntryPrice17 = src_bot * (1 - (st_long_orders*17)) longEntryPrice18 = src_bot * (1 - (st_long_orders*18)) longEntryPrice19 = src_bot * (1 - (st_long_orders*19)) shortEntryPrice1 = src_bot * (1 + st_short_orders) shortEntryPrice2 = src_bot * (1 + (st_short_orders*2)) shortEntryPrice3 = src_bot * (1 + (st_short_orders*3)) shortEntryPrice4 = src_bot * (1 + (st_short_orders*4)) shortEntryPrice5 = src_bot * (1 + (st_short_orders*5)) shortEntryPrice6 = src_bot * (1 + (st_short_orders*6)) shortEntryPrice7 = src_bot * (1 + (st_short_orders*7)) shortEntryPrice8 = src_bot * (1 + (st_short_orders*8)) shortEntryPrice9 = src_bot * (1 + (st_short_orders*9)) shortEntryPrice10 = src_bot * (1 + (st_short_orders*10)) shortEntryPrice11 = src_bot * (1 + (st_short_orders*11)) shortEntryPrice12 = src_bot * (1 + (st_short_orders*12)) shortEntryPrice13 = src_bot * (1 + (st_short_orders*13)) shortEntryPrice14 = src_bot * (1 + (st_short_orders*14)) shortEntryPrice15 = src_bot * (1 + (st_short_orders*15)) shortEntryPrice16 = src_bot * (1 + (st_short_orders*16)) shortEntryPrice17 = src_bot * (1 + (st_short_orders*17)) shortEntryPrice18 = src_bot * (1 + (st_short_orders*18)) shortEntryPrice19 = src_bot * (1 + (st_short_orders*19)) // take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // take profit values for confirmation plot(series=(strategy.position_size > 0) ? longExitPrice : na, color=color.green, style=plot.style_circles, linewidth=3, title="Long Take Profit") plot(series=(strategy.position_size < 0) ? shortExitPrice : na, color=color.red, style=plot.style_circles, linewidth=3, title="Short Take Profit") // entry orders if (strategy.position_size == 0) strategy.order(id="Long0", long=true, limit=src_bot, when=longOK and Buy) strategy.order(id="Long1", long=true, limit=longEntryPrice1, when=longOK and Buy) strategy.order(id="Long2", long=true, limit=longEntryPrice2, when=longOK and Buy) strategy.order(id="Long3", long=true, limit=longEntryPrice3, when=longOK and Buy) strategy.order(id="Long4", long=true, limit=longEntryPrice4, when=longOK and Buy) strategy.order(id="Long5", long=true, limit=longEntryPrice5, when=longOK and Buy) strategy.order(id="Long6", long=true, limit=longEntryPrice6, when=longOK and Buy) strategy.order(id="Long7", long=true, limit=longEntryPrice7, when=longOK and Buy) strategy.order(id="Long8", long=true, limit=longEntryPrice8, when=longOK and Buy) strategy.order(id="Long9", long=true, limit=longEntryPrice9, when=longOK and Buy) strategy.order(id="Long10", long=true, limit=longEntryPrice10, when=longOK and Buy) strategy.order(id="Long11", long=true, limit=longEntryPrice11, when=longOK and Buy) strategy.order(id="Long12", long=true, limit=longEntryPrice12, when=longOK and Buy) strategy.order(id="Long13", long=true, limit=longEntryPrice13, when=longOK and Buy) strategy.order(id="Long14", long=true, limit=longEntryPrice14, when=longOK and Buy) strategy.order(id="Long15", long=true, limit=longEntryPrice15, when=longOK and Buy) strategy.order(id="Long16", long=true, limit=longEntryPrice16, when=longOK and Buy) strategy.order(id="Long17", long=true, limit=longEntryPrice17, when=longOK and Buy) strategy.order(id="Long18", long=true, limit=longEntryPrice18, when=longOK and Buy) strategy.order(id="Long19", long=true, limit=longEntryPrice19, when=longOK and Buy) if (strategy.position_size == 0) strategy.order(id="Short0", long=false, limit=src_bot, when=shortOK and Sell) strategy.order(id="Short1", long=false, limit=shortEntryPrice1, when=shortOK and Sell) strategy.order(id="Short2", long=false, limit=shortEntryPrice2, when=shortOK and Sell) strategy.order(id="Short3", long=false, limit=shortEntryPrice3, when=shortOK and Sell) strategy.order(id="Short4", long=false, limit=shortEntryPrice4, when=shortOK and Sell) strategy.order(id="Short5", long=false, limit=shortEntryPrice5, when=shortOK and Sell) strategy.order(id="Short6", long=false, limit=shortEntryPrice6, when=shortOK and Sell) strategy.order(id="Short7", long=false, limit=shortEntryPrice7, when=shortOK and Sell) strategy.order(id="Short8", long=false, limit=shortEntryPrice8, when=shortOK and Sell) strategy.order(id="Short9", long=false, limit=shortEntryPrice9, when=shortOK and Sell) strategy.order(id="Short10", long=false, limit=shortEntryPrice10, when=shortOK and Sell) strategy.order(id="Short11", long=false, limit=shortEntryPrice11, when=shortOK and Sell) strategy.order(id="Short12", long=false, limit=shortEntryPrice12, when=shortOK and Sell) strategy.order(id="Short13", long=false, limit=shortEntryPrice13, when=shortOK and Sell) strategy.order(id="Short14", long=false, limit=shortEntryPrice14, when=shortOK and Sell) strategy.order(id="Short15", long=false, limit=shortEntryPrice15, when=shortOK and Sell) strategy.order(id="Short16", long=false, limit=shortEntryPrice16, when=shortOK and Sell) strategy.order(id="Short17", long=false, limit=shortEntryPrice17, when=shortOK and Sell) strategy.order(id="Short18", long=false, limit=shortEntryPrice18, when=shortOK and Sell) strategy.order(id="Short19", long=false, limit=shortEntryPrice19, when=shortOK and Sell) // exit position based on take profit price if (strategy.position_size > 0) strategy.order(id="exit_Long", long=false, limit=longExitPrice, qty=strategy.position_size) if (strategy.position_size < 0) strategy.order(id="exit_Short", long=true, limit=shortExitPrice, qty=abs(strategy.position_size))