Индикатор Fisherman трейлинг стоп-лосс стратегия


Дата создания: 2024-02-02 14:57:33 Последнее изменение: 2024-02-02 14:57:33
Копировать: 0 Количество просмотров: 717
1
Подписаться
1617
Подписчики

Индикатор Fisherman трейлинг стоп-лосс стратегия

Обзор

Мобильная стоп-стратегия рыбака - это количественная торговая стратегия, которая объединяет рыбака и мобильный стоп-механизм. Эта стратегия использует рыбака, чтобы генерировать сигналы покупки и продажи, а также устанавливает стоп-трек для блокировки прибыли, чтобы добиться большей прибыли, защищая прибыль.

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

  1. Ввод диапазона дат, ограничивающего отсчет или дискретное время
  2. Ввод параметров для индикатора рыбака, по умолчанию 2 цикла
  3. Входный стоп-стоп-убыток, по умолчанию 5% стоп-убыток и 2% стоп-убыток
  4. Основные и сигнальные линии для расчета рыболовецких показателей
  5. При прохождении сигнала на основной линии образуется сигнал покупки
  6. Настройка слежения за стоп-порогом, стоп-порог при падении цены на 2% после входа в длинную позицию
  7. Стоп-ап при росте цен более чем на 5%

Анализ преимуществ

  1. Индекс рыболовов помогает определить тренд, а сигнал покупок - точный.
  2. Механизм отслеживания стоп-лосса позволяет зафиксировать большую часть прибыли, избегая превышения установленной точки стоп-лосса
  3. Настраиваемые параметры, адаптированные к различным рыночным условиям
  4. Простые, понятные и понятные

Анализ рисков

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

Параметры могут быть оптимизированы путем корректировки Stop Loss Stop Ratio, тестирования различных комбинаций параметров; фильтрации сигналов в сочетании с другими показателями; установки правил управления позициями для управления отдельными рисками.

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

  1. Оптимизация параметров рыболовецких показателей, проверка влияния различных параметров на стратегию
  2. В сочетании с другими показателями, такими как MACD, KD и т. Д., фильтрующий сигнал повышает качество сигнала
  3. Добавление предварительных условий для открытия позиции, таких как прорыв по Брин-Бенду и т.д.
  4. Добавление модуля управления позициями, чтобы контролировать риски, связанные с отдельными позициями
  5. Способы оптимизации мобильных стоп, такие как сглаживание мобильных стоп, выход Chandelier и другие

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

Мобильная стратегия остановки убытков рыболовных показателей, объединяющая определение тенденций и управление убытками, может быть адаптирована к большинству видов путем оптимизации параметров, комбинации показателей и улучшения методов остановки убытков, чтобы получить лучшую прибыль при условии предотвращения потерь, превышающих допустимые, что заслуживает изучения и практики.

Исходный код стратегии
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)