
Эта стратегия использует технологию скрещивания двойных движущихся средних и технологию прорыва давления, устанавливает сигналы покупки и продажи, реализует автоматическую торговлю. Когда краткосрочная средняя линия снизу вверх прорывает среднесрочную среднюю линию, и цена акции прорывает давление, создается сигнал покупки; когда цена акций повышается на 15%, устанавливается стоп-стоп, а при падении на 3% устанавливается стоп-стоп.
Эта стратегия создает торговые сигналы, основанные на следующих технических показателях и условиях:
Двухлинейный пересекающий метод: вычисление 20- и 44-дневных простых движущихся средних, которые, когда 20-дневная средняя линия пересекает 44-дневную среднюю линию, рассматриваются как рынок в восходящем тренде и генерируют сигнал к покупке.
Техника прорыва уровня давления: на графике показано, что цена акции несколько раз приближалась к этому уровню, но не смогла его преодолеть. Это место называется “ударным”. Когда цена акции успешно прорывает уровень давления, это указывает на то, что цена вступает в новую стадию роста.
RSI: относительно сильный индекс, который определяет, является ли рынок перекупленным или перепроданным. Эта стратегия устанавливает сигнал о перекупе, когда 14-дневный RSI больше 50.
Анализ объемов сделок: объем сделок, превышающий средний объем сделок за последние 10 дней, свидетельствует о более сильной позиции покупки или продажи.
Сигнал покупки: Сигнал покупки возникает, если краткосрочная средняя линия проходит среднесрочную среднюю линию и цена акций пробивает давление, рынок находится в состоянии перекупа, а объем торгов выше среднего объема торгов за последние 10 дней.
Сигнал продажи: установка стандарта “стоп-стоп-лосс”, если цена акции повысится на 15% по сравнению с ценой покупки, то она будет остановлена; если она снизится на 3%, то она будет остановлена.
Эта стратегия использует множество технических показателей, чтобы оценить структуру рынка и автоматически генерировать торговые сигналы, когда они указывают на тенденцию, и является более зрелой и полной количественной стратегией торговли.
Использование однородной техники для определения структуры рынка позволяет стабильно улавливать тенденции рынка;
объединение анализа объемов сбыта, чтобы избежать открытия позиций в фальшивых прорывах с несовместимыми объемами сбыта;
Установка механизма сдерживания, сдерживания и выхода из сделки позволяет контролировать риск-прибыль в отдельных сделках, чтобы избежать увеличения убытков;
В целом, эта стратегия, которая позволяет точно оценивать структуру рынка, строгие правила торговли и контроль риска, является эффективной количественной стратегией.
Двухлинейная торговая система более чувствительна к параметрам, которые требуют корректировки в разные периоды времени;
Стратегии, основанные на простом отслеживании тенденций, не способны реагировать на неожиданные события, такие как неизбежные остановки при значительных прибылях и убытках;
Несмотря на то, что установлена стоп-стоп-убытка, при большом количестве сделок стоп-убыток неизбежно увеличивается, и существует риск неравномерного уровня прибыли.
В долгосрочной перспективе технические индикаторы часто появляются уже после того, как рынок перевернулся.
Можно использовать метод оптимизации параметров для поиска оптимальной комбинации параметров двойной средней линии, оптимизируя уровень стоп-стоп-убытков;
Добавление других показателей, таких как диапазон скорректировки по Брин-Бенду и MACD, чтобы улучшить время подачи сигнала;
Повышение уровня фундаментальных или новостных суждений, чтобы избежать ущерба от значительных негативных новостей;
Оптимизация стратегий управления капиталом, таких как торговля фиксированным количеством, торговля фиксированной долей капитала и т. д., чтобы контролировать риски.
В целом, эта стратегия работает гладко, имеет точные и строгие правила торговли, контролирует риск и является одной из наиболее эффективных количественных стратегий. Однако, техническая стратегия торговли по оценке структуры рынка по-прежнему ограничена, возможности для оптимизации заключаются в добавлении комплексного рассмотрения других показателей и основных новостных аспектов, а также в дальнейшей оптимизации стратегии стоп-стоп и управления капиталом.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Advanced Strategy with Conditional Stop Loss", overlay=true)
// Parameters
ma_length_20 = 20
ma_length_44 = 44
ma_length_100 = 100
rsi_length = 14
volume_length = 10
profit_target = 1.15 // 15% above the buy price
stop_loss_target = 0.97 // 3% below the buy price
wait_candles = 10 // Number of candles to wait after selling, unless MA cross condition met
// Indicators
moving_average_20 = ta.sma(close, ma_length_20)
moving_average_44 = ta.sma(close, ma_length_44)
moving_average_100 = ta.sma(close, ma_length_100)
rsi = ta.rsi(close, rsi_length)
volumeAvg = ta.sma(volume, volume_length)
// Variables to manage the wait period after a sell
var int last_sell_candle = 0
// Update last sell candle
if (strategy.position_size[1] > 0 and strategy.position_size == 0)
last_sell_candle := bar_index
// Trend identification
uptrend = close > moving_average_20
above_ma20_by_1_percent = close > moving_average_20 * 1.01
ma_cross = ta.crossover(moving_average_20, moving_average_44) or ta.crossunder(moving_average_20, moving_average_44)
close_near_high = (close >= high * 0.993) and (close <= high)
// Buy condition (only in uptrend, above 1% from 20-day MA, and respecting new filter)
can_buy_after_cross = ma_cross and close > high[1]
can_buy_after_wait = (bar_index - last_sell_candle) > wait_candles
buy_condition = (can_buy_after_cross or can_buy_after_wait) and uptrend and above_ma20_by_1_percent and close > moving_average_44 and close > moving_average_100 and close > high[1] and rsi > 50 and volume > volumeAvg and not close_near_high
// Entry
if (buy_condition and strategy.position_size == 0)
strategy.entry("Buy", strategy.long)
// Exit conditions
if (strategy.position_size > 0)
// Profit target
profit_level = strategy.position_avg_price * profit_target
strategy.exit("Take Profit", "Buy", limit=profit_level)
// Dynamic Stop Loss - Check on every bar if the price has dropped 3% below the buy price
stop_loss_level = strategy.position_avg_price * stop_loss_target
if (low < stop_loss_level)
strategy.close("Buy", comment="Stop Loss")
// Plotting
plot(moving_average_20, color=color.green, title="20-Day Moving Average")
plot(moving_average_44, color=color.blue, title="44-Day Moving Average")
plot(moving_average_100, color=color.red, title="100-Day Moving Average")