Количественная торговая стратегия, основанная на кривой Коппока


Дата создания: 2023-11-13 11:44:55 Последнее изменение: 2023-11-13 11:44:55
Копировать: 0 Количество просмотров: 725
1
Подписаться
1617
Подписчики

Количественная торговая стратегия, основанная на кривой Коппока

Обзор

Эта стратегия использует малоизвестные технические показатели кривой Коппока для количественной торговли. Кривая Коппока получена путем вычисления взвешенного скользящего среднего изменения индекса S&P 500 или эквивалента сделки.

Принципы

Стратегия использует кривую Коппока в качестве технического показателя для создания торговых сигналов. Формула вычисления кривой Коппока:

Кривая Коппока = 10-циклическая взвешенная скользящая средняя (ROC 14-циклического изменения + ROC 11-циклического изменения)

Формула для расчета коэффициента изменения ROC: ((CurrentClose - N-циклическийClose) / N-циклическийClose

Стратегия основана на цене закрытия $SPY и рассчитывает ее по кривой Коппока. Когда кривая пересекает нулевую линию, она создает сигнал покупки, а когда она пересекает нулевую линию, она создает сигнал продажи.

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

  • Использование уникального индикатора кривой Коппока, который имеет лучшую прогнозируемость по сравнению с обычными индикаторами, такими как скользящая средняя
  • Настраиваемые параметры индикатора для оптимизации, такие как циклы взвешенных скользящих средних, циклы расчета коэффициента изменения и т. Д.
  • Применение $SPY в качестве источника сигналов, высокая представительство на рынке
  • Выберите trailing stop, чтобы зафиксировать прибыль и снизить отказ.

Риск

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

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

  • Тестирование различных рынков, различных акций для оптимизации оптимального сочетания параметров
  • В сочетании с другими показателями фильтрация ложных сигналов, таких как объем сделок
  • Динамическая оптимизация стопроцентной убыли
  • Рассчитайте количество сделок или ценовые прорывы в качестве входа

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

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

Исходный код стратегии
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 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/
// © RolandoSantos

//@version=4
strategy(title = "Coppock Curve", shorttitle = "Copp Curve Strat", default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)

///trail stop
longTrailPerc = input(title="Trail Long Loss (%)", minval=0.0, step=0.1, defval=100) * 0.01

// Determine trail stop loss prices
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
//Use SPY for Copp Curve entries and exits//
security = input("SPY")
ticker = security(security, "D", close)

///Copp Curve////
wmaLength = input(title="WMA Length", type=input.integer, defval=10)
longRoCLength = input(title="Long RoC Length", type=input.integer, defval=14)
shortRoCLength = input(title="Short RoC Length", type=input.integer, defval=11)
source = ticker
curve = wma(roc(source, longRoCLength) + roc(source, shortRoCLength), wmaLength)

///Lower Band Plot///
band1 = hline(0)
band0 = hline(100)
band2 = hline(-100)
fill(band1, band0, color=color.green, transp=90)
fill(band2, band1, color=color.red, transp=90)
plot(curve, color=color.white)

///Trade Conditions///
Bull = curve > 0
Bear = curve < 0

///Entries and Exits//
if (Bull)
    strategy.entry("Long", strategy.long, comment = "LE")
    

if (Bear)
    strategy.close("Long", qty_percent=100, comment="close")
    
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="Long Trail Stop", stop=longStopPrice)