В процессе загрузки ресурсов... загрузка...

Интеллектуальная многоцелевая стратегия торговли объемным импульсом

Автор:Чао Чжан, Дата: 2024-12-12 14:45:04
Тэги:SMAРСИТПSL

img

Эта стратегия представляет собой интеллектуальную торговую систему, которая сочетает в себе объем, импульс цен и несколько уровней получения прибыли / остановки потери.

Принципы стратегии

Стратегия основана на трех основных торговых сигналах: 1) прорыв объема - текущий объем превышает 2-кратный средний объем за 20 периодов; 2) прирост цены - недавнее повышение цены превышает установленный порог; 3) подтверждение импульса - RSI выше 55 и цена выше 50-периодного SMA. Когда эти три условия выполняются одновременно, система генерирует длинный сигнал. Стратегия использует тройные уровни получения прибыли (15%, 25%, 35%) и тройные уровни остановки потери (-2%, -5%, -10%) для управления позициями, с гибким размещением позиций на каждом уровне.

Преимущества стратегии

  1. Подтверждение нескольких сигналов повышает точность торговли
  2. Стройный подход "приобретение прибыли/остановка убытков" обеспечивает прибыль и контролирует риски
  3. Высоко настраиваемые параметры адаптируются к различным рыночным условиям
  4. Комбинация технических показателей и анализа объема обеспечивает более надежные сигналы
  5. Функция оповещения в режиме реального времени позволяет своевременно использовать возможности

Стратегические риски

  1. Неправильное настройка параметров может привести к переоценке
  2. Частые стоп-лосы могут возникать в период высокой волатильности рынка
  3. Сложности при выполнении операций по получению прибыли/остановке потерь на рынках с низкой ликвидностью
  4. Отсутствие важных фундаментальных факторов
  5. Чрезмерная зависимость от технических индикаторов может потерпеть неудачу на различных рынках

Руководство по оптимизации

  1. Внедрение анализа рыночных условий для адаптации параметров
  2. Добавить анализ качества объема для фильтрации ложных сигналов объема
  3. Включить показатели силы тренда для улучшения способности следования тренду
  4. Оптимизировать расстояние между получением прибыли и остановкой убытков для соответствия волатильности рынка
  5. Рассмотреть возможность добавления контроля за привлечением средств для повышения стабильности кривой собственного капитала

Резюме

Это зрелая торговая стратегия, интегрирующая несколько элементов технического анализа. Благодаря строгой фильтрации сигналов и гибкому управлению позициями, она улавливает трендовые возможности при сохранении хорошего контроля рисков. Хотя есть место для оптимизации, общая конструкция является обоснованной и достойна проверки и реализации в живой торговле.


/*backtest
start: 2024-11-11 00:00:00
end: 2024-12-10 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Volume Spike & Momentum Strategy with Alerts", overlay=true)

// Inputs for customization
priceGainPercent = input.float(5, title="Minimum Price Gain (%)", minval=1)
volumeLookback = input.int(20, title="Volume Lookback Period (Bars)", minval=1)
momentumSmaLength = input.int(50, title="SMA Length for Momentum (Bars)", minval=1)
rsiThreshold = input.float(55, title="RSI Threshold for Momentum", minval=1)

// Take Profit percentages
tp1Percent = input.float(15, title="Take Profit 1 (%)", minval=1)
tp2Percent = input.float(25, title="Take Profit 2 (%)", minval=1)
tp3Percent = input.float(35, title="Take Profit 3 (%)", minval=1)

// Percentage of position to close at each take-profit
tp1ClosePercent = input.float(30, title="Close % at TP1", minval=1, maxval=100)
tp2ClosePercent = input.float(40, title="Close % at TP2", minval=1, maxval=100)
tp3ClosePercent = input.float(30, title="Close % at TP3", minval=1, maxval=100)

// Stop-loss percentages
sl1Percent = input.float(2, title="Stop Loss 1 (%)", minval=0.1)
sl2Percent = input.float(5, title="Stop Loss 2 (%)", minval=0.1)
sl3Percent = input.float(10, title="Stop Loss 3 (%)", minval=0.1)

// Percentage of position to close at each stop-loss
sl1ClosePercent = input.float(30, title="Close % at SL1", minval=1, maxval=100)
sl2ClosePercent = input.float(40, title="Close % at SL2", minval=1, maxval=100)
sl3ClosePercent = input.float(30, title="Close % at SL3", minval=1, maxval=100)

// Detect volume spikes
avgVolume = ta.sma(volume, volumeLookback)   // Average volume over the last X bars (customizable)
volumeSpike = volume > avgVolume * 2         // Spike in volume if current volume is 2x the average

// Detect price gain over the recent period (e.g., 5-10% gain over the last X bars)
priceChangePercent = (close - ta.lowest(close, 5)) / ta.lowest(close, 5) * 100
priceGainCondition = priceChangePercent >= priceGainPercent

// Check for overall momentum using an SMA and RSI
longTermSma = ta.sma(close, momentumSmaLength)
rsi = ta.rsi(close, 14)
momentumCondition = close > longTermSma and rsi >= rsiThreshold

// Store the entry price on a new trade
var float entryPrice = na
if (strategy.opentrades == 0 and (volumeSpike and priceGainCondition and momentumCondition))
    entryPrice := close  // Capture the entry price on a new trade

// Calculate take-profit levels based on the entry price
tp1Price = entryPrice * (1 + tp1Percent / 100)
tp2Price = entryPrice * (1 + tp2Percent / 100)
tp3Price = entryPrice * (1 + tp3Percent / 100)

// Calculate stop-loss levels based on the entry price
sl1Price = entryPrice * (1 - sl1Percent / 100)
sl2Price = entryPrice * (1 - sl2Percent / 100)
sl3Price = entryPrice * (1 - sl3Percent / 100)

// Exit conditions for multiple take-profits
tp1Condition = high >= tp1Price  // Exit partial if price hits take-profit 1
tp2Condition = high >= tp2Price  // Exit partial if price hits take-profit 2
tp3Condition = high >= tp3Price  // Exit full if price hits take-profit 3

// Exit conditions for multiple stop-losses
sl1Condition = low <= sl1Price  // Exit partial if price hits stop-loss 1
sl2Condition = low <= sl2Price  // Exit partial if price hits stop-loss 2
sl3Condition = low <= sl3Price  // Exit full if price hits stop-loss 3

// Buy Condition: When volume spike, price gain, and momentum conditions are met
if (volumeSpike and priceGainCondition and momentumCondition)
    strategy.entry("Buy", strategy.long)

// Alerts for conditions
alertcondition(volumeSpike and priceGainCondition and momentumCondition, title="Entry Alert", message="Entry conditions met: Volume spike, price gain, and momentum detected!")

alertcondition(tp1Condition, title="Take Profit 1", message="Take Profit 1 hit!")
alertcondition(tp2Condition, title="Take Profit 2", message="Take Profit 2 hit!")
alertcondition(tp3Condition, title="Take Profit 3", message="Take Profit 3 hit!")

alertcondition(sl1Condition, title="Stop Loss 1", message="Stop Loss 1 hit!")
alertcondition(sl2Condition, title="Stop Loss 2", message="Stop Loss 2 hit!")
alertcondition(sl3Condition, title="Stop Loss 3", message="Stop Loss 3 hit!")

// Exit conditions: Multiple take-profits and stop-losses
if (tp1Condition)
    strategy.exit("Take Profit 1", "Buy", limit=tp1Price, qty_percent=tp1ClosePercent)

if (tp2Condition)
    strategy.exit("Take Profit 2", "Buy", limit=tp2Price, qty_percent=tp2ClosePercent)

if (tp3Condition)
    strategy.exit("Take Profit 3", "Buy", limit=tp3Price, qty_percent=tp3ClosePercent)

// Stop-loss exits
if (sl1Condition)
    strategy.exit("Stop Loss 1", "Buy", stop=sl1Price, qty_percent=sl1ClosePercent)

if (sl2Condition)
    strategy.exit("Stop Loss 2", "Buy", stop=sl2Price, qty_percent=sl2ClosePercent)

if (sl3Condition)
    strategy.exit("Stop Loss 3", "Buy", stop=sl3Price, qty_percent=sl3ClosePercent)

// Plotting take-profit and stop-loss levels on the chart
plot(tp1Price, color=color.green, style=plot.style_linebr, title="TP1 Level")
plot(tp2Price, color=color.green, style=plot.style_linebr, title="TP2 Level")
plot(tp3Price, color=color.green, style=plot.style_linebr, title="TP3 Level")

plot(sl1Price, color=color.red, style=plot.style_linebr, title="SL1 Level")
plot(sl2Price, color=color.red, style=plot.style_linebr, title="SL2 Level")
plot(sl3Price, color=color.red, style=plot.style_linebr, title="SL3 Level")


Связанные

Больше