
알리게이터 (영어: Alligator) 장기 트렌드 추적 거래 전략은 윌리엄스 알리게이터 지표를 기반으로 한 정량 거래 전략이다. 이 전략은 시장의 주요 트렌드를 포착하기 위해 다른 주기의 이동 평균 조합을 사용하여 중기 및 장기 트렌드 추적 거래에 적용된다. 전략의 주요 아이디어는 알리게이터 지표의 개시 방향과 가격이 알리게이터 지표와 상대적으로 위치를 판단하여 트렌드의 방향과 강도를 판단하여 거래 결정을 내리는 것이다.
Alligator의 장기 트렌드 추적 거래 전략은 Alligator 지표를 세 개의 다른 기간의 이동 평균을 사용하여 구성합니다.
알리거터 지표의 개장 방향이 위쪽으로, 즉 Jaw 라인이 가장 밑에 있고, Teeth 라인이 중간에 있고, Lips 라인이 가장 위에 있고, 가격도 알리거터 지표의 위에 있을 때, 전략은 더 많은 포지션을 만든다. 이러한 상황은 상승 추세 파도가 확인되었다는 것을 나타냅니다. 우리는 추세가 끝날 때까지 그 포지션을 유지하기를 원합니다.
가격이 Jaw 라인을 넘어지면, 전략은 더 많은 상자를 평평하게 만듭니다. 이것은 우리가 곰 시장에서 더 이상 지위를 유지하지 않을 것을 보장합니다.
알리게이터 장기 트렌드 추적 거래 전략은 간단하고 사용하기 쉬운, 적용 범위가 넓은 양적 거래 전략이다. 알리게이터 지표를 사용하여 시장의 주요 트렌드를 포착하여 이 전략은 중장기 동안 안정적인 수익을 얻을 수 있다. 전략에는 몇 가지 잠재적인 위험이 있지만, 위험 관리 모듈을 추가하여 다른 기술 지표와 최적화 파라미터 설정을 결합하는 방법과 같은 방법을 사용하면 전략의 성능과 안정성을 더욱 향상시킬 수 있다. 중장기 트렌드 추적 거래를 선호하는 투자자에게는 알리게이터 장기 트렌드 추적 거래 전략은 고려할 가치가 있는 선택이다.
/*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>