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

거래 전략에 따른 악어 장기 트렌드

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

img

전반적인 설명

알리거터 장기 트렌드 다음 트레이딩 전략 (Alligator Long-Term Trend Following Trading Strategy) 은 윌리엄스 알리거터 지표에 기반한 양적 거래 전략이다. 이 전략은 중장기 트렌드 다음 트레이드에 적합한 시장의 주요 트렌드를 포착하기 위해 다른 기간의 이동 평균의 조합을 활용하고, 전략의 주요 아이디어는 알리거터 지표의 개척 방향과 알리거터 지표에 대한 가격의 상대적 위치에 의해 트렌드의 방향과 강도를 결정하고 그에 따라 거래 결정을 내리는 것입니다.

전략 원칙

  1. 턱선: 13주기 SMMA, 미래로 8바를 이동
  2. 치아 라인: 8주기 SMMA, 미래로 5바를 이동
  3. 입술 선: 5주기 SMMA, 미래로 3바트를 이동

가격이 라인을 넘어갈 때, 전략은 긴 포지션을 닫을 것입니다. 이것은 우리가 곰 시장에서 포지션을 계속 보유하지 않을 것을 보장합니다.

전략적 장점

  1. 중장기 거래에 적합: 전략은 시장의 주요 트렌드를 효과적으로 파악 할 수있는 악어 지표에 기반하며 중장기 트렌드를 따르는 거래에 매우 적합합니다.
  2. 낮은 거래 빈도: 트렌드가 확정될 때만 포지션을 열고 트렌드가 끝나면 포지션을 닫는 전략으로 거래 빈도가 상대적으로 낮아 거래 비용을 효과적으로 줄일 수 있습니다.
  3. 광범위한 응용 분야: 전략은 다양한 금융 시장에 적용 될 수 있습니다. 외환, 암호화폐 등, 강력한 적응력과 유연성.
  4. 매개 변수 최적화가 필요 없습니다. 전략은 시장 추세를 완전히 따르고 매개 변수 최적화가 필요하지 않아 간단하고 사용하기 쉽습니다.

전략 위험

  1. 잠재적인 미끄러짐 위험: 심각한 시장 변동이나 유동성 부족의 경우 거래 주문은 예상 가격으로 실행되지 않을 수 있으며 미끄러짐 위험이 발생할 수 있습니다.
  2. 고정된 위험 관리의 부족: 전략에는 고정된 위험 관리 설정이 없으며 각 거래의 위치 크기는 개인의 위험 선호도에 따라 조정되어야합니다.
  3. 단기 기회를 놓칠 수 있습니다. 전략은 중장기 동향을 포착하는 데 중점을 두기 때문에 단기 거래 기회를 놓칠 수 있습니다.

전략 최적화 방향

  1. 리스크 관리 모듈을 추가하십시오: 리스크를 더 잘 제어하기 위해 스톱 로스, 동적 위치 조정 등 일부 리스크 관리 조치를 추가하는 것을 고려하십시오.
  2. 매개 변수 설정을 최적화: 전략은 매개 변수 최적화를 요구하지 않지만, 최적의 매개 변수 조합을 찾기 위해 다른 시간 기간과 거래 목표를 백테스트하는 것을 시도할 수 있습니다.

요약

알리거터 장기 트렌드 포워딩 트레이딩 전략은 간단하고 사용하기 쉽고 널리 적용 가능한 양적 거래 전략입니다. 시장의 주요 트렌드를 파악하기 위해 알리거터 지표를 활용함으로써 전략은 중장기간에 안정적인 수익을 얻을 수 있습니다. 전략에는 잠재적인 위험이 있지만, 위험 관리 모듈을 추가하고 다른 기술 지표와 결합하고 매개 변수 설정을 최적화함으로써 전략의 성능과 안정성을 더욱 향상시킬 수 있습니다. 중장기 트렌드 포워딩 트레이드를 선호하는 투자자에게는 알리거터 장기 트렌드 포워딩 트레이딩 전략은 고려할만한 선택입니다.


/*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>

관련

더 많은