Chiến lược mua lại cổ phiếu BIST định lượng bốn giai đoạn


Ngày tạo: 2023-12-19 15:21:22 sửa đổi lần cuối: 2023-12-19 15:21:22
sao chép: 0 Số nhấp chuột: 560
1
tập trung vào
1619
Người theo dõi

Chiến lược mua lại cổ phiếu BIST định lượng bốn giai đoạn

Tổng quan

Chiến lược mua số lượng cổ phiếu BIST bốn giai đoạn là một chiến lược sử dụng theo dõi biến động của bốn giai đoạn mua, mua ở khu vực thị trường bị rơi và bán ở khu vực tăng giá. Chiến lược này được áp dụng cho các cổ phiếu có biến động lớn để kiểm soát chi phí tốt hơn bằng cách mua theo lô.

Nguyên tắc chiến lược

Chiến lược này bắt đầu bằng cách tính toán đường kháng cự và đường hỗ trợ. Đường kháng cự được xác định bằng đường giao thoa giữa đường trung bình dao động của giá cao và giá đóng cửa, và đường hỗ trợ được xác định bằng đường trung bình dao động của giá đóng cửa và giá thấp.

Khi giá giảm xuống ngưỡng hỗ trợ, nếu giá nằm trong khoảng mua được thiết lập, hãy mua 25% vị trí trong giai đoạn đầu tiên. Sau đó, mua 25% vị trí gần giá mua trong giai đoạn đầu tiên, lặp lại 4 lần, cuối cùng đạt được 100% vị trí.

Khi giá cổ phiếu cao hơn gấp đôi chi phí mở vị trí, hãy hoàn toàn thoát khỏi vị trí.

Lợi thế chiến lược

  1. Mua hàng bốn lần, giảm chi phí mua hàng
  2. Theo dõi sự biến động của cổ phiếu để có được điểm vào tốt hơn
  3. Điểm dừng hợp lý, thu nhập tốt hơn

Rủi ro và giải pháp

  1. Giá cổ phiếu tiếp tục giảm, không thể dừng lỗ và có thể dẫn đến tổn thất lớn

    • Thiết lập một đường dừng lỗ hợp lý và kiểm soát lỗ hổng hiệu quả
  2. Thiết lập tham số không đúng, nhiều điểm mua quá gần, không thể thực hiện hiệu quả phân tán chi phí

    • Đặt khoảng cách giá hợp lý giữa các giai đoạn mua
  3. Điểm dừng lỗ được thiết lập quá lớn để kiểm soát tổn thất một cách hiệu quả

    • Thiết lập khoảng cách dừng lỗ phù hợp dựa trên môi trường giao dịch thực tế và khả năng chịu đựng tâm lý

Hướng tối ưu hóa chiến lược

  1. Điều chỉnh tham số cho các loại cổ phiếu khác nhau để khu vực mua phù hợp hơn với đặc điểm của cổ phiếu đó

  2. Tham gia chỉ số biến động, mua khi biến động tăng

  3. Tối ưu hóa phương thức dừng, thay vì theo dõi dừng, để đạt được lợi nhuận cao hơn

  4. Thêm thiết lập đường dừng lỗ để dừng lỗ khi giá vượt qua một mức giảm xuống

Tóm tắt

Chiến lược mua lại định lượng cổ phiếu BIST bốn giai đoạn nói chung là một chiến lược rất phù hợp với các cổ phiếu khái niệm nóng. Bằng cách xây dựng lô hàng, có thể sử dụng hiệu quả sự biến động của cổ phiếu, có được chi phí tốt hơn khi giá giảm. Đồng thời, thiết lập dừng và mất mát hợp lý cũng làm cho chiến lược này hoạt động tốt hơn trong việc kiểm soát rủi ro.

Mã nguồn chiến lược
/*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)