Stratégie de trading quantitative Bitcoin combinant MACD, RSI et FIB


Date de création: 2023-12-26 17:08:03 Dernière modification: 2023-12-26 17:08:03
Copier: 0 Nombre de clics: 932
1
Suivre
1623
Abonnés

Stratégie de trading quantitative Bitcoin combinant MACD, RSI et FIB

Aperçu

Cette stratégie, connue sous le nom de stratégie de Finch croisée avec l’or, combine l’indicateur de technologie MACD, l’indicateur RSI relativement faible et la théorie de rétractation / expansion de Fibonacci dans le principe de la ligne de partage de l’or, pour réaliser des transactions quantitatives contre des crypto-monnaies telles que Bitcoin.

Principe de stratégie

  1. L’indicateur MACD détermine les points d’achat et de vente
  • Les périodes EMA de 15 et 30 pour les lignes rapides et lentes MACD
  • Jugez si la ligne rapide est un point d’achat et la ligne lente un point de vente.
  1. Le RSI filtre les fausses signaux
  • Le paramètre RSI est de 50 cycles
  • L’indicateur RSI peut être utilisé pour aider à filtrer les faux signaux de certains MACD
  1. La théorie de Fibonacci définit SUPPORT/RESISTANCE
  • Le prix le plus élevé et le prix le plus bas de la période la plus récente (par exemple, 38 lignes K)
  • Calcul du repli et de l’expansion de 0,5 Fibonacci sur la ligne de séparation de l’or
  • Peut être utilisé pour déterminer le support et la résistance
  1. La moyenne et le RSI jugent le surachat et la survente
  • La moyenne cyclique de 50 permet de déterminer si nous sommes actuellement en sur-achat ou en sur-vente
  • L’indicateur RSI peut aussi être utilisé pour juger si une personne est en sur-achat ou en sur-vente.
  1. Le mécanisme anti-ouverture de position
  • Donner aux utilisateurs la possibilité de choisir de faire un seul coup de main
  • La logique de multi-commutation peut être ajustée de manière flexible en fonction du choix de l’utilisateur

Analyse des avantages

Le plus grand avantage de cette stratégie est qu’elle peut fonctionner en tout temps, ce qui réduit considérablement les coûts de main-d’œuvre. De plus, la combinaison de plusieurs indicateurs peut améliorer la victoire, l’effet est particulièrement évident en marché haussier. Les avantages spécifiques sont les suivants:

  1. 7 points*24 heures de trading automatique et sans intervention humaine
  2. L’indicateur MACD est un bon indicateur pour déterminer le moment de l’achat et de la vente.
  3. L’indicateur RSI peut filtrer certains faux signaux
  4. La théorie de Fibonacci a augmenté la base de décision des transactions
  5. 50 Le cours moyen et le RSI sont sur-achat et sur-vente
  6. Adaptation aux évolutions du marché par un mécanisme de rétroaction

Analyse des risques

Cette stratégie comporte également des risques, principalement liés à l’inversion de la tendance à la hausse, où le stop-loss peut être plus difficile à appliquer. En outre, il existe des risques liés à une période de détention trop longue. Les principaux points de risque sont les suivants:

  1. La distance de l’arrêt de dégâts est trop proche, et les conditions météorologiques sont trop difficiles à protéger.
  2. Risques systémiques liés à une longue période de détention

La solution est la suivante:

  1. Laissez la distance de freinage suffisamment large pour que le freinage soit efficace.
  2. Optimiser le cycle de détention des positions et réduire le risque de détention excessive

Direction d’optimisation

Cette stratégie peut être optimisée principalement dans les directions suivantes:

  1. Optimisation des paramètres de l’indicateur MACD pour améliorer l’exactitude des signaux d’achat et de vente
  2. Optimiser les paramètres de l’indicateur RSI et améliorer son utilité
  3. Test de la théorie de Fibonacci avec plus de cycles
  4. Ajout d’autres indicateurs de filtrage pour réduire davantage la probabilité de faux signaux
  5. Combiné à plus d’indicateurs macrocycliques pour évaluer les tendances du marché

Résumer

Cette stratégie intègre plusieurs indicateurs quantifiés pour déterminer le moment de l’achat et de la vente, permettant d’automatiser les transactions de crypto-monnaie tout au long de la journée. En optimisant les paramètres de chaque indicateur et en ajoutant plus d’indicateurs auxiliaires, il est envisagé d’améliorer encore le niveau de rentabilité de la stratégie.

Code source de la stratégie
/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 10m
basePeriod: 1m
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/
// © onurenginogutcu

//@version=4
strategy("STRATEGY R18-F-BTC", overlay=true, margin_long=100, margin_short=100)

///////////default girişler 1 saatlik btc grafiği için geçerli olmak üzere - stop loss'lar %2.5 - long'da %7.6 , short'ta %8.1

sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT") /////////btc'yi indikatör olarak alıyoruz

lsl = input(title="Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
ssl = input(title="Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=7.6) * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=7.5) * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=90) * 0.01
     
choice = input(title="Reverse ?", type=input.bool, defval=false)

symClose = security(sym, "", close)
symHigh = security(sym, "", high)
symLow = security(sym, "", low)

i = ema (symClose , 15) - ema (symClose , 30) ///////// ema close 15 ve 30 inanılmaz iyi sonuç verdi (macd standartı 12 26)
r = ema (i , 9)

sapust = highest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
sapalt = lowest (i , 100) * 0.729  //////////0.729 altın oran oldu 09.01.2022

///////////highx = highest (close , 365) * 0.72 fibo belki dahiledilebilir
///////////lowx = lowest (close , 365) * 1.272 fibo belki dahil edilebilir
simRSI = rsi (symClose , 50 ) /////// RSI DAHİL EDİLDİ "50 MUMLUK RSI EN İYİ SONUCU VERİYOR"


//////////////fibonacci seviyesi eklenmesi amacı ile koyuldu fakat en iyi sonuç %50 seviyesinin altı ve üstü (low ve high 38 barlık) en iyi sonuç verdi
fibvar = 38
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)

///////////////////////////////////////////////////////////// INDICATOR CONDITIONS

longCondition = crossover(i, r) and i < sapalt and symClose < sma (symClose , 50) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and symClose > sma (symClose , 50) and simRSI > sma (simRSI , 50)  and symClose > fibtop

////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////stratejilerde kalan capital için strategy.equity kullan (bunun üzerinden işlem yap)


if (choice == false and longCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
   

if (choice == false and shortCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and longCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and shortCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
    

if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price*(1 - lsl) , limit=strategy.position_avg_price*(1 + longtp))

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price*(1 + ssl) , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)