
Cette stratégie combine les signaux de négociation bilatéraux du TSI et de l’indicateur CCI amélioré, et utilise le arbitrage pour ouvrir fréquemment des positions pour rechercher des bénéfices plus stables et plus durables. La logique clé est la fourchette d’or et la fourchette morte de l’indicateur TSI, combinée à la ligne de signal polyvalente de l’indicateur HMACCI, pour déterminer la direction d’achat et de vente du marché.
La stratégie est basée sur une combinaison de deux indicateurs: le TSI et le HMACCI.
L’indicateur TSI contient une moyenne rapide et une moyenne lente pour déterminer les signaux d’achat et de vente. Lorsque la ligne rapide franchit la ligne lente de bas en haut, c’est un signal d’achat et non de vente. Cela permet de capturer plus sensiblement les tendances changeantes du marché.
L’indicateur HMACCI est basé sur l’indicateur CCI traditionnel et utilise la moyenne mobile de Hull au lieu du prix lui-même, ce qui permet d’éliminer une partie du bruit et de déterminer la zone de survente. La zone de survente peut confirmer à nouveau la direction du signal de l’indicateur TSI.
La logique clé de la stratégie est de combiner les résultats de ces deux indicateurs et de définir des conditions supplémentaires pour filtrer les signaux erronés, telles que le prix de clôture d’une ligne K précédente et le prix le plus élevé et le plus bas avant plusieurs cycles, pour contrôler la qualité du signal de retournement.
En ce qui concerne l’ouverture de positions, si les conditions sont remplies, chaque fois que la ligne K se ferme, la position est ouverte au prix du marché, tout en faisant plus de blanchiment. Cela permet d’obtenir des gains plus stables, mais nécessite d’assumer le risque de arbitrage.
En ce qui concerne le stop-loss, on a mis en place un stop-loss flottant et un profit entièrement à zéro. Cela permet de bien contrôler le risque de transactions unilatérales.
Il s’agit d’une stratégie d’arbitrage à haute fréquence relativement stable et fiable. Les principaux avantages sont:
Les principaux risques auxquels il faut faire attention sont:
Le risque peut être réduit par:
Il y a encore beaucoup à améliorer dans cette stratégie, principalement en ce qui concerne:
Cette stratégie est globalement une stratégie de arbitrage bilatéral stable, fiable et à haut taux d’erreur. Elle intègre le jugement de tendance et les indicateurs de retournement pour obtenir des gains stables grâce à des positions bilatérales fréquentes. En outre, la stratégie elle-même a une forte marge d’optimisation et un potentiel, une idée de trading à haute fréquence qui mérite une étude approfondie.
/*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"}]
*/
// This source code is subject to the terms of the suns bipolarity
//©SeaSide420
//@version=4
strategy(title="TSI HMA CCI", default_qty_type=strategy.cash,default_qty_value=1000,commission_type=strategy.commission.percent,commission_value=0.001)
long = input(title="TSI Long Length", type=input.integer, defval=25)
short = input(title="TSI Short Length", type=input.integer, defval=25)
signal = input(title="TSI Signal Length", type=input.integer, defval=13)
length = input(33, minval=1, title="HMACCI Length")
src = input(open, title="Price Source")
ld = input(50, minval=1, title="Line Distance")
CandlesBack = input(8,minval=1,title="Candles Look Back")
StopLoss= input(3000,minval=1, title="Stop Loss")
TargetProfitAll= input(3000,minval=1, title="Target Profit Close All")
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2020)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
ul = (ld)
ll = (ld-ld*2)
ma = hma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
price = close
double_smooth(src, long, short) =>
fist_smooth = ema(src, long)
ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)*10
tsi_value2=ema(tsi_value/10, signal)*10
cc = color.white
ct = color.new(color.gray, 90)
if cci<ll or cci[1]<ll
cc:=color.red
if cci>ul or cci[1]>ul
cc:=color.green
if cci<ul and cci>ll
cc:=color.new(color.yellow, 90)
ccc = color.white
if cci>ul
ccc:=color.green
if cci<cci[1] and cci<ul and cci>ll
ccc:=color.red
if cci<ll
ccc:=color.red
if cci>cci[1] and cci>ll and cci<ul
ccc:=color.green
tsiplot= plot(tsi_value, color=color.lime)
tsiplot2=plot(tsi_value2, color=color.red)
colorchange2 =tsi_value>tsi_value2?color.lime:color.orange
fill(tsiplot, tsiplot2, color=colorchange2, title="TSIBackground", transp=50)
band1 = hline(ul, "Upper Band 1", color=ct, linestyle=hline.style_dashed)
band0 = hline(ll, "Lower Band 1", color=ct, linestyle=hline.style_dashed)
fill(band1, band0, color=cc, title="MidBandBackground", transp=0)
band2 = hline(ul, "Upper Band 2", color=ct, linestyle=hline.style_dashed)
band3 = hline(ll, "Lower Band 2", color=ct, linestyle=hline.style_dashed)
cciplot2 = plot(cci, "CCIvHMA 2", color=color.black, transp=0, linewidth=5)
cciplot = plot(cci, "CCIvHMA", color=ccc, transp=0, linewidth=3)
hline(0, title="Zero")
hline(420, title="420")
hline(-420, title="-420")
fill(cciplot, cciplot2, color=ccc, title="CCIBackground", transp=0)
LongCondition=cci>cci[1] and cci>ll and src>src[CandlesBack] and tsi_value>tsi_value2
ShortCondition=cci<cci[1] and cci<ul and src<src[CandlesBack] and tsi_value<tsi_value2
plotshape(LongCondition, title="BUY", style=shape.circle, location=location.top, color=color.green)
plotshape(ShortCondition, title="SELL", style=shape.circle, location=location.top, color=color.red)
if strategy.openprofit>TargetProfitAll
strategy.close_all(when=window(),comment="close all profit target")
if LongCondition and strategy.openprofit>-1
strategy.order("BUY", strategy.long,when=window())
if ShortCondition and strategy.openprofit>-1
strategy.order("SELL", strategy.short,when=window())
strategy.exit("SL exit a sell", "SELL", loss = StopLoss,when=window())
strategy.exit("SL exit a buy", "BUY", loss = StopLoss,when=window())