다중 지표 조합 적응 트렌드 전략

저자:차오장, 날짜: 2023-12-19 11:01:05
태그:

img

전반적인 설명

이 전략은 이중 Hull 이동 평균 지표, 볼륨 가중 이동 평균 지표, MACD 지표 및 진정한 강도 지표를 결합하여 트렌드를 정확하게 판단합니다. 시장 조건의 변화에 자동으로 적응 할 수 있으며 강력한 적응력을 가지고 있습니다.

전략 원칙

이 전략의 핵심 지표는 두 개의 매개 변수 keh와 teh에 의해 제어되는 이중 Hull 이동 평균이다. 이 두 가지 매개 변수는 각각 빠른 라인과 느린 라인의 주기를 결정한다. 빠른 라인과 느린 라인이 형성한 황금 십자가와 죽은 십자가는 현재 추세를 판단한다.

보조 판단 지표는 볼륨 가중화 이동 평균 meh1입니다. 가격이 meh1보다 높으면 상승 추세입니다. 가격이 meh1보다 낮으면 하락 추세입니다.

또 다른 보조 판단 지표는 MACD입니다. MACD를 얻기 위해 느린 이동 평균에서 빠른 이동 평균을 빼고 MACD의 이동 평균을 사용하여 신호선을 얻음으로써 얻습니다. MACD가 신호선보다 높을 때 상승 추세입니다.

마지막 보조 판단 지표는 TSI입니다. 이 지표는 가격 변화율을 두 번 평평화하여 계산됩니다. 절대 값 크기는 가격 변화의 동력을 나타냅니다. 구매 및 판매 조건에서 TSI의 신호선은 입출시기를 제어하는 것으로 판단됩니다.

이러한 지표의 신호를 결합함으로써 추세를 정확하게 판단 할 수 있으며 매개 변수를 자동으로 조정하여 시장과 동기화 할 수 있습니다.

장점

  1. 이중 Hull 이동 평균을 주요 판단 지표로 사용하여 여러 다른 지표와 결합하면 판단 정확도를 향상시키고 잘못된 신호를 줄일 수 있습니다.

  2. 시장 진입 및 시장 퇴출 시기를 결정하기 위해 TSI 지표를 적용하면 위험을 제어 할 수 있습니다.

  3. 시장 변화에 자동으로 적응할 수 있는 강력한 적응력을 위한 여러 가지 조절 가능한 매개 변수

  4. 지표 조합과 매개 변수 자체 적응의 아이디어는 강력한 지속적인 수익성으로 전략을 안정화시킵니다.

위험 분석

  1. 비록 TSI 지표가 타이밍을 결정하는 데 사용되지만 알고리즘에서 사용되는 지표는 여전히 트렌드 유형입니다. 충격 및 인회 시장이 발생하면 이익과 손실의 변동이 증가합니다.

  2. 잘못된 매개 변수 설정은 전략 실패를 일으킬 수 있습니다. 매개 변수는 경험에 기초하여 합리적으로 설정해야합니다.

  3. 여러 지표의 조합은 계산의 양을 증가시킵니다. 이는 큰 데이터 주식과 시간대에 오류가 발생할 가능성을 증가시킵니다. 데이터 범위는 통제되어야합니다.

  4. 비정상적인 데이터의 간섭을 방지하기 위해 지표의 계산 효과를 모니터링해야 합니다.

최적화 방향

  1. 신호가 더 정확하고 신뢰할 수 있도록 BOLL과 같은 다른 보조 지표가 테스트 될 수 있습니다.

  2. 진입 및 출구 논리를 최적화하고, 단 하나의 이익과 손실을 제어하기 위해 손해를 멈추고 수익 조건을 설정합니다.

  3. 다른 품종에 더 적합하도록 다른 품종에 대한 매개 변수를 훈련하고 최적화하십시오.

  4. 최근 거래 효과에 따라 전략 매개 변수를 자동으로 조정하기 위해 매개 변수 자기 적응 모듈을 높여

요약

이 전략은 여러 지표의 장점을 통합하고 트렌드 방향을 판단하기 위해 지표 조합을 사용합니다. 위험을 제어하면서 판단의 정확성을 향상시킵니다. 매개 변수 최적화 및 논리 최적화로 전략은 시장 변화에 더 잘 적응 할 수 있으며 연속 손실을 줄이고 더 큰 이익을 얻을 수 있습니다. 이 전략은 안정적이며 주식, 암호화폐 및 기타 품종에 장기적으로 사용될 수 있습니다.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                    Quad-HullMA-cross & VWMA & MacD & TSI combination  <<<<< by SeaSide420 >>>>>>
strategy("MultiCross420", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
keh=input(title="Double HullMA 1",defval=7, minval=1)
teh=input(title="Double HullMA 2",defval=14, minval=1)
meh=input(title="VWMA",defval=1, minval=1)
meh1=vwma(close,round(meh))
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
n2ma3=2*wma(close,round(teh/2))
nma2=wma(close,teh)
diff2=n2ma3-nma2,sqn2=round(sqrt(teh))
n2ma4=2*wma(close[2],round(teh/2))
nma3=wma(close[2],teh)
diff3=n2ma4-nma3,sqn3=round(sqrt(teh))
n3=wma(diff2,sqn2)
n4=wma(diff3,sqn3)
fastLength = input(title="MacD fastLength", defval=7)
slowlength = input(title="MacD slowlength", defval=14)
MACDLength = input(title="MacD Length", defval=3)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
a1=plot(n1,color=c),a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = cross, color=b, linewidth = 3)
a3=plot(n3,color=c),a4=plot(n4,color=c)
plot(cross(n3, n4) ? n1 : na, style = cross, color=b, linewidth = 3)
//a5=plot(meh1,color=c)
long = input(title="TSI Long Length",  defval=5)
short = input(title="TSI Short Length",  defval=3)
signal = input(title="TSI Signal Length",  defval=2)
linebuy = input(title="TSI Upper Line",  defval=4)
linesell = input(title="TSI Lower Line",  defval=-4)
price = close
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
closelong = n1<n2 and n3<n4 and n1>meh1
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n3>n4 and n1<meh1
if (closeshort)
    strategy.close("Short") 
longCondition = strategy.opentrades<1 and n1>n2 and MACD>aMACD and n1<meh1 and n3>n4 and ema(tsi_value, signal)>linesell
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = strategy.opentrades<1  and n1<n2 and MACD<aMACD and n1>meh1 and n3<n4 and ema(tsi_value, signal)<linebuy
if (shortCondition)
    strategy.entry("Short",strategy.short)

더 많은