В процессе загрузки ресурсов... загрузка...

Фишер Юрик, стратегию остановки.

Автор:Чао Чжан, Дата: 2024-02-02 14:57:33
Тэги:

img

Обзор

Стратегия Fisher Yurik trailing stop - это количественная торговая стратегия, которая объединяет индикатор Fisher Yurik и механизмы trailing stop.

Логика стратегии

  1. Диапазоны даты ввода для определения временных рамок бэкстеста/реального времени торговли
  2. Входные параметры для индикатора Fisher Yurik, по умолчанию на 2 периода
  3. Коэффициенты получения прибыли и остановки убытков, дефолт до 5% прибыли и 2% убытка
  4. Расчет основных и сигнальных линий индикатора Fisher Yurik
  5. Сгенерировать сигнал покупки, когда главная линия пересекает линию сигнала.
  6. Установка последней остановки, выход из длинной позиции при падении цены на 2% после входа
  7. Принимать прибыль, когда цена поднимается выше 5%

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

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

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

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

Риски могут быть устранены путем корректировки коэффициентов стоп/прибыль, параметров тестирования, использования сигнальных фильтров, правил размещения позиций.

Возможности для расширения

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

Заключение

Стратегия Fisher Yurik Trailing Stop сочетает в себе идентификацию тренда и управление рисками.


/*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)


Больше