Стратегия торговли двойной скользящей средней на перекрестном рынке

Автор:Чао Чжан, Дата: 2023-10-24 16:55:38
Тэги:

img

Обзор

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

Логика стратегии

Стратегия основывается главным образом на расчете скользящей средней стоимости Hull и скользящей средней стоимости T3.

Hull Moving Average (HMA) использует метод итеративного расчета взвешенной скользящей средней, чтобы эффективно отфильтровать рыночный шум и отобразить плавную кривую ценового тренда.

Движущаяся средняя T3 реагирует быстрее на изменения цен, уменьшая задержку путем корректировки параметров.

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

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

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

Эта стратегия сочетает в себе преимущества скользящей средней Халла и скользящей средней T3 для создания всеобъемлющего индикатора. Далее эта стратегия подходит как для краткосрочной, так и для долгосрочной торговли путем корректировки параметра цикла. Кроме того, она использует динамическую стоп-лосс и прибыль для блокировки прибыли и контроля рисков.

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

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

Оптимизация

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

Резюме

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


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99

//@version=4


strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



////////////////////////////GENERAL INPUTS//////////////////////////////////////

length_Ma= input(defval=50, title="Length MAs", minval=1)

//==========HMA
getHULLMA(src, len) =>
    hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
    hullma

//==========T3
getT3(src, len, vFactor) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1,len)
    ema3 = ema(ema2,len)
    ema4 = ema(ema3,len)
    ema5 = ema(ema4,len)
    ema6 = ema(ema5,len)
    c1 = -1 * pow(vFactor,3)
    c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
    c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
    c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
    T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
    T3





hullma = getHULLMA(close,length_Ma)

t3 = getT3(close,length_Ma,0.7)


avg = (hullma+t3) /2


////////////////////////////PLOTTING////////////////////////////////////////////


colorado = avg > avg[1]? color.green : color.red

plot(avg , title="avg", color=colorado, linewidth = 4)

long=avg>avg[1]
short=avg<avg[1]

tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)

tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)


if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")


Больше