
Стратегия прорыва на линии KDJ - это стратегия количественного трейдинга, основанная на индикаторе KDJ. Стратегия использует главным образом золотой крест линии J и линии D индикатора KDJ для формирования сигнала покупки, делая много входов при прохождении линии D на линии J. Стратегия проста, проста в реализации и подходит для начинающих в количественном трейдинге.
Основными техническими показателями, используемыми в этой стратегии, являются показатели KDJ.
K = {окончательная цена за день - наименьшая цена за N дней} ÷ {окончательная цена за N дней - наибольшая цена за N дней} × 100;
Д = M-дневная скользящая средняя по K-значению;
J = 3K-2D.
Согласно установке индикатора KDJ, когда J-значение превышает D-значение, указывающее на то, что цена акции перевернулась вверх, можно сделать больше; когда J-значение превышает D-значение, указывающее на то, что цена акции перевернулась вниз, можно сделать пробел.
Стратегия заключается в том, чтобы использовать вышеуказанное правило, чтобы сделать много входных позиций при покупке сигнала при прохождении линии D на линии J, т.е. при формировании золотого форка. Выйти из позиции, когда exitsignal больше линии J, чем 100.
Используйте индикатор KDJ, чтобы определить, когда стоит купить, который учитывает информацию о падении цен на акции и является более надежным.
Правила определения стратегических сигналов просты, понятны и легко применяются, поэтому они подходят для начинающих в количественной торговле.
Применение стратегии “стоп-стоп-лосс” позволяет эффективно контролировать риск.
Оптимизация параметров стратегии имеет большое пространство и гибкость в реализации.
Показатели KDJ легко поддаются ложному сигналу, что может привести к убыткам.
После покупки, короткие корректировки рынка могут привести к потере выхода, что не позволит уловить большую тенденцию.
Неправильная настройка параметров может привести к частым сделкам или неочевидным сигналам.
Необходимо обратить внимание на влияние затрат на общую прибыль.
Основные методы управления рисками: рациональная оптимизация параметров, усиление индекса отслеживания, надлежащее расширение пределов остановки и т. д.
Оптимизируйте параметры KDJ, чтобы найти оптимальную комбинацию параметров.
Добавить условия фильтрации, чтобы избежать ложных сигналов. Фильтрация может быть выполнена в сочетании с другими показателями или формами.
В зависимости от типа рынка можно выбрать различные параметры.
Стоп-лосс может быть расширен соответствующим образом, чтобы уменьшить вероятность выхода из стоп-лосса.
Это может быть связано с анализом таких показателей, как объем сделок, чтобы избежать обмана.
В целом, стратегия KDJ является простой, практичной и легкой в реализации, особенно подходит для начинающих, которые хотят начать количественную торговлю. Эта стратегия имеет определенные торговые преимущества, но также содержит некоторые риски, которые требуют целенаправленной оптимизации, чтобы в полной мере использовать ценность стратегии. В целом, эта стратегия заслуживает особого внимания исследования и применения.
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// ## !<------------------ Script -------------------------->
//@version=5
strategy('KDJ NVDA', shorttitle='KDJ')
ilong = input(9, title='period')
isig = input(3, title='signal')
bcwsma(s, l, m) =>
_bcwsma = float(na)
_s = s
_l = l
_m = m
_bcwsma := (_m * _s + (_l - _m) * nz(_bcwsma[1])) / _l
_bcwsma
// profit strategy add
profit_m = input.float(1.20,"Profit Margin",minval=1.0,maxval=1.99,step=0.05)
stop_m = input.float(0.98,"Stop Loss Margin",minval=0.0,maxval=1,step=0.05)
// Make input options that configure backtest date range
startDate = input.int(title="Start Date", defval=1, minval=1,maxval=31)
startMonth = input.int(title="Start Month", defval=1,minval=1,maxval=12)
startYear = input.int(title="Start Year", defval=2023,minval=2018,maxval=2024)
endDate = input.int(title="End Date", defval=1, minval=1,maxval=31)
endMonth = input.int(title="End Month", defval=1,minval=1,maxval=12)
endYear = input.int(title="End Year", defval=2024,minval=2018,maxval=2099)
// intialization of variables
// Look if the close time of the current bar
// falls inside the date range
inDateRange = (time >= timestamp(syminfo.timezone, startYear,startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
c = close
h = ta.highest(high, ilong)
l = ta.lowest(low, ilong)
RSV = 100 * ((c - l) / (h - l))
pK = bcwsma(RSV, isig, 1)
pD = bcwsma(pK, isig, 1)
pJ = 3 * pK - 2 * pD
KDJ = math.avg(pD, pJ, pK)
go_long= ta.crossunder(pD,pJ)
if (inDateRange and go_long)
strategy.entry("S",strategy.long,comment="C")
// strategy.exit("S", limit=c*profit_m, stop=c*stop_m, comment="SL/SP")
if (inDateRange and pJ > 100)
strategy.close("S", comment="TP")
// Plot options
// plot(pK, color= #1E88E5)
// plot(pD, color=#FF6F00)
// plot(ma, color=color.yellow)
// bgcolor(pJ>pD? color.green : color.red)
plot(pK, title='% K', color=color.new(color.orange, 0))
plot(pD, title='% D', color=color.new(color.lime, 0))
plot(pJ, title='% J', color=color.new(color.fuchsia, 0))
plot(KDJ, title='KDJ', color=color.new(color.white, 0))
// </PINE> </SCRIPT>
// ## This source code is subject to the terms of the ozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// ## !<------------------ End Script -------------------------->