Стратегия долгого входа KDJ Golden Cross

Автор:Чао Чжан, Дата: 2024-02-01 10:28:12
Тэги:

img

Обзор

Стратегия KDJ Golden Cross Long Entry - это количественная торговая стратегия, основанная на индикаторе KDJ. Эта стратегия в основном использует золотой крест линии J и линии D индикатора KDJ для генерации сигналов покупки и идет в длинный путь, когда линия J пересекает линию D. Стратегия относительно проста и проста в реализации, подходящая для начинающих количественной торговли.

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

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

K = (Текущее закрытие - Наименьшее за последние N дней) ÷ (Самое высокое за последние N дней - Самое низкое за последние N дней) x 100;

D = скользящая средняя за M дней K;

J = 3K - 2D.

Согласно правилам индикатора KDJ, когда линия J пересекает линию D, это указывает на то, что цены изменяются вверх и можно занять длинные позиции; когда линия J падает ниже линии D, это указывает на то, что цены изменяются вниз и можно начать короткие позиции.

Эта стратегия использует вышеперечисленные правила и генерирует сигналы покупки, когда линия J пересекает линию D, то есть образует золотой крест, чтобы пойти на длинные позиции.

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

  1. Использование индикатора KDJ для определения сроков входа, который включает в себя движение цены вверх и вниз, что делает его более надежным.

  2. Стратегия имеет четкие и простые правила сигнализации, которые легко понять и реализовать, подходящие для начинающих.

  3. Принято ограничение прибыли и ограничение убытков для эффективного контроля рисков.

  4. Большое пространство для оптимизации параметров и гибкой реализации.

Риски

  1. Индикатор KDJ имеет тенденцию генерировать ложные сигналы, приводящие к потерям.

  2. Краткосрочные корректировки на рынке после покупки могут привести к выходу стоп-лосса и пропустить основные тенденции.

  3. Неправильное настройка параметров может привести к переоценке или неясным сигналам.

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

Основные методы управления рисками: правильная оптимизация параметров, отслеживание индексов для улучшения, соответствующее расширение диапазона стоп-лосса и т.д.

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

  1. Оптимизируйте параметры KDJ, чтобы найти лучшие комбинации параметров.

  2. Добавить условия фильтрации, чтобы избежать ложных сигналов.

  3. Может выбирать различные параметры на основе типа рынка (бычий или медвежий рынок).

  4. Может должным образом расширять диапазон стоп-лосса для снижения вероятности выхода стоп-лосса.

  5. Может объединять объем торговли и другие показатели для анализа, чтобы избежать ловушки.

Резюме

Стратегия KDJ Golden Cross Long Entry относительно проста и практична в целом, легко для начинающих начать и реализовать. Стратегия имеет определенные торговые преимущества, но также имеет некоторые риски. Ей нужна целенаправленная оптимизация, чтобы полностью реализовать ценность стратегии. В целом стратегия заслуживает ключевых исследований и применения.


/*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 --------------------------> 


Больше