Эта стратегия реализует простую стратегию торгового порога, основанную на индексе относительной силы (RSI). Она покупает, когда RSI падает ниже порога 30 и продает, когда RSI поднимается выше порога 40. Период хранения фиксирован на 10 дней. Стратегия подходит для среднесрочной торговли.
Стратегия в основном использует зоны перепродажи и перекупки индикатора RSI для генерации торговых сигналов. RSI отражает скорость изменения цен в течение периода. RSI ниже 30 указывает на зону перепродажи, где цена может отскочить. RSI выше 70 указывает на зону перекупки, где цена может упасть.
В частности, стратегия сначала рассчитывает 10-дневный RSI, затем устанавливает пороги на 30 и 40. Когда 10-дневный RSI падает ниже 30, генерируется сигнал покупки. Когда 10-дневный RSI поднимается выше 40, генерируется сигнал продажи. По получении сигнала покупки он открывает длинную позицию. По получении сигнала продажи, если дни хранения превышают 10 дней, он закрывает позицию напрямую. В противном случае он продолжает держать до 10-го дня, чтобы продать.
Стратегия проста и легко понятна, она определяет зоны перепродажи и перекупки с использованием RSI для реализации стратегии торгового порога, основанной на индикаторе.
Стратегия использует распространенный индикатор RSI. Параметры RSI могут быть скорректированы и оптимизированы в соответствии с различными периодами и рыночными условиями.
RSI может отражать тенденции изменения цен. Стратегия оценивает движения цен на основе RSI, чтобы достичь простого следования тренду.
Стратегия использует фиксированный период хранения, чтобы эффективно контролировать однократные потери.
Параметры RSI могут быть гибко установлены, но чрезмерная оптимизация и предвзятость обратного тестирования могут привести к риску реального трейдинга.
RSI является индикатором, следующим за тенденцией, и медленно реагирует на внезапные события, с некоторым отстающим эффектом.
Фиксированный период хранения устанавливает точки получения прибыли и остановки убытков и не может быть скорректирован на основе изменений рынка.
Оптимизировать параметры RSI и результаты испытаний различных значений.
Добавьте другие показатели, чтобы сформировать комбинированную систему, использующую сильные стороны различных показателей.
Улучшить стратегию остановки прибыли/убытка для обеспечения динамических корректировок на основе рыночных условий.
Оптимизировать размещение позиций для динамической корректировки позиций на основе рыночных условий.
Испытать продукты, подходящие для стратегии, выбирая жидкие продукты с высокой волатильностью.
Оптимизировать часы торговли и тестировать влияние стратегии.
Стратегия относительно проста, реализация торговой стратегии, основанной на пороге с использованием RSI. Ее преимущества включают простоту, простоту понимания и относительно хороший контроль рисков. Однако существуют такие проблемы, как сложность оптимизации параметров RSI и негибкая остановка прибыли / убытка. Будущие улучшения включают оптимизацию параметров, улучшение остановки прибыли / убытка, размещение позиций и т. Д. До начала торговли необходимы дальнейшие оптимизации.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 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/ // © Bitduke //@version=4 // strategy("Simple RSI Buy/Sell at a level", shorttitle="Simple RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=1, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.075) overbought = input(40, title="overbought value") oversold = input(30, title="oversold value") // Component Test Periods Code Begin testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2021, "Backtest Stop Year") testStopMonth = input(16, "Backtest Stop Month") testStopDay = input(2, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Test Periods Code End ////////////////////////////////////////////////////////////////////// myrsi = rsi(close, 10) > overbought myrsi2 = rsi(close, 10) < oversold barcolor(myrsi ? color.black : na) barcolor(myrsi2 ? color.blue : na) myEntry = myrsi2 and hour(time) <= 9 strategy.entry("Buy Signal", strategy.long, when = myEntry and testPeriod()) // Close 10 bar periods after the condition that triggered the entry //if (myEntry[10]) //strategy.close("Buy Signal") strategy.close("Buy Signal", when = barssince(myEntry) >= 10 or myrsi and testPeriod()) //strategy.entry("Sell Signal",strategy.short, when = myrsi2)