Стратегия торговли на основе оценщика Файтерро

Автор:Чао Чжан, Дата: 2023-09-22 14:12:27
Тэги:

Обзор

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

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

Ядром этой стратегии является Estimator Faytterro. Его расчет заключается в следующем: сначала вычислить коэффициент конвергенции и дивергенции (CR) цен, а затем построить квадратную функцию, которая может отражать форму кривой CR, устанавливая различные коэффициенты.

В частности, стратегия сначала рассчитывает CR цен. Затем она строит массив dizi длиной 2 * len и заполняет его значениями квадратной функции последовательно. Коэффициенты квадратной функции отражают значение CR. После этого, наблюдая два значения на индексе len+1+5 и len+1+4, она определяет, имеет ли квадратная функция точку преломления. Если есть точка преломления, она генерирует сигналы покупки или продажи.

На этой основе стратегия также устанавливает некоторые дополнительные условия, такие как установление минимального расстояния между прорывами цен, чтобы избежать частой торговли, генерации сигналов разного размера и т. Д. Эти условия используются для отфильтрации некоторых нежелательных точек торговли.

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

Эта стратегия имеет следующие преимущества:

  1. Использование Estimator Faytterro для оценки тенденций, который чувствителен к колебаниям цен и может зафиксировать изменения тенденций на ранней стадии.

  2. Создание квадратной функции, отражающей форму кривой CR и прямое и эффективное нахождение точек преломления.

  3. Сгенерирование сигналов разного размера позволяет торговать пирамидой в идеальных точках, увеличивая потенциал прибыли.

  4. Увеличение минимального расстояния эффективно фильтрует сигналы и предотвращает неэффективную частую торговлю.

  5. Многие регулируемые параметры могут быть оптимизированы для различных торговых продуктов, улучшая адаптивность.

  6. Логика стратегии ясна и легко понятна, а код очень читаем, что позволяет легко учиться.

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

Для этой стратегии также существуют некоторые риски:

  1. Faytterro Estimator подвержен риску корректировки кривой и может быть менее эффективным в некоторых торговых продуктах.

  2. Суждение только на основе точек перегиба квадратической кривой может быть слишком грубым, что приводит к ошибочным оценкам.

  3. Частая торговля пирамидами увеличивает стоимость комиссионных.

  4. Большое количество регулируемых параметров увеличивает сложность оптимизации.

  5. Он не может эффективно справиться с ошибочными оценками в период колебаний цен.

  6. Отсутствие механизма стоп-лосса может привести к увеличению потерь.

Соответствующие решения:

  1. Оптимизировать параметры для различных продуктов для повышения надежности.

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

  3. Установите правильную стоп-потерю для контроля одиночных потерь.

  4. Используйте методы больших данных для автоматической оптимизации параметров.

  5. Добавить идентификацию колебаний, чтобы избежать торговли в колеблющиеся периоды.

  6. Установите разумную логику стоп-лосса.

Руководство по оптимизации

Направления оптимизации включают:

  1. Добавьте логику остановки потери для управления единичной потерей, например, остановку потери или временную остановку потери.

  2. Добавить другие показатели, чтобы избежать ошибочных оценок, основанных исключительно на Estimator Faytterro. Например, в сочетании с MACD, KDJ и т. д.

  3. Добавьте механизмы подтверждения, чтобы избежать недавних отступлений.

  4. Оптимизировать регулируемые параметры для различных продуктов с использованием генетических алгоритмов, Бейесовской оптимизации и т.д.

  5. Определите колеблющиеся рынки с помощью ATR, DMI и т. д. и избегайте торговли во время колебаний.

  6. Оптимизируйте логику пирамиды, чтобы предотвратить преследование тенденций.

  7. Испытывайте параметры в разные временные рамки, чтобы найти оптимальные временные рамки.

Заключение

Эта стратегия принимает решения на основе торговых сигналов Faytterro Estimator, и добавляет логические суждения и различных размеров входных сигналов на вершине его, чтобы сформировать тенденцию следующей стратегии с характеристиками пирамиды. Стратегия интуитивно понятна и проста в понимании, с сильными возможностями улавливания тренда. Но у нее также есть такие проблемы, как неправильные оценки индикатора, отсутствие стоп-лосса, трудности в оптимизации параметров. Будущие оптимизации включают добавление фильтрационных механизмов, логику стоп-лосса, оптимизацию параметров и т. Д. для улучшения надежности и адаптивности. В целом эта стратегия обеспечивает способ использования индикаторов для оценки изменений тренда, который стоит изучить.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-08-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
// strategy("Faytterro Estimator Strategy", overlay=true, pyramiding=100)

src=input(hlc3,title="source")
len=input.int(10,title="faytterro estimator lenght", maxval=500)
len2=100
len3=input.float(500,title="minumum enrty-close gap (different direction)")
len4=input.float(500,title="minumum entry-entry gap (same direction)")
cr(x, y) =>
    z = 0.0
    weight = 0.0
    for i = 0 to y-1
        z:=z + x[i]*((y-1)/2+1-math.abs(i-(y-1)/2))
    z/(((y+1)/2)*(y+1)/2)
cr= cr(src,2*len-1) 
width=input.int(10, title="strong entry size", minval=1)

dizi = array.new_float(500)
// var line=array.new_line()
//if barstate.islast
for i=0 to len*2
    array.set(dizi,i,(i*(i-1)*(cr-2*cr[1]+cr[2])/2+i*(cr[1]-cr[2])+cr[2]))

buy = array.get(dizi,len+1+5)>array.get(dizi,len+1+4) and array.get(dizi,len+1+5)<cr[len] 
sell = array.get(dizi,len+1+5)<array.get(dizi,len+1+4) and array.get(dizi,len+1+5)>cr[len]
bb=buy? hlc3 : na
ss=sell? hlc3 : na 
sbuy= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3*3
ssell= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3*3

buy:= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3 //and close>ta.highest(fixnan(ss),len2)-len3*3
sell:=  sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3 //and close<ta.lowest(fixnan(bb),len2)+len3*3
alertcondition(buy or sell)


if (sbuy)
    strategy.entry("strong buy", strategy.long,width)
if (ssell)
    strategy.entry("strong sell", strategy.short,width)
if (buy)
    strategy.entry("buy", strategy.long)
if (sell)
    strategy.entry("sell", strategy.short)

Больше