Chiến lược kim tự tháp OBV dựa trên Coinrule Script

Tác giả:ChaoZhang, Ngày: 2023-12-08 15:58:29
Tags:

img

Tổng quan

Chiến lược này được gọi là OBV Pyramid. Nó thiết kế các vị trí mở dựa trên chỉ số OBV và áp dụng phương pháp tăng vị trí kim tự tháp để theo dõi xu hướng kiếm lợi nhuận sau khi chúng xuất hiện.

Nguyên tắc

Chỉ số OBV đánh giá xu hướng giá dựa trên sự thay đổi khối lượng giao dịch, vì sự thay đổi khối lượng phản ánh thái độ của người tham gia thị trường. Khi đường OBV vượt trên 0, nó cho thấy sức mua tăng và hình thành xu hướng tăng. Khi vượt dưới 0, nó báo hiệu tăng áp lực bán hàng và xu hướng giảm.

Chiến lược này xác nhận xu hướng tăng khi OBV vượt qua trên 0. Khi xu hướng tăng hình, các quy tắc vị trí tăng kim tự tháp được thiết lập, cho phép thêm 7 lần mua. Nó nhằm mục đích kiếm lợi nhuận từ xu hướng trong khi thiết lập lấy lợi nhuận và dừng lỗ.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là bắt được xu hướng sử dụng phương pháp tiếp cận kim tự tháp để theo dõi xu hướng và lợi nhuận từ chúng.

Cụ thể, những lợi thế chính là:

  1. Phán đoán xu hướng chính xác bằng OBV;
  2. Mua kim tự tháp để theo dõi xu hướng để kiếm lợi nhuận;
  3. Tạo rủi ro kiểm soát lợi nhuận/giữ lỗ;
  4. Một logic đơn giản và rõ ràng.

Phân tích rủi ro

Những rủi ro chính xuất phát từ hai khía cạnh:

  1. tín hiệu OBV không chính xác dẫn đến cơ hội bị bỏ lỡ hoặc nhập sai;
  2. Quá nhiều mua thêm sẽ làm tăng rủi ro.

Giải pháp:

  1. Tối ưu hóa các thông số OBV để đảm bảo độ chính xác;
  2. Giới hạn hợp lý các giao dịch mua thêm để kiểm soát rủi ro.

Hướng dẫn tối ưu hóa

Các hướng tối ưu hóa chính:

  1. Tối ưu hóa tham số OBV để có độ chính xác cao hơn;
  2. Tối ưu hóa số lượng mua và số lượng bổ sung;
  3. Tối ưu hóa lợi nhuận / dừng lỗ;
  4. Kết hợp các chỉ số khác để tránh sự phụ thuộc duy nhất vào OBV.

Điều này có thể làm cho chiến lược ổn định hơn, có thể kiểm soát và mở rộng.

Kết luận

Nói chung đây là một chiến lược rất thực tế. Nó sử dụng OBV để xác định hướng xu hướng, sau đó kim tự tháp vào xu hướng để kiếm lợi nhuận. Logic đơn giản và rõ ràng để dễ dàng kiểm tra lại. Nó có giá trị ứng dụng và với các thông số, rủi ro và tối ưu hóa quản lý tiền hơn nữa, hiệu suất có thể được cải thiện hơn nữa, đảm bảo nghiên cứu bổ sung.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
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/
// © RafaelZioni

//@version=4

strategy(title = " OBV Pyr", overlay = true, pyramiding=5,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 20, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
 
//
 
filter=true 
src = close


LengthOBV = input(20)

nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume 
c = cum(nv) 
c_tb = c - sma(c,LengthOBV) 

// Conditions

longCond = crossover(c_tb,0)
//shortCond =crossunder(cnv_tb,0)

//

longsignal  = (v1 > v2 or filter == false ) and longCond
//shortsignal = (v1 < v2 or filter == false ) and shortCond 
 
//set take profit
 
ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick
 
//set take profit
 
LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick
 
 
////Order Placing
//
strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)
//
strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)
//
strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)
//
strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)
//
strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)
//
strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)
//
strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)
//
//
//
if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)
    


Thêm nữa