Стратегия обратной торговли, основанная на равномерности

Автор:Чао Чжан, Дата: 2024-02-21 17:03:31
Тэги:

基于均线的回撤交易策略

Обзор

Основная идея этой стратегии заключается в том, чтобы торговать короткими ретросками в направлении длительного тренда; в частности, использовать 200-дневную простую движущуюся среднюю линию для определения долгосрочного тренда, а 10-дневную простую движущуюся среднюю линию для определения краткосрочного тренда.

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

Эта стратегия использует 200-дневный простой движущийся средний и 10-дневный простой движущийся средний для определения рыночных тенденций. При цене вверх через 200-дневную линию рассматривается как выход в полиэтапный рынок, а при цене вниз через 200-дневную линию - как выход в полиэтапный рынок.

В частности, делать много вход, когда выполняются следующие условия: цена выше 200-й линии, цена ниже 10-й линии, ранее не держали. Когда выполняются следующие условия, выйти из позиции: цена выше 10-й линии, ранее держали несколько позиций. Чтобы предотвратить большие потери, установлена стоп-стап FAILSAFE, если отклонение от максимума превышает 10%, прямой стоп-стап выходит.

Как видно, логика торговли этой стратегии основана в основном на золотой вилки, которая отражает длинную короткую среднюю линию.

Анализ преимуществ

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

  1. Использование длинно-короткосрочных среднелинейных комбинаций для определения направления тренда на первичном уровне позволяет эффективно блокировать средне-длиннолинейные трендовые возможности и избегать заблуждения короткосрочных рынков.

  2. Применение краткосрочного метода обратного отбора позволяет максимально снизить затраты на покупку, что дает большую возможность получения прибыли.

  3. Установка механизма FAILSAFE для предотвращения потерь позволяет эффективно контролировать убытки и защищать безопасность средств в счетах.

  4. Это позволяет отслеживать сдерживание выхода и полностью использовать средние и длинные трендовые возможности, чтобы получить избыточный альфа.

  5. Применение чисто механизированных методов торговли, избегая субъективных эмоциональных воздействий, облегчает реализацию стратегии.

Анализ рисков

В частности, в этой стратегии есть следующие риски:

  1. Риск соответствия данных. Фактические рыночные условия могут отличаться от исторических данных, что может привести к дисконтированию эффекта торговли на реальном рынке.

  2. Риск ложного прорыва. Большая вероятность того, что цены обратятся, если только коснутся средней линии, легко приводит к накоплению небольших убытков.

  3. Риск реверсии тренда. Внезапное изменение тренда в средней длине является обычным явлением, когда удержание позиций может привести к большим потерям.

Следующие меры:

  1. Увеличение количества образцов, проверка стабильности с использованием большего количества исторических данных, чтобы гарантировать надежность результатов.

  2. Оптимизировать параметры, корректировать комбинацию параметров системы сплошных линий, чтобы обеспечить качество сигналов торговли.

  3. Соответствующее расширение линии остановки, предоставляющее определенное пространство для ценового отвода и избегающее чрезмерно чувствительных остановок.

Оптимизация

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Дополнение условий фильтрации, таких как фильтрация объема сделок, может эффективно уменьшить количество ненужных сделок, вызванных ложными прорывами.

  2. В сочетании с другими показателями, такими как KDJ, MACD и т. д., формируется комбинация показателей, которая может повысить качество торговых сигналов.

  3. Проверить различные периоды хранения, оптимизировать стратегии остановки и остановки убытков, и еще больше улучшить такие показатели, как Sharp Rate.

  4. Динамическая корректировка параметров в соответствии с рыночными условиями, формирование механизма оптимизации параметров для адаптации, что делает стратегию более ловкой.

  5. Добавление алгоритмических торговых модулей, использование машинного обучения и других методов для автоматического генерирования торговых сигналов и снижения человеческого вмешательства.

Подведение итогов

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


/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © irfanp056
// @version=5

strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=1000, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

Больше информации