Strategi akuisisi kuantitatif saham BIST ini didasarkan pada pembelian empat tahap untuk melacak pergerakan gelombang. Ini memasuki pasar selama post-manipulasi dan menjual ketika permintaan pembeli meningkat. Strategi ini cocok untuk saham dengan fluktuasi besar, dan mencapai kontrol biaya yang lebih baik melalui pembelian tahap demi tahap.
Strategi ini pertama-tama menghitung garis resistance dan support. garis resistance ditentukan oleh persimpangan harga close dan moving average oscillating dari harga high, sedangkan support line ditentukan oleh persimpangan harga close dan moving average oscillating dari harga low.
Ketika harga menembus di bawah garis dukungan, jika harga berada dalam rentang pembelian yang ditetapkan dari garis resistensi, ia akan membeli 25% dari posisi di tahap pertama. Kemudian ia akan membeli 25% posisi lain di sekitar harga beli pertama, dan seterusnya selama 4 kali, akhirnya memegang 100% dari posisi.
Ketika harga saham melebihi dua kali biaya pembukaan, itu akan menutup semua posisi.
Penurunan persediaan terus tanpa stop loss, menyebabkan kerugian besar
Pengaturan parameter yang tidak benar membuat beberapa titik beli terlalu dekat untuk mendiversifikasi biaya
Titik stop loss terlalu luas untuk mengontrol kerugian secara efektif
Sesuaikan parameter untuk berbagai jenis stok agar lebih sesuai dengan karakteristik mereka
Tambahkan indikator volatilitas untuk membeli ketika volatilitas meningkat
Mengoptimalkan mengambil keuntungan dengan menggunakan trailing stop untuk mencapai pengembalian yang lebih tinggi
Tambahkan pengaturan stop loss untuk memotong kerugian ketika harga melanggar tingkat tertentu
Strategi akuisisi kuantitatif saham BIST 4 tahap sangat cocok untuk saham konsep populer secara keseluruhan. Dengan menstage pembelian, ia dapat secara efektif memanfaatkan volatilitas saham untuk mendapatkan biaya yang lebih baik ketika harga menarik kembali. Juga, pengaturan mengambil keuntungan dan stop loss yang wajar memungkinkan untuk berkinerja baik dalam pengendalian risiko. Dengan penyesuaian parameter berkelanjutan dan optimasi berdasarkan lingkungan pasar yang sebenarnya, strategi ini dapat secara andal memberikan 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)