
Alligator Strategi perdagangan trend jangka panjang adalah strategi perdagangan kuantitatif berdasarkan penunjuk Williams Alligator. Strategi ini menggunakan gabungan purata bergerak dari pelbagai kitaran untuk menangkap trend utama di pasaran, yang digunakan untuk perdagangan trend jangka panjang.
Strategi perdagangan Alligator yang mengikuti trend jangka panjang menggunakan purata bergerak untuk tiga tempoh yang berbeza untuk membina penunjuk Alligator, iaitu:
Strategi ini akan membuka kedudukan apabila bukaan indikator Alligator ke arah atas, iaitu Jaw line di bahagian bawah, Teeth line di tengah, Lips line di bahagian atas, dan harga di atas indikator Alligator. Ini menunjukkan bahawa gelombang trend ke atas telah disahkan, dan kami ingin memegang kedudukan itu sehingga akhir trend.
Apabila harga jatuh di bawah Jaw Line, strategi ini akan melonggarkan lebihan. Ini akan memastikan bahawa kita tidak akan terus memegang kedudukan dalam pasaran beruang.
Strategi perdagangan trend jangka panjang Alligator adalah strategi perdagangan kuantitatif yang mudah digunakan dan luas. Dengan menggunakan indikator Alligator untuk menangkap trend utama di pasaran, strategi ini dapat memperoleh keuntungan yang stabil dalam jangka masa sederhana dan jangka panjang. Walaupun terdapat beberapa risiko yang berpotensi dalam strategi ini, prestasi dan kestabilan strategi dapat ditingkatkan dengan menambahkan modul pengurusan risiko, menggabungkan indikator teknikal lain, dan menetapkan parameter optimum.
/*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>