
A estratégia de aquisição quantitativa de ações BIST em quatro fases é uma estratégia que utiliza o rastreamento de flutuações de quatro fases de compra, comprando em áreas em que o mercado está em queda e vendendo em áreas de maior volume de compra. A estratégia é aplicada a ações com grande volatilidade e permite um melhor controle de custos através da compra em lotes.
A estratégia começa com o cálculo das linhas de resistência e suporte. A linha de resistência é determinada pela interseção de médias de choque de preços altos e preços de fechamento, e a linha de suporte é determinada pela interseção de médias de choque de preços de fechamento e preços baixos.
Quando o preço cai abaixo da linha de suporte, se o preço estiver distante da linha de resistência dentro do intervalo de compra definido, faça a compra de 25% da posição da primeira etapa. Depois, faça a compra de 25% da posição na proximidade do preço de compra da primeira etapa, fazendo o ciclo 4 vezes, atingindo 100% da posição.
Quando o preço das ações for mais do que o dobro do custo de abertura da posição, a liquidação total da posição é realizada.
Preços das ações continuam a cair, não conseguem parar o deslocamento e podem levar a grandes perdas
Parâmetros mal definidos, pontos de compra múltiplos muito próximos, não conseguindo o efeito de dispersão de custos
O ponto de parada de perdas é muito grande para controlar os prejuízos de forma eficaz.
Parâmetros ajustados de acordo com os diferentes tipos de ações para que a área de compra seja mais adequada às características da ação
Adicionar um indicador de flutuabilidade para comprar quando a flutuabilidade aumenta
Otimização do método de parada em vez de rastrear a parada para obter maiores ganhos
Aumentar a configuração da linha de parada para parar a perda quando o preço ultrapassar um determinado nível para baixo
A estratégia de aquisição quantitativa de ações BIST em quatro etapas é, em geral, uma estratégia muito adequada para ações de conceito popular. Com a construção em lotes, é possível aproveitar efetivamente a volatilidade das ações e obter melhores custos quando o preço retorna.
/*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)