La estrategia combina el uso de la dirección de la tendencia y el seguimiento de la tendencia mediante el uso de indicadores de la tabla de equilibrio marítima y la tabla de equilibrio primaria. Los datos de la línea K de la línea de equilibrio marítima reducen el ruido. La tabla de equilibrio primaria combina varias señales para determinar la tendencia fuerte y débil a través de la línea de conversión, la línea de referencia, etc. La combinación de dos indicadores aumenta la estabilidad de la estrategia.
Calcule el precio de cierre de la brecha en el mar y trace los indicadores de la tabla de equilibrio a priori, como la línea de conversión, la línea de referencia y otros. Haga más cuando el precio de cierre sea superior a los dos días anteriores y superior a la línea de la parte superior y la línea de retardo de la nube. Haga vacío cuando el precio de cierre sea inferior a los dos días anteriores y inferior a la parte inferior y la línea de retardo de la nube.
Se pueden ajustar adecuadamente los parámetros de suavización, reducir el período de tenencia de la posición, optimizar los parámetros de la tabla de equilibrio inicial para controlar el riesgo.
La estrategia integra varios indicadores para determinar la dirección de la tendencia y la capacidad de controlar el retroceso es más fuerte. Se puede mejorar aún más la eficacia mediante métodos como la medición.
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Heiken Ashi + Ichimoku Kinko Hyo Strategy", shorttitle="HaI", 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)
hahigh = security(heikinashi(syminfo.tickerid), timeframe.period, high)
halow = security(heikinashi(syminfo.tickerid), timeframe.period, low)
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]
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 = hahigh > max(hahigh[1],hahigh[2]) and close>ChikouSpan and close>SenkouSpanH and (TenkanSen>=KijunSen or close>KijunSen)
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = halow < min(halow[1],halow[2]) and close<ChikouSpan and close<SenkouSpanL and (TenkanSen<=KijunSen or close<KijunSen)
if (shortCondition)
strategy.entry("Short",strategy.short)
closelong = halow < min(halow[1],halow[2]) and (TenkanSen<KijunSen or close<TenkanSen or close<KijunSen or close<SenkouSpanH or close<ChikouSpan)
if (closelong)
strategy.close("Long")
closeshort = hahigh > max(hahigh[1],hahigh[2]) and (TenkanSen>KijunSen or close>TenkanSen or close>KijunSen or close>SenkouSpanL or close>ChikouSpan)
if (closeshort)
strategy.close("Short")