
Эта стратегия основана на принципе пересечения движущихся средних, разработанном на основе биткоина. Стратегия использует быстрое пересечение движущихся средних и медленное пересечение движущихся средних в качестве сигнала для покупки и продажи. Когда вы пересекаете медленное пересечение движущихся средних на высоте быстрого пересечения средних, рассматривайте это как золотую вилку и делайте больше; когда вы пересекаете медленное пересечение средних ниже быстрого пересечения средних, рассматривайте это как мертвую вилку и делайте пустоту.
Стратегия основана на двух показателях:
Moving Average (MA): рассчитывает среднее значение цены закрытия за определенный период, используется для определения движения цены и сигналов о повороте.
Индекс относительной силы (Relative Strength Index, RSI): рассчитывает скорость падения цен на акции в течение определенного периода и определяет зоны перекупа и перепродажи.
В частности, стратегия использует более короткие МА в качестве быстрых линий, а более длинные МА в качестве медленных линий. Когда они пересекают медленную линию, они ускоряют рост цены в краткосрочной перспективе, создавая сигнал к покупке; когда они пересекают медленную линию, они ускоряют падение цены в краткосрочной перспективе, создавая сигнал к продаже.
В то же время, стратегия также устанавливает понижение RSI, создавая сигнал купить только тогда, когда RSI выше 50, и сигнал продать, когда RSI ниже 50, чтобы избежать входа в рынок во время резких колебаний цен.
Эта стратегия имеет следующие преимущества:
Однако эта стратегия также несет в себе некоторые риски:
Для снижения риска рекомендуется оптимизировать циклические параметры скользящих средних, корректировать стоп-позиции, адекватно уменьшать размер позиции. Применение этой стратегии следует приостановить при значительных изменениях в основах.
Основные направления оптимизации стратегии:
Оптимизируйте циклические параметры для подвижных средних, чтобы найти оптимальную комбинацию параметров. Их можно оптимизировать с помощью методов пошагового поиска, генетических алгоритмов и т. Д.
Добавление фильтров для других технических индикаторов, таких как KDJ, MACD и т.д., улучшает качество торговых сигналов.
Увеличение мониторинга колебаний цен, корректировка позиций и остановки убытков в зависимости от колебаний.
Объединение объема сделок, чтобы избежать ложных прорывов. Сигналы должны появляться только в случае увеличения объема сделок.
Разработка механизма самоадаптации параметров. Позволяет стратегии автоматически корректировать параметры в зависимости от различных рыночных условий.
В целом, эта стратегия является более типичной стратегией следования тенденции. Основанная на принципе пересечения движущихся средних, логика торговли проста, понятна и легко реализуема. При этом интеграция показателя RSI позволяет избежать нерациональных торгов.
/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Trading Strategy Warning - Past performance may not equal future performance
//Account Size Warning - Performance based upon default 10% risk per trade, of account size $100,000. Adjust before you trade to see your own drawdown.
//Time Frame - D1 and H4, warning H4 has a lower profit factor (fake-outs, and account drawdown), D1 recommended
//Trend Following System - Profitability of this system is dependent on a STRONG trend in Bitcoin, into the future
strategy("Bitcoin - MA Crossover Strategy", overlay=true)
// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=10,confirm=false)
sma_fast = input(title="Fast MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=20,confirm=false)
sma_slow = input(title="Slow MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=40,confirm=false)
rsi_valu = input(title="RSI (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)
// Create Indicator's
shortSMA = sma(close, sma_fast)
longSMA = sma(close, sma_slow)
rsi = rsi(close, rsi_valu)
strategy.initial_capital = 50000
// Units to buy
amount = usr_risk / 100 * (strategy.initial_capital + strategy.netprofit)
units = floor(amount / close)
// Specify entry conditions
longEntry = crossover(shortSMA, longSMA)
shortEntry = crossunder(shortSMA, longSMA)
// Specify exit conditions
longExit = crossunder(shortSMA, longSMA)
shortExit = crossover(shortSMA, longSMA)
// Execute long trade
if (longEntry)
strategy.entry("long", strategy.long, units, when = rsi > 50)
// Exit long trade
if(longExit and strategy.position_size > 0)
strategy.order("exit long", strategy.short, abs(strategy.position_size))
// Execute short trade
if (shortEntry)
strategy.entry("short", strategy.short, units, when = rsi < 50)
// Exit short trade
if(shortExit and strategy.position_size < 0)
strategy.order("exit short", strategy.long, abs(strategy.position_size))
// Plot Moving Average's to chart
plot(shortSMA)
plot(longSMA, color=color.black)