Стратегия торговли на основе производных инструментов

Автор:Чао Чжан, Дата: 2024-01-12 11:06:28
Тэги:

img

Обзор

Эта стратегия инвестирует равные проценты капитала на основе использования первых, вторых, третьих и четвертых временных производных Хулл-двигающейся средней (HMA). Точки входа определяются тенденциями во вторых, третьих и четвертых производных, в то время как точки выхода создаются либо в новой точке входа, либо в процентном соотношении остановки потери.

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

Стратегия сначала рассчитывает HMA. Hull Moving Average - это взвешенная скользящая средняя, рассчитанная по следующей формуле:

hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) 

где src - цена, а sm - входный параметр, контролирующий длину среднего.

Стратегия затем рассчитывает скорость (1-я производная), ускорение (2-я производная), толчок (3-я производная) и соединение (4-я производная). Они рассчитываются путем принятия разницы между HMA и его отсталыми значениями, разделенными на длину len. Например, расчет скорости:

speed = (hullma-hullma[len])/len

Другие производные рассчитываются аналогично.

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

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

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

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

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

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

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

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

Еще один риск заключается в том, что параметры могут быть легко перенастроены. Длина HMA, длины производных и т. Д. Все это может повлиять на результаты. Это требует строгого обратного тестирования для оценки надежности этих параметров на разных рынках. Также процентные ставки остановки потери не должны быть слишком широкими, иначе потери могут быть снежными.

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

Эта стратегия может быть оптимизирована несколькими способами:

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

  2. Проведение испытаний надежности параметров на разных рынках.

  3. Попытка улучшить логику ввода. внедрить модели машинного обучения для выявления тенденций вместо простых положительных/отрицательных суждений

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

  5. Добавьте выходы с прибылью.

Заключение

Это многочасовой тренд, следующий за стратегией, использующей несколько производных Хулл-двигающейся средней в качестве сигналов входа и выхода с последующими остановками для блокировки прибыли. Ключевые преимущества включают фильтрацию ложных сигналов с использованием нескольких производных, гибких настрояемых параметров и т. Д. Риски, которые следует отметить, включают влияние взрывных событий и потенциального перенастройки параметров. Стратегию можно оптимизировать путем добавления фильтров, улучшения надежности параметров, улучшения логики входа / выхода и т. Д., Чтобы сделать ее более надежной автоматизированной торговой системой.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
    strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
    strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
    stopValue=ohlc4*(1-longTrailPerc)
    max(stopValue,longStopPrice[1])
else
    0
shortStopPrice:=if(strategy.position_size<0)
    stopValue=ohlc4*(1+shortTrailPerc)
    min(stopValue,shortStopPrice[1])
else
    999999
if(strategy.position_size>0)
    strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
    strategy.exit(id="closeshort",stop=shortStopPrice)


Больше