Stratégie d'arbitrage bilatérale basée sur les indicateurs TSI et HMACCI


Date de création: 2024-01-23 11:26:14 Dernière modification: 2024-01-23 11:26:14
Copier: 0 Nombre de clics: 575
1
Suivre
1617
Abonnés

Stratégie d’arbitrage bilatérale basée sur les indicateurs TSI et HMACCI

Aperçu

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é.

Principe de stratégie

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.

Avantages stratégiques

Il s’agit d’une stratégie d’arbitrage à haute fréquence relativement stable et fiable. Les principaux avantages sont:

  1. La combinaison de deux indicateurs permet d’éviter efficacement les faux signaux
  2. Chaque ligne K ouvre des positions, des opérations d’arbitrage fréquentes, des fluctuations plus stables des gains et des pertes
  3. Une logique d’ouverture stricte et des conditions de stop-loss permettant de maîtriser les risques
  4. Le taux d’erreur est plus élevé en combinaison avec la tendance et le jugement inversé.
  5. Préférences sans direction, adaptées à toutes les situations de marché
  6. Les paramètres peuvent être ajustés spatialement et optimisés pour différentes variétés

Analyse des risques

Les principaux risques auxquels il faut faire attention sont:

  1. Les transactions à haute fréquence entraînent une perte de frais de traitement plus élevée
  2. La probabilité d’être pris au piège de l’arbitrage est infinie.
  3. Une mauvaise configuration des paramètres peut entraîner une entrée excessive dans le champ
  4. La possibilité d’une perte unilatérale énorme dans un court laps de temps est difficile à supporter.

Le risque peut être réduit par:

  1. Adaptation appropriée de la fréquence d’ouverture des dépôts pour réduire l’impact des frais de traitement
  2. Optimiser les paramètres de l’indicateur pour assurer la qualité du signal
  3. La banque a augmenté sa marge de stop-loss, mais a subi une perte de marge plus importante.
  4. Tester les paramètres de différentes variétés

Direction d’optimisation

Il y a encore beaucoup à améliorer dans cette stratégie, principalement en ce qui concerne:

  1. Optimisation et test de paramètres tels que la période, la durée, etc.
  2. Essayez différentes combinaisons d’indicateurs, comme le MACD, le BOLL, etc.
  3. Modification de la logique d’ouverture de la position et mise en place de conditions de filtrage plus strictes
  4. Optimiser les stratégies de stop-loss pour un stop-loss dynamique et décisif
  5. Essayez des méthodes d’apprentissage automatique pour trouver une plage de paramètres plus stable
  6. Tests sur les variétés et les périodes de négociation
  7. Les indicateurs de tendance et les chocs évitent de faire une entrée trop radicale

Résumer

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.

Code source de la stratégie
/*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())