이동 평균 추세 추종 거래 전략


생성 날짜: 2023-12-11 15:05:31 마지막으로 수정됨: 2023-12-11 15:05:31
복사: 0 클릭수: 576
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

이동 평균 추세 추종 거래 전략

개요

이 전략은 이동 평균과 가격 변화율을 계산하여 일정 기간 동안의 K선과 결합하여 현재 상승 추세 또는 하향 추세에 있는지 판단하고 그에 따라 더 많이 또는 더 많이 한다.

전략 원칙

이 전략은 먼저 길이가 l인 간단한 이동 평균 a와 길이가 l인 가격 변화율 r을 계산한다. 다음으로는 현재 K선 가격과 이동 평균의 차수를 계산한다. 마지막으로 k를 과거 s 루트 K선들의 총 합을 계산한다.

sum>0일 때, 현재 상승 추세에 있다는 것을 나타내며, 이 전략은 더 많이 할 것이다. sum일 때, 현재 하향 추세에 있다는 것을 나타내며, 이 전략은 공백을 할 것이다.

더 많은 상쇄를 한 후, 트렌드가 역전될 때까지 포지션을 유지합니다.

우위 분석

이 전략의 가장 큰 장점은 트렌드를 파악하고 트렌드 거래에 적합하다는 것입니다. 구체적으로 다음과 같은 몇 가지 장점이 있습니다.

  1. 이동 평균을 사용하여 전체적인 트렌드 방향을 판단하여 시장 소음을 효과적으로 필터링하여 주요 트렌드를 고정 할 수 있습니다.

  2. 가격 변화율 지표는 동력의 강도를 측정하고 강세를 놓치지 않도록 합니다.

  3. 일정 주기 동안 여러 개의 K선을 고려하면, 트렌드를 더 정확하게 판단할 수 있으며, einzelne Ausreißer in die Irre führen‬을 피할 수 있다.

  4. 트렌드가 변하지 않는 한, 계속 포지션을 유지하여 트렌드 상황으로 인한 이익을 최대한 누릴 수 있습니다.

위험 분석

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

  1. 트렌드 종료 시기를 정확히 판단할 수 없고, 조기 중단되거나, 수익을 놓칠 수도 있다.

  2. 단독 손실의 크기를 효과적으로 통제할 수 없으며, 극단적인 경우 손실이 더 커질 수 있습니다.

  3. 잘못된 전략은 너무 자주 거래하거나 일부 거래 기회를 놓치게 할 수 있습니다.

  4. 장기간 포지션을 보유하는 것은 밤새의 이자 및 보증금의 위험에 직면할 수 있습니다.

위험을 통제하기 위해, 스톱로스를 설정할 수 있고, 유동성이 높은 상품만을 거래할 수 있으며, 최적화 매개 변수와 합리적인 레버리지를 사용할 수 있다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.

  1. 다양한 길이의 이동 평균과 가격 변화율을 테스트하여 최적의 파라미터 조합을 찾습니다.

  2. MACD와 같은 다른 지표로 추세를 판단하여 정확도를 더 높일 수 있습니다.

  3. 포지션 관리 메커니즘을 추가, 예를 들어, 수익 후 부분 중단, 단일 손실을 제어.

  4. 변동성 지표와 함께 동적 스톱로드를 설정하여 극단적인 상황의 위험을 줄여줍니다.

  5. 포지션 개시 및 포지션 논리를 최적화하고, 가짜 돌파구를 필터링하여 거래 효율성을 향상시킵니다.

요약하다

이 전략의 전체적인 아이디어는 명확하고 구현하기 쉬운 것으로, 트렌드를 추적하여 긴 라인 포지션 거래를 하고, 철회 통제는 상대적으로 합리적이며, 안정적인 수익을 추구하는 투자자에게 적합하다.

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

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")
if sum<0
    strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")

strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0

//shortCondition = sum<0
//exitshort = sum>0

//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)