Стратегия интегрального индикатора импульса

Автор:Чао Чжан, Дата: 2023-11-06 14:40:26
Тэги:

img

Обзор

Эта стратегия генерирует торговые сигналы путем расчета суммы различий между ROC и SMA.

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

Стратегия сначала рассчитывает SMA с длиной l и ROC. Затем она рассчитывает разницу k между ценой закрытия и SMA. Далее она суммирует k за s дней и получает сумму. Когда сумма > 0, она идет длинной. Когда сумма < 0, она идет короткой.

В частности, в коде:

  1. Вычислим SMA с длиной l, получим a.

  2. Вычислим ROC с длиной l, получим r.

  3. Вычислить разницу между ценой закрытия и SMA: k = закрытие - a.

  4. Подсчитайте k для s дней, получаем сумму.

  5. Если сумма>0, то длинная позиция; если сумма<0, то короткая позиция.

  6. Выйти, когда сумма <0 для длинной и сумма>0 для короткой.

Ключ заключается в том, чтобы суммировать разницу k и использовать знак суммы для торговых сигналов. Когда k > 0 за последние дни, цена растет, так что идти долго. Когда k < 0, цена снижается, так что идти коротко.

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

Эта простая краткосрочная стратегия торговли имеет следующие преимущества:

  1. Используемые показатели просты и понятны.

  2. Фильтрация по разнице показателей может найти более точные торговые возможности.

  3. Подведение итогов различий позволяет лучше определить краткосрочные тенденции.

  4. Параметры l и s могут регулироваться для разных циклов.

  5. Логика ясна и легко модифицировать и оптимизировать.

  6. Высокая эффективность использования капитала при частом краткосрочном торговле.

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

Существуют также некоторые риски:

  1. Высокие риски в краткосрочной торговле, возможны убытки.

  2. Неправильные параметры могут привести к чрезмерной торговле или упущенным возможностям.

  3. Трудно адаптироваться к изменению тренда, отсутствие остановки может привести к большим потерям.

  4. Частые корректировки параметров в значительной степени зависят от опыта трейдера.

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

Решения:

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

  2. Добавьте индикаторы тренда для выявления перемен.

  3. Оптимизировать стоп-лосс для контроля одиночных потерь.

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

  5. Оптимизировать модель исполнения заказов для снижения затрат на транзакции.

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

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

  1. Оптимизировать методы расчета параметров, такие как генетические алгоритмы, чтобы сделать параметры адаптивными.

  2. Добавить больше показателей и фильтров для улучшения качества сигнала.

  3. Улучшить стратегию стоп-лосса, например, отслеживать стоп-лосс.

  4. Оптимизируйте стратегии управления деньгами, такие как контроль рисков.

  5. Оптимизировать модель исполнения ордеров с последующим трендом, контролем скольжения и т.д.

  6. Добавьте модули обратного тестирования и автоматической оптимизации.

  7. Добавьте количественную оценку качества сигнала.

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

Резюме

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


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("Long", strategy.long, oca_name="Long",  comment="Long")
else
    strategy.cancel(id="Long")
if sum<0
    strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
    strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0

//shortCondition = sum<0
//exitshort = sum>0

//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Больше