Стратегия Святого Креста


Дата создания: 2023-12-01 15:27:39 Последнее изменение: 2023-12-01 15:27:39
Копировать: 0 Количество просмотров: 970
1
Подписаться
1619
Подписчики

Стратегия Святого Креста

Стратегия Святого Креста (англ. Holy Grail Strategy) - это количественная торговая стратегия, которая сочетает в себе систему двойной равнолинейности и индикатор ADX. Она предназначена для определения направления и силы тренда и торговли при повороте тренда.

Стратегический принцип

Стратегия одновременно использует 20-дневную скользящую среднюю ((EMA) и индикатор ADX для определения времени входа в рынок. В частности, она выдает торговый сигнал в двух случаях:

  1. Если ADX ниже 30 (что означает более слабую тенденцию) и цена пересекает 20-дневную ЭМА снизу, то можно делать больше;

  2. Продолжайте позицию, когда ADX будет выше 30 (что означает сильный тренд), и цена будет выше 20-дневной EMA.

Как видно, эта стратегия основана на силе и направлении тренда, определяемого ADX, а затем сочетается с поддержкой и сопротивлением движущейся средней для поиска возможностей для разворота. Она объединяет концепцию трендового следования и обратной торговли.

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

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

  1. Использование системы двойной равномерности позволяет эффективно идентифицировать тенденции.
  2. С помощью ADX можно оценить силу тренда, чтобы избежать скорректировки и неэффективных прорывов;
  3. В сочетании с реверсивной и трендовой концепциями торговли позволяет как улавливать тренды, так и переворачивать их в поворотном положении.
  4. Правила работы понятны, просты и легко применяемы.

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

Также существуют некоторые риски, связанные с стратегией Святого Креста, в основном в следующих областях:

  1. ADX, как вспомогательный показатель, также дает ошибочные сигналы.
  2. Двухлинейные пересечения не позволяют полностью избежать убытков, вызванных подъемыми волн.
  3. Неправильная настройка параметров (например, ADX-целевые значения, средний цикл и т. д.) может привести к слишком частому или консервативному сигналу.

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

Направление оптимизации

Также существует много оптимизированных направлений в стратегии Святого Креста:

  1. Попробуйте различные типы скользящих средних, например, весовые скользящие средние.
  2. Цель ADX может быть оптимизирована как параметр;
  3. Можно тестировать различные циклические параметры, такие как 10-дневная и 30-дневная ЭМА;
  4. Для подтверждения торгового сигнала могут быть добавлены другие вспомогательные индикаторы, такие как RSI, Брин и т. д.

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

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

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

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

//@version=3
strategy("LAT Holy Grail v3", overlay=true)

/////////////TEST TIME ////////////////////////
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(15, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(5, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
//////////////////////////////////////////////////////////////////////

myema= ema(close, 20)
plot(myema, color=green, title="eMA", linewidth=3)



//longCondition = (crossover(close, myema)) //and adx3 < target
//if (longCondition)
    //strategy.entry("My Long Entry Id", strategy.long)

//shortCondition = (crossunder(close, myema)) //and adx3 > target
//if (shortCondition)
    //strategy.entry("My Short Entry Id", strategy.short)
    
    //////////////////////////////////////////////////////////
    ///////////////////////////////////////   DMI  ///////////////////////////////////////////////
len3 = input(14, minval=1, title="DI Length")                           /////////////////////
lensig3 = input(14, title="ADX Smoothing", minval=1, maxval=50)         ////////////////////
up3 = change(high)                                                      ///////////////////
down3 = -change(low)                                                    //////////////////
plusDM3 = na(up3) ? na : (up3 > down3 and up3 > 0 ? up3 : 0)            /////////////////
minusDM3 = na(down3) ? na : (down3 > up3 and down3 > 0 ? down3 : 0)     ////////////////
trur3 = rma(tr, len3)                                                   ///////////////
plus3 = fixnan(100 * rma(plusDM3, len3) / trur3)                        //////////////
minus3 = fixnan(100 * rma(minusDM3, len3) / trur3)                      /////////////
sum3 = plus3 + minus3                                                   ////////////
adx3 = 100 * rma(abs(plus3 - minus3) / (sum3 == 0 ? 1 : sum3), lensig3) ///////////
//plot(plus3, color=green, style=circles, linewidth=2, title="+DI")     //////////
//plot(minus3, color=red, style=circles, linewidth=2, title="-DI")      /////////
plot(adx3, color=aqua, style=line, linewidth=3, title="ADX")            ////////
target = input(30, title=" ADX Target Line")                            ///////
plot(target, color=yellow, title="ADX Target Line")                     //////
/////////////////////////////////////////////////////////////////////////////////////////////////
                                                                                        
plot(hl2)


///////////////////////////////////////////////  eMA SIGNAL LINE   ///////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////// HOLY GRAIL STRATEGY ///////////////////////////////////////////////////////////////////

if (adx3 <= target) and crossover(close, myema)
    strategy.entry("HolyGrail", strategy.long, comment="Long")
 
if (adx3 >= target) and crossunder(close, myema)
    strategy.entry("HolyGrail", strategy.short, comment="Short")