Tài nguyên đang được tải lên... tải...

Các nhà phát minh định lượng các hướng dẫn về ngôn ngữ PINE

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2022-05-30 16:23:43, Cập nhật: 2022-09-28 17:10:21

(Tạm dịch: 2.trail_offsetCác tham số: Sau khi thực hiện các hành động stop-loss tracking stop-loss, vị trí đặt đơn đặt hàng khoảng cách với giá cao nhất (nếu làm nhiều) hoặc giá thấp nhất (nếu làm không). 3trail_pointsCác tham số:trail_priceCác tham số chỉ là các vị trí được chỉ định với số ưu tiên của các vị trí.

Có phải không dễ hiểu, không có vấn đề! Chúng ta sẽ sử dụng một chiến lược để hiểu việc học, thực sự rất đơn giản.

/*backtest
start: 2022-09-23 00:00:00
end: 2022-09-23 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/

strategy("test", overlay = true)

varip a = na
varip highPrice = na
varip isTrade = false 
varip offset = 30

if not barstate.ishistory and not isTrade
    strategy.entry("test 1", strategy.long, 1)
    strategy.exit("exit 1", "test 1", 1, trail_price=close+offset, trail_offset=offset)
    a := close + offset
    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close)
    isTrade := true 

if close > a and not barstate.ishistory
    highPrice := na(highPrice) ? close : highPrice
    highPrice := close > highPrice ? close : highPrice

plot(a, "trail_price 触发线")    
plot(strategy.position_size>0 ? highPrice : na, "当前最高价")
plot(strategy.position_size>0 ? highPrice-syminfo.mintick*offset : na, "移动止损触发线")

img

img

img

Sau khi bắt đầu thực hiện, nhập nhiều đầu vào ngay lập tức, và ngay lập tức nhập vàostrategy.exitĐi ra lệnh (đặc biệt chỉ định các tham số stop-loss), khi các biến động của thị trường tăng giá vượt quá đường dẫn_price, bắt đầu thực hiện logic stop-loss theo dõi, đường dẫn stop-loss (màu xanh) bắt đầu theo sự điều chỉnh động lực của giá cao nhất, vị trí đường xanh là giá của stop-loss để kích hoạt sự ổn định, và cuối cùng khi các biến động của thị trường giảm giá vượt qua đường màu xanh; kết hợp này là đường được vẽ trên biểu đồ không dễ hiểu.

Chúng ta sử dụng tính năng này để tối ưu hóa một chiến lược siêu xu hướng, chúng ta chỉ chỉ cần chỉ định một lệnh vào cho chiến lược.strategy.exitTrong khi đó, một số trang web khác trên mạng xã hội cũng cho biết họ có thể tìm thấy các ứng dụng này.

if not barstate.ishistory and findOrderIdx("open") >= 0 and state == 1
    trail_price := strategy.position_size > 0 ? close + offset : close - offset
    strategy.exit("exit", "open", 1, trail_price=trail_price, trail_offset=offset)
    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close, ",trail_price:", trail_price)
    state := 2 
    tradeBarIndex := bar_index

Có thể bạn có thể sử dụng các mã chiến lược này:

/*backtest
start: 2022-05-01 00:00:00
end: 2022-09-27 00:00:00
period: 1d
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/

varip trail_price = na
varip offset = input(50, "offset")
varip tradeBarIndex = 0
// 0 : idle , 1 current_open , 2 current_close
varip state = 0  

findOrderIdx(idx) =>
    ret = -1 
    if strategy.opentrades == 0 
        ret
    else 
        for i = 0 to strategy.opentrades - 1 
            if strategy.opentrades.entry_id(i) == idx
                ret := i 
                break
        ret

if strategy.position_size == 0 
    trail_price := na 
    state := 0

[superTrendPrice, dir] = ta.supertrend(input(2, "atr系数"), input(20, "atr周期"))

if ((dir[1] < 0 and dir[2] > 0) or (superTrendPrice[1] > superTrendPrice[2])) and state == 0 and tradeBarIndex != bar_index
    strategy.entry("open", strategy.long, 1)
    state := 1
else if ((dir[1] > 0 and dir[2] < 0) or (superTrendPrice[1] < superTrendPrice[2])) and state == 0 and tradeBarIndex != bar_index
    strategy.entry("open", strategy.short, 1)
    state := 1


// 反向信号,全平
if strategy.position_size > 0 and dir[2] < 0 and dir[1] > 0
    strategy.cancel_all()
    strategy.close_all()
    runtime.log("趋势反转,多头全平")
else if strategy.position_size < 0 and dir[2] > 0 and dir[1] < 0
    strategy.cancel_all()
    strategy.close_all()
    runtime.log("趋势反转,空头全平")


if not barstate.ishistory and findOrderIdx("open") >= 0 and state == 1
    trail_price := strategy.position_size > 0 ? close + offset : close - offset
    strategy.exit("exit", "open", 1, trail_price=trail_price, trail_offset=offset)
    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close, ",trail_price:", trail_price)
    state := 2 
    tradeBarIndex := bar_index


plot(superTrendPrice, "superTrendPrice", color=dir>0 ? color.red : color.green, overlay=true)

Thêm nữa