VWMA и ATR следуют стратегии

Автор:Чао Чжан, Дата: 2023-11-07 16:39:47
Тэги:

img

Обзор

Эта стратегия использует VWMA для определения направления тренда и устанавливает стоп-лосс с помощью ATR, чтобы следовать тренду.

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

  1. Используйте VWMA для определения направления тренда. Идите длинный, когда цена выше VWMA, идти короткий, когда цена ниже VWMA.

  2. Добавьте фильтр ОСИ, чтобы избежать ложных сигналов прорыва.

  3. Используйте ATR для расчета линии остановки потери. Длина ATR установлена на то же самое, что и VWMA, мультипликатор - 3.5.

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

  5. Размер позиции рассчитывается на основе собственного капитала счета и процента стоп-лосса.

  6. Выход из длинной позиции, когда цена проходит ниже линии стоп-лосса.

Преимущества

  1. Использование VWMA для определения тренда удерживает тенденционные возможности.

  2. Фильтр RSI избегает ложных сигналов.

  3. ATR отстаивает тенденцию и избегает отставания от реверсий.

  4. Размер позиций на основе собственного капитала счета и стоп-лосса способствует управлению рисками.

Риски

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

  2. Неправильное установление параметров ATR приводит к слишком тесной или свободной линии стоп-потери.

  3. Быстрое изменение тренда может привести к задержке обновления стоп-лосса, увеличивая потери.

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

Улучшение

  1. Испытать различные комбинации параметров VWMA для поиска оптимальных параметров сигнала.

  2. Проверьте другие параметры RSI, такие как перекупленные/перепроданные линии.

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

  4. Добавьте другие фильтры, такие как MACD, KD для улучшения качества сигнала.

  5. Оптимизировать размер позиций и процент стоп-лосса на основе волатильности рынка.

Резюме

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


/*backtest
start: 2023-10-07 00:00:00
end: 2023-10-13 00:00:00
period: 1h
basePeriod: 15m
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/
// © mohanee

//@version=4
//strategy("", overlay=true)
strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

float xATRTrailingStop=na
int pos=na

vwmalength = input(33, title="VWMA Length", minval=1, maxval=365)
//vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365)
nATRPeriod = input(33, title="ATR length", minval=1, maxval=365)
nATRMultip = input(3.5, title="ATR Multiplier")

rsiofVwmaLength=input(14, title="RSI of VWMA Length")

riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)

vwmaVal=vwma(close, vwmalength)
//vwmaVal2=vwma(close, vwmalength2)
//maVal=sma(close, vwmalength)

plot(vwmaVal, color=color.orange, linewidth=2,  title="VWMA")
//plot(vwmaVal2, color=color.blue, title="VWMA Short Term")
//plot(maVal, color=color.blue, title="MA")

//rsi of vwma Longterm
rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength)

xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos:=	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, 	    iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

//plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop")

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


//Long Entry
//strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop>  vwmaVal)

strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and  close>open and close>vwmaVal and pos == 1 )    ///pos == 1 means ATRStop line is green    
//vwmaVal2>vwmaVal and

plot(strategy.position_size>=1  ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop")
bgcolor(strategy.position_size>=1 ? color.blue : na )

//Exit
strategy.close(id="VWMA LE",  when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop)  )
//strategy.close(id="VWMA LE",  when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )

Больше