저점 스캐닝 지능형 추적 방식


생성 날짜: 2023-11-01 16:12:00 마지막으로 수정됨: 2023-11-01 16:12:00
복사: 2 클릭수: 650
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

저점 스캐닝 지능형 추적 방식

개요

하위 점 스캔 지능 추적법은 비 역동적인 Forex 거래 전략이다. 그것은 하위 점 스캐너를 사용하여 최저 지점을 찾고, 헐 이동 평균과 결합하여 거래 신호 판단을 수행하여 높은 승률을 달성 할 수 있다.

원리 분석

이 전략은 먼저 낮은 점 스캐너를 사용하여 최저점을 찾습니다. 낮은 점 스캐너는 가격과 거래량의 RSI 값을 계산하고 WMA 곡선과 비교하여 RSI 값이 WMA보다 낮을 때 최저점이라고 판단합니다.

다음으로, 전략은 Hull 이동 평균을 사용하여 거래 신호 판단을 수행한다. 그것은 두 개의 다른 기간의 Hull MA를 계산하며, 짧은 기간의 Hull MA가 긴 기간의 Hull MA를 통과 할 때 더 많은 것을하고, 낮은 기간의 Hull MA를 통과 할 때 공백을 만듭니다.

마지막으로, 전략은 최저점 스캔과 Hull MA의 신호를 결합하여 최저점 스캐너가 최저점 신호를 준 경우에만 Hull MA의 거래 신호를 발산하여 입점 전략을 형성한다.

이런 식으로, 시장의 최저 지점을 식별하고 추세를 추적함으로써, 잘못된 진입 시기를 효과적으로 피할 수 있으며, 거래 시스템의 승률을 높일 수 있다.

우위 분석

낮은 점 스캔의 장점은 다음과 같습니다.

  1. 낮은 점 스캐너를 사용하면 시장의 최저점을 정확하게 식별할 수 있으며, 높은 점에서 구매하는 것을 피할 수 있습니다.

  2. 헐 MA는 좋은 트렌드 추적 지표로, 큰 트렌드를 순차적으로 잡을 수 있다.

  3. 낮은 점 스캔과 Hull MA 상호 검증과 결합하여, 많은 양의 소음을 필터링하여 가짜 신호를 줄일 수 있다.

  4. 점진적 손실 퇴출 메커니즘을 적용하여 수익을 최대한 고정하고 회귀를 피할 수 있습니다.

  5. 이 전략은 역동적인 지표가 아니라, 역사적 데이터를 조작하지 않고, 진실하고 신뢰할 수 있습니다.

위험 분석

이 전략에는 다음과 같은 위험들이 있습니다.

  1. 최저점 스캐너는 최저점의 일부를 누락할 수 있으며, 이는 거래 기회를 놓치게 할 수 있다. 스캐닝 범위를 넓히기 위해 파라미터를 적절히 조정할 수 있다.

  2. 급격한 반전이 발생할 수 있으며, 이로 인해 중지 손실이 발생할 수 있습니다. 중지 손실 범위를 적절히 완화하고 위치 크기를 합리적으로 제어 할 수 있습니다.

  3. 잘못된 매개 변수 설정으로 인해 거래 신호가 너무 많거나 너무 적을 수 있습니다. 최적의 매개 변수 조합을 찾기 위해 여러 번 반복적으로 최적화해야합니다.

  4. 이 전략은 트렌드가 뚜렷한 FOREX 품종에만 적용되며, 평형, 흔들리는 시장의 거래에는 적합하지 않습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 최저점 스캐너의 파라미터를 최적화하여 최저점을 더 정확하게 식별할 수 있도록 한다.

  2. 헐 MA의 파라미터를 최적화하여 트렌드를 보다 정확하게 추적할 수 있도록 한다.

  3. MACD, KDJ 등과 같은 다른 지표 필터를 추가하여 신호의 신뢰성을 높인다.

  4. 기계 학습 모델 예측 결과를 추가하여 거래 신호 판단을 지원합니다.

  5. 시장의 변동에 따라 동적으로 조정할 수 있도록 손해 방지 장치를 최적화하십시오.

  6. 포지션 관리 전략을 최적화하여 시스템에서 자금 관리 규칙에 따라 포지션을 동적으로 조정할 수 있도록 한다.

요약하다

하위점 스캔 지능 추적법은 높은 승률의 비 역동적인 외환 거래 전략이다. 그것은 시장의 최저점을 정확하게 식별할 수 있고, 추세가 명확할 때 순차적으로 입문하고, 점진적 인 손실을 차단하여 수익을 고정 할 수 있다. 이 전략은 최적화 할 수있는 공간이 넓고, 여러 측면에서 개선 할 수 있으며, 강력한 자동 거래 시스템으로 만들 수 있다.

전략 소스 코드
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-25 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
// strategy(title = "Low Scanner Forex strategy", overlay = false, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
leng=1
p1=close[1]
min=input(1440)
len55 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
tf3 = input("W", type=input.resolution)
ti = change( time(tf3) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
min1 =input(60)
len100 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min1 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange
plot(zx,color=col,linewidth=1)
//

tf10 = input("W", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(24, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)


a = security(syminfo.tickerid, tf10, hma(close, length))
b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


//plot(linear_reg, color=color.blue, title="LR", linewidth=3)

buy=crossover(linear_reg, b) 
sell=crossunder(linear_reg, b) 
//
// Time period input
testStartYear = input(2016, "BACKTEST START YEAR", minval = 1980, maxval = 2222) 
testStartMonth = input(06, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2222, "BACKTEST STOP YEAR", minval=1980, maxval = 2222)
testStopMonth = input(12, "BACKTEST STOP MONTH", minval=1, maxval=12)
testStopDay = input(31, "BACKTEST STOP DAY", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod = time >= testPeriodStart and time <= testPeriodStop ? true : false
l = crossover(zx,0) or buy
        
if l and testPeriod
    strategy.entry("buy", strategy.long)

per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=25, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=0.5, minval=0.01)
tp2=input(title=" Take profit2", defval=1, minval=0.01)
tp3=input(title=" Take profit3", defval=1.5, minval=0.01)
tp4=input(title=" Take profit4", defval=2, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)