Stratégie d'acquisition quantitative d'actions BIST en quatre étapes


Date de création: 2023-12-19 15:21:22 Dernière modification: 2023-12-19 15:21:22
Copier: 0 Nombre de clics: 560
1
Suivre
1619
Abonnés

Stratégie d’acquisition quantitative d’actions BIST en quatre étapes

Aperçu

La stratégie d’achat quantitatif de BIST en quatre phases est une stratégie qui utilise le suivi de la volatilité des achats en quatre phases, achetant dans les zones où le marché est en panne et vendant dans les zones où le marché est en hausse. Cette stratégie s’applique aux actions qui ont une forte volatilité et permet une meilleure maîtrise des coûts en achetant par lots.

Principe de stratégie

La stratégie commence par calculer les lignes de résistance et de soutien. La ligne de résistance est déterminée par la croisée des moyennes oscillatrices des prix élevés et des prix de clôture, et la ligne de soutien par la croisée des moyennes oscillatrices des prix de clôture et des prix bas.

Lorsqu’un prix tombe en dessous de la ligne de support, si le prix est éloigné de la ligne de résistance dans la plage d’achat définie, acheter une position de 25% pour la première étape. Ensuite, acheter une position de 25% à nouveau près du prix d’achat de la première étape.

Lorsque le prix de l’action est supérieur au double du coût d’ouverture, la liquidation complète de la position est effectuée.

Avantages stratégiques

  1. Acheter quatre fois, réduire le coût
  2. Suivre les fluctuations des actions pour un meilleur point d’entrée
  3. Les points de rupture sont raisonnables, les bénéfices sont meilleurs

Risques et solutions

  1. Les cours des actions continuent de baisser et ne peuvent pas être arrêtés, ce qui pourrait entraîner de lourdes pertes

    • Une ligne de stop-loss raisonnable et un contrôle efficace des pertes
  2. Paramètres mal réglés, points d’achat multiples trop proches pour une dispersion des coûts

    • Réglementer les écarts de prix entre les étapes d’achat
  3. Le point de rupture est trop élevé pour contrôler efficacement les pertes

    • Définir une distance de stop-loss appropriée en fonction de l’environnement de trading réel et de la tolérance psychologique

Orientation de l’optimisation de la stratégie

  1. Ajustement des paramètres en fonction des différents types d’actions pour que la zone d’achat soit plus adaptée aux caractéristiques de l’action

  2. Ajouter un indicateur de volatilité pour acheter lorsque la volatilité augmente

  3. Optimisation des méthodes de blocage plutôt que de suivi des blocages, pour des gains plus élevés

  4. Augmentation du paramètre Stop Loss pour arrêter les pertes lorsque le prix dépasse un certain niveau à la baisse

Résumer

La stratégie d’acquisition quantitative en quatre étapes des actions BIST est une stratégie qui convient parfaitement au concept populaire. En construisant des stocks par lots, il est possible d’utiliser efficacement la volatilité des actions et de bénéficier d’un meilleur coût lorsque les prix rebondissent. De plus, un réglage raisonnable des arrêts et des pertes a également permis à la stratégie de mieux gérer les risques.

Code source de la stratégie
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
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/
// © Cantalk

//@version=5
strategy("BİST_100 HİSSELERİ 1_SAAT 4 KADEME ALIM",overlay = true, pyramiding=4, initial_capital=10000, process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.002)



LB2 = input(30, title="Alım_Üst_Çizgi")
LB = input(90, title="Alım_Alt_Çizgi")
Barcolor=input(true,title="Barcolor")
Bgcolor=input(true,title="Bgcolor")
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////
RDirenc = ta.valuewhen(ta.cross(ta.hma(close, LB2), close), ta.highest(high, LB2), 1)
SDestek = ta.valuewhen(ta.cross(close, ta.hma(close, LB)), ta.lowest(low, LB), 1)



//plot(RDirenc,title="Resistance", color=#f7d707fc, linewidth =2)
//plot(SDestek,title="Support", color=#064df4, linewidth = 2)

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

LB22 = input(40, title="Satım_Üst_Çizgi")
LB1 = input(300, title="Satım_Alt_Çizgi")

Barcolor2=input(true,title="Barcolor2")
Bgcolor2=input(true,title="Bgcolor2")
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////
RDirenc2 = ta.valuewhen(ta.cross(ta.hma(close, LB22), close), ta.highest(high, LB22), 1)
SDestek2 = ta.valuewhen(ta.cross(close, ta.hma(close, LB1)), ta.lowest(low, LB1), 1)



//plot(RDirenc2,title="Resistance2", color=#f40a0afc, linewidth =2)
//plot(SDestek2,title="Support2", color=#0eed0e, linewidth = 2)

//colors=if(close>RDirenc, color= #008000,if(SDestek<close,color=#FFFF00,color=#FF0000))

aralik_yuzde_alis = ((RDirenc-SDestek)/SDestek)*100
fark = input(25.0, title="Alış Aralığı %")



aralik_yuzde_satis = ((RDirenc2-SDestek2)/SDestek2)*100
fark2 = input(45.0, title="Satış aralığı %")




buyProcess = input(0.12, "ALIM YERİ %")
//buyProcess2 = input(0.10, "ALIM YERİ-2 %")
//buyProcess3 = input(0.10, "ALIM YERİ-3 %")



buy1 = strategy.position_avg_price - (strategy.position_avg_price * buyProcess)

buy2 = buy1 - (strategy.position_avg_price * buyProcess)

buy3 = buy2 - (strategy.position_avg_price * buyProcess)

buy4 = buy3 - (strategy.position_avg_price * buyProcess)



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
isLong1 = if ta.crossover(close, SDestek) and aralik_yuzde_alis < fark 
    1
else
    0

    
isLong2 = if ta.crossover(close, SDestek) and (close <=  buy1)
    1
else
    0

isLong3 = if ta.crossover(close, SDestek) and (close <=  buy2) 
    1
else
    0

isLong4 = if ta.crossover(close, SDestek) and (close <= buy3) 
    1
else
    0



message_long_entry  = input("long entry message")
message_long_exit   = input("long exit message")


fullProfit = input(2.00, "PROFİT SATIŞ SEVİYESİ")
profit = strategy.position_avg_price * fullProfit
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

strategy.entry(id = "BUY-1", direction = strategy.long, qty = 25, when = (isLong1 and strategy.position_size == 0), alert_message = message_long_entry)
strategy.entry(id = "BUY-2", direction = strategy.long, qty = 25, when = (isLong2 and strategy.position_size == 25), alert_message = message_long_entry)
strategy.entry(id = "BUY-3", direction = strategy.long, qty = 25, when = (isLong3 and strategy.position_size == 50), alert_message = message_long_entry)
strategy.entry(id = "BUY-4", direction = strategy.long, qty = 25, when = (isLong4 and strategy.position_size == 75), alert_message = message_long_entry)



buyclose1 = if  (close >= (strategy.position_avg_price + profit)) and aralik_yuzde_satis > fark2
    close
    

strategy.exit("EXİT",qty_percent = 100, stop = buyclose1)


aritmeticClose =  strategy.position_avg_price + profit
plot(aritmeticClose, color = color.rgb(248, 5, 240), linewidth = 1, style = plot.style_linebr)