알리게터 장기 트렌드 추적 거래 전략은 윌리엄스 알리게터 지표에 기반한 양적 거래 전략이다. 이 전략은 다양한 주기의 이동 평균 라인 조합을 사용하여 시장의 주요 트렌드를 캡처하여 중장기 트렌드 추적 거래에 적합합니다. 전략의 주요 아이디어는 알리게터 지표의 개척 방향과 가격과 알리게터 지표의 상대적 위치로 트렌드의 방향과 강도를 판단하여 거래 결정을 내리는 것입니다.
알리거터 장기 트렌드 추적 거래 전략은 알리거터 지표를 세 개의 다른 주기의 이동 평균을 사용하여 구성합니다.
알리거터 지표의 개척 방향이 상향으로, 즉 자우 라인이 가장 밑에, 테스 라인이 중간에, 립스 라인이 가장 위에, 그리고 가격이 알리거터 지표보다 높을 때, 전략은 더 많은 지점을 개척합니다. 이것은 상승 추세 파도가 확인된 것을 나타냅니다. 우리는 추세가 끝날 때까지 그 지위를 유지하기를 원합니다.
이 전략은 가격이 자우 라인을 넘어갈 때 많은 주문을 평준화 할 것입니다. 이것은 우리가 곰 시장에서 계속 지위를 유지하지 않을 것을 보장합니다.
알리거터 (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>