Аллигатор Долгосрочная стратегия следования за трендом

SMMA SMA
Дата создания: 2024-05-17 15:40:13 Последнее изменение: 2024-05-17 15:40:13
Копировать: 4 Количество просмотров: 718
1
Подписаться
1617
Подписчики

Аллигатор Долгосрочная стратегия следования за трендом

Обзор

Alligator - это количественная торговая стратегия, основанная на индикаторе Williams Alligator. Стратегия использует комбинацию движущихся средних за разные периоды, чтобы захватить основные тенденции рынка. Она применяется для торговли в среднесрочной и долгосрочной перспективе.

Стратегический принцип

Alligator использует трехмесячные движущиеся средние для построения индикатора Alligator:

  1. Jaw Line: 13 циклов SMMA, горизонтально в будущее 8 корень K Line
  2. Teeth: 8 циклов SMMA, перенос в будущее 5 корень K
  3. Липсовая линия: 5 циклов SMMA, перенос в будущее 3 корня K-линии

Стратегия открывает позицию, когда открытие индикатора Alligator направлено вверх, то есть линия Jaw находится внизу, линия Teeth находится посередине, линия Lips находится вверху, а цена находится выше индикатора Alligator. Это означает, что волна восходящего тренда была подтверждена, и мы хотим держать эту позицию до конца тренда.

Когда цена падает ниже линии Jaw, стратегия устраняет лишние пункты. Это гарантирует, что мы не будем продолжать держать позиции в медвежьем рынке.

Стратегические преимущества

  1. Подходит для среднесрочных и долгосрочных сделок: Стратегия основана на индикаторе Alligator, который эффективно улавливает основные тенденции рынка и идеально подходит для среднесрочных и долгосрочных сделок.
  2. Низкая частота торговли: стратегия открывает позиции только при подтверждении формирования тренда, а закрывает позиции при окончании тренда, частота торговли относительно низкая, что позволяет эффективно снизить стоимость торговли.
  3. Широкий спектр применения: стратегия может быть применена на различных финансовых рынках, таких как иностранные валюты, криптовалюты и т. Д., Имеет высокую адаптивность и гибкость.
  4. Нет необходимости оптимизировать параметры: стратегия полностью соответствует рыночным тенденциям, нет необходимости оптимизировать параметры, просто и легко использовать.

Стратегический риск

  1. Потенциальный риск проскальзывания: в условиях резкой волатильности или недостаточной ликвидности рынка ордера на торговлю могут не быть реализованы по ожидаемой цене, что приводит к риску проскальзывания.
  2. Отсутствие фиксированного управления рисками: Стратегия не имеет фиксированной настройки управления рисками, требуя корректировки размера позиции для каждой сделки в соответствии с собственными предпочтениями в отношении риска.
  3. Некоторые краткосрочные торговые возможности могут быть упущены, поскольку стратегия ориентирована на уловить среднесрочные и долгосрочные тенденции.

Направление оптимизации стратегии

  1. Добавление модуля управления рисками: можно рассмотреть возможность добавления некоторых мер управления рисками, таких как остановка убытков, динамическая коррекция позиции и т. Д., Чтобы лучше контролировать риск.
  2. Комбинирование с другими техническими показателями: можно попробовать комбинировать индикатор Alligator с другими техническими показателями, такими как RSI, MACD и т. Д., чтобы повысить точность и надежность стратегии.
  3. Оптимизация параметров: хотя в этой стратегии не требуется оптимизация параметров, можно попробовать провести обратную проверку на различные временные периоды и торговые показатели, чтобы найти оптимальную комбинацию параметров.

Подвести итог

Alligator - это простая, удобная и широко применяемая количественная торговая стратегия. Используя индикатор 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>