
이 전략은 이동 평균과 가격 변화율을 계산하여 일정 기간 동안의 K선과 결합하여 현재 상승 추세 또는 하향 추세에 있는지 판단하고 그에 따라 더 많이 또는 더 많이 한다.
이 전략은 먼저 길이가 l인 간단한 이동 평균 a와 길이가 l인 가격 변화율 r을 계산한다. 다음으로는 현재 K선 가격과 이동 평균의 차수를 계산한다. 마지막으로 k를 과거 s 루트 K선들의 총 합을 계산한다.
sum>0일 때, 현재 상승 추세에 있다는 것을 나타내며, 이 전략은 더 많이 할 것이다. sum일 때, 현재 하향 추세에 있다는 것을 나타내며, 이 전략은 공백을 할 것이다.
더 많은 상쇄를 한 후, 트렌드가 역전될 때까지 포지션을 유지합니다.
이 전략의 가장 큰 장점은 트렌드를 파악하고 트렌드 거래에 적합하다는 것입니다. 구체적으로 다음과 같은 몇 가지 장점이 있습니다.
이동 평균을 사용하여 전체적인 트렌드 방향을 판단하여 시장 소음을 효과적으로 필터링하여 주요 트렌드를 고정 할 수 있습니다.
가격 변화율 지표는 동력의 강도를 측정하고 강세를 놓치지 않도록 합니다.
일정 주기 동안 여러 개의 K선을 고려하면, 트렌드를 더 정확하게 판단할 수 있으며, einzelne Ausreißer in die Irre führen을 피할 수 있다.
트렌드가 변하지 않는 한, 계속 포지션을 유지하여 트렌드 상황으로 인한 이익을 최대한 누릴 수 있습니다.
이 전략에는 다음과 같은 위험들이 있습니다.
트렌드 종료 시기를 정확히 판단할 수 없고, 조기 중단되거나, 수익을 놓칠 수도 있다.
단독 손실의 크기를 효과적으로 통제할 수 없으며, 극단적인 경우 손실이 더 커질 수 있습니다.
잘못된 전략은 너무 자주 거래하거나 일부 거래 기회를 놓치게 할 수 있습니다.
장기간 포지션을 보유하는 것은 밤새의 이자 및 보증금의 위험에 직면할 수 있습니다.
위험을 통제하기 위해, 스톱로스를 설정할 수 있고, 유동성이 높은 상품만을 거래할 수 있으며, 최적화 매개 변수와 합리적인 레버리지를 사용할 수 있다.
이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.
다양한 길이의 이동 평균과 가격 변화율을 테스트하여 최적의 파라미터 조합을 찾습니다.
MACD와 같은 다른 지표로 추세를 판단하여 정확도를 더 높일 수 있습니다.
포지션 관리 메커니즘을 추가, 예를 들어, 수익 후 부분 중단, 단일 손실을 제어.
변동성 지표와 함께 동적 스톱로드를 설정하여 극단적인 상황의 위험을 줄여줍니다.
포지션 개시 및 포지션 논리를 최적화하고, 가짜 돌파구를 필터링하여 거래 효율성을 향상시킵니다.
이 전략의 전체적인 아이디어는 명확하고 구현하기 쉬운 것으로, 트렌드를 추적하여 긴 라인 포지션 거래를 하고, 철회 통제는 상대적으로 합리적이며, 안정적인 수익을 추구하는 투자자에게 적합하다.
/*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)