리소스 로딩... 로딩...

알리거터, 장기 트렌드 추적 거래 전략

저자:차오장, 날짜: 2024-05-17 15:40:13
태그:SMMASMA

Alligator 长期趋势跟踪交易策略

개요

알리게터 장기 트렌드 추적 거래 전략은 윌리엄스 알리게터 지표에 기반한 양적 거래 전략이다. 이 전략은 다양한 주기의 이동 평균 라인 조합을 사용하여 시장의 주요 트렌드를 캡처하여 중장기 트렌드 추적 거래에 적합합니다. 전략의 주요 아이디어는 알리게터 지표의 개척 방향과 가격과 알리게터 지표의 상대적 위치로 트렌드의 방향과 강도를 판단하여 거래 결정을 내리는 것입니다.

전략적 원칙

알리거터 장기 트렌드 추적 거래 전략은 알리거터 지표를 세 개의 다른 주기의 이동 평균을 사용하여 구성합니다.

  1. 자우 라인: 13주기 SMMA, 미래로 평행 8개의 K 라인
  2. Teeth 라인: 8주기 SMMA, 미래로 평행 5 K 라인
  3. 립스 라인: 5주기 SMMA, 미래로 평행 3개의 K 라인

알리거터 지표의 개척 방향이 상향으로, 즉 자우 라인이 가장 밑에, 테스 라인이 중간에, 립스 라인이 가장 위에, 그리고 가격이 알리거터 지표보다 높을 때, 전략은 더 많은 지점을 개척합니다. 이것은 상승 추세 파도가 확인된 것을 나타냅니다. 우리는 추세가 끝날 때까지 그 지위를 유지하기를 원합니다.

이 전략은 가격이 자우 라인을 넘어갈 때 많은 주문을 평준화 할 것입니다. 이것은 우리가 곰 시장에서 계속 지위를 유지하지 않을 것을 보장합니다.

전략적 장점

  1. 중장기 트레이딩에 적합: 이 전략은 알리거터 지표에 기반하여 시장의 주요 트렌드를 효과적으로 캡처하여 중장기 트렌드 추적 트레이딩에 매우 적합합니다.
  2. 거래 빈도가 낮다: 전략은 트렌드가 형성되는 것을 확인하고 트렌드가 종료되는 것을 평형시키는 경우에만 거래를 개시하고 거래 빈도가 상대적으로 낮아 거래 비용을 효과적으로 줄일 수 있다.
  3. 폭넓은 적용: 이 전략은 외환, 암호화폐 등 다양한 금융 시장에 적용될 수 있으며, 높은 적응력과 유연성을 가지고 있다.
  4. 매개 변수 최적화가 필요 없습니다: 전략은 시장 추세를 완전히 따르고 매개 변수 최적화가 필요 없으며 간단합니다.

전략적 위험

  1. 잠재적인 슬라이드 리스크: 시장의 급격한 변동이나 유동성이 부족한 상황에서 거래 주문이 예상 가격에 거래되지 않을 수 있어 슬라이드 리스크를 초래한다.
  2. 고정된 리스크 관리의 부족: 이 전략은 고정된 리스크 관리 설정이 없으며 자신의 위험 선호도에 따라 각 거래의 지점 크기를 조정해야 한다.
  3. 단기 기회를 놓칠 수 있다: 전략이 중장기 추세를 포착하는 데 집중하기 때문에 단기 거래 기회를 놓칠 수 있다.

전략적 최적화 방향

  1. 리스크 관리 모듈에 가입하십시오: 리스크를 더 잘 제어하기 위해 손해를 막거나 동적 지위 조정 등의 리스크 관리 조치를 추가하는 것을 고려할 수 있습니다.
  2. 다른 기술 지표와 결합: 전략의 정확성과 신뢰성을 높이기 위해 RSI, MACD 등 다른 기술 지표와 결합하여 Alligator 지표를 시도할 수 있습니다.
  3. 파라미터 설정을 최적화한다. 파라미터 설정을 최적화 할 필요가 없지만, 최적의 파라미터 조합을 찾기 위해 다른 시간 주기와 거래 지표에 대한 재검토를 시도할 수 있다.

요약

알리거터 (Alligator) 장기 트렌드 추적 거래 전략 (Long Term Trend Tracking Trading Strategy) 은 간단하고 쉽게 사용할 수 있고, 폭넓게 적용되는 양적 거래 전략이다. 알리거터 지표를 활용하여 시장의 주요 추세를 포착함으로써 중장기간에 안정적인 수익을 얻을 수 있다. 전략에는 잠재적인 위험이 있지만, 위험 관리 모듈을 추가하고, 다른 기술 지표와 결합하고, 매개 변수 설정을 최적화하는 방법과 같은 방법을 통해 전략의 성능과 안정성을 더욱 향상시킬 수 있다. 장기 트렌드 추적 거래를 선호하는 투자자에게, 알리거터 (Alligator) 장기 트렌드 추적 거래 전략은 고려할 만한 중장기 옵션이다.


/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//_______ <licence>
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Skyrex

//_______ <version>
//@version=5

//_______ <declaration_statement>
strategy(title = "Alligator Long Term Trend Following Strategy [Skyrex.io]", 
         shorttitle = "Alligator Strategy [Skyrex.io]", 
         overlay = true, 
         format = format.inherit, 
         pyramiding = 1, 
         calc_on_order_fills = false, 
         calc_on_every_tick = true, 
         default_qty_type = strategy.percent_of_equity, 
         default_qty_value = 100, 
         initial_capital = 10000, 
         currency = currency.NONE,  
         commission_type = strategy.commission.percent, 
         commission_value = 0.1,
         slippage = 5)


//_______ <constant_declarations>
var color skyrexGreen = color.new(#2ECD99, 0)
var color skyrexGray = color.new(#F2F2F2, 0)
var color skyrexWhite = color.new(#FFFFFF, 0)

var color barcolor = na


//_______ <inputs>
// Trading bot settings
sourceUuid = input.string(title = "sourceUuid:", defval = "yourBotSourceUuid", group = "Trading Bot Settings")
secretToken = input.string(title = "secretToken:", defval = "yourBotSecretToken", group = "Trading Bot Settings")

// Trading Period Settings
lookBackPeriodStart = input(title = "Trade Start Date/Time", defval = timestamp('2023-01-01T00:00:00'), group = "Trading Period Settings")
lookBackPeriodStop = input(title = "Trade Stop Date/Time", defval = timestamp('2025-01-01T00:00:00'), group = "Trading Period Settings")

//_______ <function_declarations>
//@function       Used to calculate Simple moving average for Alligator
//@param src      Sourse for smma Calculations
//@param length   Number of bars to calculate smma
//@returns        The calculated smma value 
smma(src, length) =>
    smma =  0.0
    smma := na(smma[1]) ? ta.sma(src, length) : (smma[1] * (length - 1) + src) / length
    smma


//@function       Used to decide if current candle above the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_LowAboveAlligator(jaw, teeth, lips) =>
    result = low > jaw and low > lips and low > teeth 
    result


//@function       Used to decide if current candle below the Alligator
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value  
is_HighBelowAlligator(jaw, teeth, lips) =>
    result = high < jaw and high < lips and high < teeth 
    result


//@function       Used to decide if Alligator's mouth is open
//@param jaw      Jaw line of an Alligator
//@param teeth    Teeth line of an Alligator
//@param lips     Lips line of an Alligator
//@returns        Bool value 
is_AlligatorHungry(jaw, teeth, lips) =>
    result = lips > jaw[5] and lips > teeth[2] and teeth > jaw[3]
    result


//_______ <calculations>
jaw = smma(hl2, 13)[8]
teeth = smma(hl2, 8)[5]
lips = smma(hl2, 5)[3]


jaw_o = smma(hl2, 13)
teeth_o = smma(hl2, 8)
lips_o = smma(hl2, 5)


//_______ <strategy_calls>
longCondition = is_LowAboveAlligator(jaw, teeth, lips) and is_AlligatorHungry(jaw_o, teeth_o, lips_o) 
if (longCondition)
    strategy.entry(id = "entry1", direction = strategy.long, alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "entry1",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')

if close < jaw
    strategy.close(id = "entry1", alert_message = '{\n"base": "' + syminfo.basecurrency + '",\n"quote": "' + syminfo.currency + '",\n"position": "close",\n"price": "' + str.tostring(close) + '",\n"sourceUuid": "' + sourceUuid + '",\n"secretToken": "' + secretToken + '",\n"timestamp": "' + str.tostring(timenow) + '"\n}')



//_______ <visuals>
if strategy.opentrades > 0
    barcolor := skyrexGreen
else 
    barcolor := skyrexGray

barcolor(barcolor)
//_______ <alerts>

관련 내용

더 많은 내용