
Эта стратегия использует малоизвестные технические показатели кривой Коппока для количественной торговли. Кривая Коппока получена путем вычисления взвешенного скользящего среднего изменения индекса S&P 500 или эквивалента сделки.
Стратегия использует кривую Коппока в качестве технического показателя для создания торговых сигналов. Формула вычисления кривой Коппока:
Кривая Коппока = 10-циклическая взвешенная скользящая средняя (ROC 14-циклического изменения + ROC 11-циклического изменения)
Формула для расчета коэффициента изменения ROC: ((CurrentClose - N-циклическийClose) / N-циклическийClose
Стратегия основана на цене закрытия $SPY и рассчитывает ее по кривой Коппока. Когда кривая пересекает нулевую линию, она создает сигнал покупки, а когда она пересекает нулевую линию, она создает сигнал продажи.
Эта стратегия использует уникальные кривообразные характеристики кривой Коппока для создания торговых сигналов. По сравнению с обычными показателями, кривая Коппока имеет более сильную прогнозируемость. Однако ее надежность в качестве независимого показателя все еще требует проверки. Рекомендуется использовать ее в комбинации с другими факторами, чтобы отфильтровать фальшивые сигналы.
/*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)