Chiến lược mua lại định lượng 4 giai đoạn này dựa trên việc mua bốn giai đoạn để theo dõi các chuyển động sóng. Nó vào thị trường sau khi thao túng và bán khi nhu cầu của người mua tăng. Chiến lược này phù hợp với cổ phiếu có biến động lớn và đạt được kiểm soát chi phí tốt hơn thông qua mua từng giai đoạn.
Chiến lược này đầu tiên tính toán các đường kháng cự và hỗ trợ. Đường kháng cự được xác định bởi giao điểm của giá đóng và đường trung bình động dao động của giá cao, trong khi đường hỗ trợ được xác định bởi giao điểm của giá đóng và đường trung bình động dao động của giá thấp.
Khi giá phá vỡ dưới đường hỗ trợ, nếu giá nằm trong phạm vi mua thiết lập từ đường kháng cự, nó sẽ mua 25% vị trí trong giai đoạn đầu tiên. sau đó nó sẽ mua thêm 25% vị trí xung quanh giá mua đầu tiên, và như vậy trong 4 lần, cuối cùng giữ 100% vị trí.
Khi giá cổ phiếu vượt quá gấp đôi chi phí mở cửa, nó sẽ đóng tất cả các vị trí.
Tiếp tục giảm tồn kho mà không dừng lỗ, dẫn đến tổn thất lớn
Cài đặt tham số không chính xác làm cho nhiều điểm mua quá gần để đa dạng hóa chi phí
Điểm dừng mất mát quá rộng để kiểm soát thiệt hại hiệu quả
Điều chỉnh các thông số cho các loại cổ phiếu khác nhau để phù hợp hơn với đặc điểm của chúng
Thêm các chỉ số biến động để mua khi biến động tăng
Tối ưu hóa lợi nhuận bằng cách sử dụng dừng lại để đạt được lợi nhuận cao hơn
Thêm cài đặt dừng lỗ để cắt giảm lỗ khi giá vượt qua một số mức nhất định
Chiến lược mua cổ phiếu định lượng 4 giai đoạn của BIST rất phù hợp với các cổ phiếu khái niệm phổ biến nói chung. Bằng cách sắp xếp các giao dịch mua, nó 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. Ngoài ra, các thiết lập lấy lợi nhuận và dừng lỗ hợp lý cho phép nó hoạt động tốt trong kiểm soát rủi ro. Với các điều chỉnh tham số liên tục và tối ưu hóa dựa trên môi trường thị trường thực tế, chiến lược này có thể cung cấp alpha đáng tin cậy.
/*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)