Стратегия развития объема цен

Автор:Чао Чжан, Дата: 2023-12-25 13:09:48
Тэги:

img

Обзор

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

Принципы

Стратегия сначала рассчитывает импульс цен. Расчитывая разницу между ценой текущего периода и ценой предыдущего периода, она может отразить абсолютное изменение цен за последний период. Положительное значение указывает на рост цен, а отрицательное значение указывает на снижение цен. Затем скользящий средний этого значения разницы рассчитывается для фильтрации для получения показателя среднего импульса.

Когда последняя цена больше среднего импульса, это указывает на то, что цена растет. Когда последняя цена меньше среднего импульса, это указывает на то, что цена падает. Определите направление ценового тренда на основе этого индикатора. В сочетании с фильтрацией амплификации объема в фактической торговле выбираются только сигналы с относительно большим объемом торговли.

В соответствии с выявленными тенденциями к росту и снижению цен, соответствующие операции по покупке и продаже осуществляются.

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

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

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

  • Уязвимость к воздействию ненормальных колебаний рынка с определенным риском ложных сигналов
  • Риски скольжения, вызванные частотой торговли
  • Может не заметить среднесрочных и долгосрочных тенденций, и долгосрочная рентабельность должна быть проверена

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

  • Настройка параметров индикаторов импульса для оптимизации эффектов суждения
  • Оптимизировать параметры фильтрации объема для улучшения качества сигнала
  • Увеличить механизмы стоп-лосса для контроля одиночных потерь
  • Включить больше факторов, чтобы обеспечить многофакторные

Заключение

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


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 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/
// © russtic

//@version=2

strategy("HA smoothed eliminator v2  ",pyramiding=1, slippage=10, default_qty_type=strategy.percent_of_equity, 
     commission_type=strategy.commission.percent, commission_value=0.075, overlay=true, 
     default_qty_value=100, initial_capital=1000)

FromMonth1 = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay1 = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear1 = input(defval=2019, title="From Year", minval=2010)
ToMonth1 = input(defval=12, title="To Month", minval=1, maxval=12)
ToDay1 = input(defval=31, title="To Day", minval=1, maxval=31)
ToYear1 = input(defval=2020, title="To Year", minval=2010)
start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00)
finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)
window1() => true
    
t1 = time(timeframe.period, "0300-1200")
t2 = time(timeframe.period, "0930-1700")
London = na(t1) ? na : green
NY = na(t2) ? na : red

bgcolor(London, title="London")
bgcolor(NY, title="New York")
///////////////////////////
// HA smoothed

len=(1 )
o=ema(open,len)
c=ema(close,len)
h=ema(high,len)
l=ema(low,len)

haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))

len2=(len)
o2=ema(haopen, len2)
c2=ema(haclose, len2)
h2=ema(hahigh, len2)
l2=ema(halow, len2)

buy= (o2<c2) 

closebuy= (o2>c2)

sell= (o2>c2)

closesell= (o2<c2)

//
/// END NEW SCRIPT 

//
//
//                  MERGE SCRIPTS
a1= o2<c2
b1=o2>c2
is_uptrend = (a1)// and (p> 0)
is_downtrend =  (b1)// and (p <0)
barcolor(b1 ? red: a1 ? lime : blue)

//end


// =========================start     PVT -GIVES EACH BAR A VALUE
facton = (true)//, title="arrow elimination (factor) on ")
Length1 = 2//input(2, title="PVT Length", minval=1)

xPrice = close//input(title="Source", type=source, defval=close)
xsma = wma(xPrice, Length1) 
nRes = xPrice - xsma  
pos = iff(nRes > 0, 1,
	     iff(nRes < 0, -1, nz(pos[1], 0))) 
forex= input(true, title = 'strength toggle ')
forexyes = (forex == true)? 10000 : (forex == false)? 1: na

plot(nRes*forexyes , color=aqua, title="strength", transp=100)
// =========================         end pvt
//
//=============================     start factor // ELIMINATES  weak signals
//                  start trend
//
factor = input(600.00, title = "strength elimination") 
factor1 = factor - (factor*2)//input(-100.00, title = "sell strength elimination ") 
facton1 = (facton == true) and is_uptrend == 1 and nRes*forexyes>factor ? 1 : (facton == true) and is_downtrend == 1 and nRes*forexyes<factor1 ? -1 : (facton == false)
// ==================== =====
// 
//===========================    end factor
nRestrend = (nRes*forexyes)
//=========================== plot arrows 
plot1 = iff(is_uptrend[1] == 1, 0 , 1)  
plot2 = iff(is_downtrend[1]  == 1, 0 , 1)
uparrowcond =  is_downtrend ? false : nz(uparrowcond[1], false) == true ? uparrowcond[1] : (facton1 and is_uptrend and nRes*forexyes>factor)
downarrowcond =  is_uptrend ? false : nz(downarrowcond[1], false) == true ? downarrowcond[1] : (facton1 and is_downtrend and nRes*forexyes<factor1)
//prevarrowstate = uparrowcond  ? 1 : downarrowcond ? -1 : nz(prevarrowstate[1], 0)


candledir = (open < close)? 1: (open>close)? -1 : na // ONLY OPENS ON SAME BAR DIRECTION AS SIGNAL



up=nz(uparrowcond[1], false) == false and ( is_uptrend and nRes*forexyes>factor) and candledir ? 1:na
dn=nz(downarrowcond[1], false) == false and ( is_downtrend and nRes*forexyes<factor1) and candledir? -1:na



sig=0
if up==1 
    sig:=1
else
    if dn==-1
        sig:=-1
    else
        sig:=sig[1]
plotarrow(sig[1]!=1 and sig==1?1:na, title="BUY ARROW", colorup=lime, maxheight=80, minheight=50, transp=0)// up arrow 
plotarrow(sig[1]!=-1 and sig==-1?-1:na, title="SELL ARROW", colordown=red, maxheight=80, minheight=50, transp=0)// down arrow

//========================= alert condition
alertcondition(sig[1]!=1 and sig==1?1:na, title="BUY eliminator", message="BUY " ) 
alertcondition(sig[1]!=-1 and sig==-1?-1:na, title="SELL eliminator",  message="SELL ") 


strategy.entry("B", true, when=(sig[1]!=1 and sig==1?1:na) and window1())
strategy.entry("S", false,when=(sig[1]!=-1 and sig==-1?-1:na) and window1())








Больше