Esta estratégia de aquisição quantitativa de ações BIST em 4 fases

Autora:ChaoZhang, Data: 2023-12-19 15:21:22
Tags:

img

Esta estratégia de aquisição quantitativa de ações BIST em 4 estágios é baseada em uma compra em quatro estágios para rastrear os movimentos da onda.

Princípios de estratégia

Esta estratégia calcula primeiro as linhas de resistência e suporte. A linha de resistência é determinada pela intersecção do preço de fechamento e da média móvel oscilante do preço alto, enquanto a linha de suporte é determinada pela intersecção do preço de fechamento e da média móvel oscilante do preço baixo.

Quando o preço quebra abaixo da linha de suporte, se o preço estiver dentro do intervalo de compra definido da linha de resistência, ele comprará 25% da posição na primeira etapa.

Quando o preço da ação exceder o dobro do custo de abertura, fechará todas as posições.

Vantagens da estratégia

  1. Reduzir os custos de compra através de compras em quatro etapas
  2. Melhores pontos de entrada através do acompanhamento das flutuações das existências
  3. Ponto de lucro razoável para retornos decentes

Riscos e soluções

  1. A continuação do declínio das existências sem o stop loss, levando a grandes perdas

    • Estabelecer um stop loss razoável para controlar eficazmente as perdas
  2. Configurações incorretas de parâmetros tornam múltiplos pontos de compra demasiado próximos para diversificar custos

    • Estabelecer diferenças de preços adequadas entre as fases de compra
  3. Ponto de paragem demasiado largo para controlar eficazmente as perdas

    • Estabelecer a distância de parada adequada com base no ambiente de negociação real e na tolerância psicológica

Orientações de otimização

  1. Ajustar os parâmetros dos diferentes tipos de unidades populacionais para melhor adaptá-los às suas características

  2. Adicionar indicadores de volatilidade para comprar quando a volatilidade aumentar

  3. Otimizar a captação de lucro usando o trailing stop para alcançar retornos mais elevados

  4. Adicionar configurações de stop loss para cortar perdas quando o preço quebra certos níveis

Resumo

A estratégia de aquisição quantitativa de ações BIST em 4 estágios é bem adequada para ações conceituais populares em geral. Ao organizar as compras, ele pode efetivamente utilizar a volatilidade das ações para obter melhores custos quando os preços recuarem. Além disso, as configurações razoáveis de lucro e stop loss permitem que ele funcione bem no controle de riscos. Com ajustes contínuos de parâmetros e otimizações baseadas em ambientes reais de mercado, essa estratégia pode entregar de forma confiável alfa.


/*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)

Mais.