Эта стратегия представляет собой количественную торговую систему, основанную на двойных перекрестных сигналах скользящей средней, которая определяет изменения тренда рынка через пересечение краткосрочных и долгосрочных скользящих средних, в сочетании с динамическим управлением стоп-лосом и получением прибыли для контроля риска.
Система использует два простых скользящих средних (SMA) разных периодов в качестве основы для торговых сигналов. Длинный сигнал генерируется, когда краткосрочный MA пересекает длинный MA, а короткий сигнал генерируется, когда краткосрочный MA пересекает длинный MA. Система проверяет текущий статус позиции, когда появляются сигналы, сначала закрывает любые контрапозиции, а затем открывает новые позиции в соответствии с направлением сигнала. Каждая торговля автоматически устанавливает уровни стоп-лосса и прибыли на основе заранее установленных процентов, достигая динамического управления соотношениями риск-вознаграждение.
Это всеобъемлющая количественная торговая стратегия с четкой логикой. Она улавливает изменения тренда с помощью двойного кроссовера MA и управляет рисками с динамическими уровнями стоп-лосса и прибыли. Сила стратегии заключается в ее систематическом подходе и контроле рисков, но необходимо обращать внимание на различные рыночные риски в живой торговле. Благодаря постоянной оптимизации и улучшению стратегия может поддерживать стабильную производительность в различных рыночных условиях. Рекомендуется провести тщательное обратное тестирование перед реализацией и корректировать параметры в соответствии с фактическими условиями.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD) // Configurable Inputs stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1) take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1) short_ma_length = input.int(title="Short MA Length", defval=9, minval=1) long_ma_length = input.int(title="Long MA Length", defval=21, minval=1) // Moving Averages short_ma = ta.sma(close, short_ma_length) long_ma = ta.sma(close, long_ma_length) // Plotting Moving Averages plot(short_ma, color=color.blue, title="Short MA") plot(long_ma, color=color.red, title="Long MA") // Buy and Sell Signals buy_signal = ta.crossover(short_ma, long_ma) sell_signal = ta.crossunder(short_ma, long_ma) // Market Buy Logic if (buy_signal and strategy.position_size <= 0) // Close any existing short position if (strategy.position_size < 0) strategy.close(id="Market Sell") // Calculate Stop Loss and Take Profit Prices entry_price = close long_stop = entry_price * (1 - stop_loss_percent / 100) long_take_profit = entry_price * (1 + take_profit_percent / 100) // Enter Long Position strategy.entry(id="Market Buy", direction=strategy.long) strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit) // Alert for Market Buy alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close) // Market Sell Logic if (sell_signal and strategy.position_size >= 0) // Close any existing long position if (strategy.position_size > 0) strategy.close(id="Market Buy") // Calculate Stop Loss and Take Profit Prices entry_price = close short_stop = entry_price * (1 + stop_loss_percent / 100) short_take_profit = entry_price * (1 - take_profit_percent / 100) // Enter Short Position strategy.entry(id="Market Sell", direction=strategy.short) strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit) // Alert for Market Sell alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)