Стратегия следования за трендом Golden Cross Celtic Channel


Дата создания: 2023-11-02 14:31:10 Последнее изменение: 2023-11-02 14:31:10
Копировать: 1 Количество просмотров: 691
1
Подписаться
1617
Подписчики

Стратегия следования за трендом Golden Cross Celtic Channel

Обзор

Золотая крестовая кельтская стратегия - это стратегия, при которой торгуют только в направлении тренда. Она использует в качестве входного сигнала золотое крестовое движущееся среднее и кельтский канал для захвата направления тренда.

Принципы

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

В частности, стратегия сначала определяет, находится ли долгосрочная скользящая средняя над краткосрочной скользящей средней, и если да, то она пересекается с золотом, и определяется как тенденция вверх; если краткосрочная скользящая средняя находится ниже долгосрочной скользящей средней, то она пересекается со смертью, и определяется как тенденция вниз.

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

После входа в игру, стратегия использует пользовательский определение Stop Stop Loss ATR, чтобы установить Stop Stop Loss. В то же время, стратегия также предоставляет дополнительные условия для прорыва Stop Stop и Stop Loss, которые позволяют более гибко контролировать позиции.

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

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

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

  2. Прорыв в кельтском канале в сочетании с определением направления тенденции может повысить точность времени входа в рынок.

  3. Стоп-стоп-лосс позволяет блокировать прибыль и активно контролировать риски.

  4. Параметры стратегии могут быть гибко адаптированы для различных сортов и рыночных условий.

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

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

Несмотря на много преимуществ, существуют определенные риски, о которых следует помнить:

  1. “Если мы не сможем добиться этого, то рискуем упустить шанс изменить ситуацию.

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

  3. Неправильная настройка параметров может привести к слишком слабым или слишком частым сделкам.

  4. Некоторые риски, связанные с ночным отдыхом.

  5. Существует определенная вероятность корректировки кривой.

Для этого можно снизить риск путем оптимизации параметров, своевременной корректировки цикла движущихся средних или соответствующего сокращения размеров позиций.

Оптимизация

В этой стратегии есть место для дальнейшей оптимизации:

  1. Можно рассмотреть вопрос о добавлении большего количества показателей для оценки, формирования многофакторной модели, повышения точности стратегии. Например, добавление MACD, RSI и т. д.

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

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

  4. Размер позиции может быть изменен в зависимости от динамики изменения волатильности.

  5. Изучение предпочтений различных сортов и создание комбинации параметров, подходящих для различных сортов.

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

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

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

Исходный код стратегии
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © OversoldPOS

//@version=5
// strategy("Keltner Channel Strategy by OversoldPOS", overlay=true,initial_capital = 100000,default_qty_type = strategy.percent_of_equity,default_qty_value = 10, commission_type = strategy.commission.cash_per_order, commission_value = 7)

// Parameters
length = input(21, title="MA Length")
Entrymult = input(1, title="Entry ATR")
profit_mult = input(4, title="Profit Taker")
exit_mult = input(-1, title="Exit ATR")

// Moving Average Type Input
ma_type = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "WMA"])

// Calculate Keltner Channels for different ATR multiples
atr_value = ta.atr(length)

basis = switch ma_type
    "SMA" => ta.sma(close, length)
    "EMA" => ta.ema(close, length)
    "WMA" => ta.wma(close, length)
 

//
EntryKeltLong = basis + Entrymult * ta.atr(10)
EntryKeltShort = basis - Entrymult * ta.atr(10)
upper_channel1 = basis + 1 * ta.atr(10)
lower_channel1 = basis - 1 * ta.atr(10)
upper_channel2 = basis + 2 * ta.atr(10)
lower_channel2 = basis - 2 * ta.atr(10)
upper_channel3 = basis + 3 * ta.atr(10)
lower_channel3 = basis - 3 * ta.atr(10)
upper_channel4 = basis + 4 * ta.atr(10)
lower_channel4 = basis - 4 * ta.atr(10)

// Entry condition parameters
long_entry_condition = input(true, title="Long Positions")
short_entry_condition = input(true, title="Enable Short Positions")

// Additional conditions for long and short entries
is_long_entry = ta.ema(close, 20) > ta.ema(close, 50)
is_short_entry = ta.ema(close, 20) < ta.ema(close, 50)

// Additional conditions for long and short entries
MAShort =  input(50, title="Short MA for Golden Cross")
MALong =  input(200, title="Long MA for Golden Cross")
is_long_entry2 = ta.ema(close, MAShort) > ta.ema(close, MALong)
is_short_entry2 = ta.ema(close, MAShort) < ta.ema(close, MALong)

// Exit condition parameters
long_exit_condition1_enabled = input(true, title="Enable Long Profit Taker")
long_exit_condition2_enabled = input(true, title="Enable Long Stop")
short_exit_condition1_enabled = input(true, title="Enable Short Profit Taker")
short_exit_condition2_enabled = input(true, title="Enable Short Stop")

// Take Profit condition parameters
take_profit_enabled = input(true, title="Enable Take Profit Condition")

Takeprofit = basis + profit_mult * atr_value
STakeprofit = basis - profit_mult * atr_value

// Long entry condition
long_condition = long_entry_condition and ta.crossover(close, EntryKeltLong) and is_long_entry2

// Short entry condition
short_condition = short_entry_condition and ta.crossunder(close, EntryKeltShort) and is_short_entry2

// Exit conditions
long_exit_condition1 = long_exit_condition1_enabled and close > Takeprofit
long_exit_condition2 = long_exit_condition2_enabled and close < basis + exit_mult * atr_value
short_exit_condition1 = short_exit_condition1_enabled and close < STakeprofit
short_exit_condition2 = short_exit_condition2_enabled and close > basis - exit_mult * atr_value

// Strategy logic
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

if (long_exit_condition1 or long_exit_condition2)
    strategy.close("Long")

if (short_exit_condition1 or short_exit_condition2)
    strategy.close("Short")

// Moving Averages
var float MA1 = na
var float MA2 = na

if (ma_type == "SMA")
    MA1 := ta.sma(close, MAShort)
    MA2 := ta.sma(close, MALong)
else if (ma_type == "EMA")
    MA1 := ta.ema(close, MAShort)
    MA2 := ta.ema(close, MALong)
else if (ma_type == "WMA")
    MA1 := ta.wma(close, MAShort)
    MA2 := ta.wma(close, MALong)

// Plotting Keltner Channels with adjusted transparency
transparentColor = color.rgb(255, 255, 255, 56)

plot(upper_channel1, color=transparentColor, title="Upper Channel 1")
plot(lower_channel1, color=transparentColor, title="Lower Channel 1")
plot(upper_channel2, color=transparentColor, title="Upper Channel 2")
plot(lower_channel2, color=transparentColor, title="Lower Channel 2")
plot(upper_channel3, color=transparentColor, title="Upper Channel 3")
plot(lower_channel3, color=transparentColor, title="Lower Channel 3")
plot(upper_channel4, color=transparentColor, title="Upper Channel 4")
plot(lower_channel4, color=transparentColor, title="Lower Channel 4")
plot(basis, color=color.white, title="Basis")
plot(MA1, color=color.rgb(4, 248, 216), linewidth=2, title="Middle MA")
plot(MA2, color=color.rgb(220, 7, 248), linewidth=2, title="Long MA")