Переключение поворота повышено до длинного только - стратегия двойного импульса

Автор:Чао Чжан, Дата: 2023-12-25 17:47:11
Тэги:

img

Обзор

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

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

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

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

Преимущества

  1. Объединяет сильные стороны двух стратегий для более стабильных и надежных торговых решений

  2. Стратегия Pivot Point оценивает точки переворота, в то время как LSMA фильтрует ложные прорывы, уменьшая риски торговли

  3. Только длится долго, в соответствии с большинством людей психологические ожидания

  4. Простая и понятная логика стратегии, легко понятная и оптимизируемая

  5. Умеренная частота торговли, подходящая для средне- и долгосрочных операций

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

  1. Неспособность воспользоваться уменьшающимися возможностями

  2. Некоторое отставание существует, может пропустить некоторые возможности для повышения

  3. Более крупные убытки при изменении рыночной тенденции

Решения:

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

  2. Корректировка параметров MA для оптимизации участия

  3. Добавить стоп-лосс для уменьшения одиночных потерь

Руководство по оптимизации

  1. Добавление нескольких индикаторов тренда для повышения точности

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

  3. Комбинировать индикаторы волатильности для управления размещением позиций

  4. Оптимизируйте параметры для повышения скорости победы

  5. Испытать данные более длительных временных рамок для проверки стабильности

Резюме

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


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author exlux99

strategy(title = "Pivot Reversal Upgraded long only", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1)
/////////////
//time

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 = 2010, 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 = 2031, title = "To Year", minval = 1970)

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

length = input(title="Length MA", type=input.integer, defval=20)
offset = 0//input(title="Offset", type=input.integer, defval=0)
src = input(close, title="Source")
lsma = linreg(src, length, offset)

//LSMA
leftBars = input(3)
rightBars = input(16)
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond and time_cond? true : (le[1] and high > hprice ? false : le[1])
//leverage
multiplier=input(1.0, step=0.5)
g(v, p) => round(v * (pow(10, p))) / pow(10, p)
risk     = input(100)
leverage = input(1.0, step = 0.5)
c = g((strategy.equity * leverage / open) * (risk / 100), 4)

//entry
strategy.entry("long", strategy.long,c, when=le and close > lsma, comment="long", stop=(hprice + syminfo.mintick) * multiplier)

    
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
strategy.close("long", when=se)




Больше