
La estrategia combina el William BSI Moving Average y el gráfico de equilibrio de primera mano, dos indicadores técnicos, para aprovechar sus respectivas ventajas y mejorar la precisión de las decisiones de negociación. Entre ellos, el William BSI Moving Average refleja plenamente la tendencia de los cambios en los precios, mientras que el gráfico de equilibrio de primera mano permite determinar la reversión de la tendencia con anticipación.
Las medias móviles binarias de William contienen líneas rápidas y lentas. La fórmula de cálculo de la línea rápida es: 2 (n/2 promedios móviles ponderados) y la fórmula de cálculo de la línea lenta es: n promedios móviles ponderados. Cuando la línea rápida rompe la línea lenta desde la dirección inferior, es una señal de compra; cuando cae desde la dirección superior, es una señal de venta.
El gráfico de equilibrio a primera vista contiene los cuatro componentes de la línea de cambio de mano, la línea de referencia, la línea de vanguardia y la gráfica de la nube. De ellos, el cruce de oro de la línea de cambio de mano y la línea de referencia es una señal de compra, el cruce de muerte es una señal de venta.
La estrategia combina las ventajas de dos indicadores, el primero es que se determina que el indicador de William emite una señal, y el segundo es que se determina que el indicador de la carta de equilibrio es una confirmación, que puede filtrar efectivamente las señales falsas y mejorar la precisión de la decisión.
Esta estrategia aprovecha al máximo las ventajas de los indicadores William para determinar la dirección de la tendencia y de la visión anticipada de la cartografía de equilibrio, lo que puede mejorar significativamente la precisión de las decisiones comerciales. Mediante el ajuste de parámetros y la combinación de otros indicadores, la estrategia de optimización sostenible se adapta mejor a los cambios en el mercado.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Hull MA-X + Ichimoku Kinko Hyo", shorttitle="Hi", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1000, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
keh=input(title="Double HullMA",defval=12, minval=1)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
TenkanSenPeriods = input(9, minval=1, title="Tenkan Sen Periods")
KijunSenPeriods = input(24, minval=1, title="Kijun Sen Periods")
SenkouSpanBPeriods = input(51, minval=1, title="Senkou Span B Periods")
displacement = input(24, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
TenkanSen = donchian(TenkanSenPeriods)
KijunSen = donchian(KijunSenPeriods)
SenkouSpanA = avg(TenkanSen, KijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)
SenkouSpanH = max(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
SenkouSpanL = min(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
ChikouSpan = close[displacement-1]
Hullfast=plot(n1,color=c)
Hullslow=plot(n2,color=c)
plot(cross(n1, n2) ? n1:na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1:na, style = line, color=d, linewidth = 3)
plot(TenkanSen, color=blue, title="Tenkan Sen", linewidth = 2)
plot(KijunSen, color=maroon, title="Kijun Sen", linewidth = 3)
plot(close, offset = -displacement, color=orange, title="Chikou Span", linewidth = 2)
sa=plot (SenkouSpanA, offset = displacement, color=green, title="Senkou Span A", linewidth = 2)
sb=plot (SenkouSpanB, offset = displacement, color=red, title="Senkou Span B", linewidth = 3)
fill(sa, sb, color = SenkouSpanA > SenkouSpanB ? green : red)
longCondition = n1>n2 and close>n2 and close>ChikouSpan and close>SenkouSpanH and (TenkanSen>KijunSen or close>KijunSen)
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and close<n2 and close<ChikouSpan and close<SenkouSpanL and (TenkanSen<KijunSen or close<KijunSen)
if (shortCondition)
strategy.entry("Short",strategy.short)
closelong = n1<n2 and close<n2 and (TenkanSen<KijunSen or close<TenkanSen or close<KijunSen or close<SenkouSpanL)
if (closelong)
strategy.close("Long")
closeshort = n1>n2 and close>n2 and (TenkanSen>KijunSen or close>TenkanSen or close>KijunSen or close>SenkouSpanH)
if (closeshort)
strategy.close("Short")