Meskipun ada semakin banyak pedagang yang menulis program untuk perdagangan sepenuhnya otomatis, kelompok pedagang yang lebih besar masih pedagang manual. Bahkan, pedagang subjektif manual juga dapat menulis alat kecil untuk membantu mereka dalam perdagangan subjektif mereka. Misalnya, kadang-kadang Anda menemukan posisi masuk yang baik dan berencana untuk mengatur stop loss tetap dan trailing profit pada posisi awal. Kemudian buanglah hal-hal yang lebih padat energi seperti pemantauan pasar berikutnya, ikuti rencana stop loss dan take profit Anda sendiri dengan tepat, dan biarkan program melakukan pemantauan pasar untuk Anda. Stop loss untuk kehilangan taruhan, trailing profit untuk menang untuk membantu perdagangan manual.
Strategi untuk merancang persyaratan tersebut dengan menggunakan bahasa Pine sangat sederhana. Parameter berikut perlu dirancang untuk mencapai fungsi sesuai dengan persyaratan:
/*backtest
start: 2022-09-24 00:00:00
end: 2022-09-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
args: [["v_input_1",20],["v_input_2",0],["v_input_4",50],["v_input_5",20],["RunMode",1,358374],["ZPrecision",0,358374],["XPrecision",3,358374]]
*/
strategy("Tracking loss and profit stopping entrustment", overlay = true)
varip targetPrice = na
varip high_lowPrice = na
varip isTrade = false
varip isAlert = false
varip isAlertMinTick = false
varip isAlertFinished = false
varip offset = input(30, "offset", "Tracking stop loss and stop profit offset")
varip limit = input(-1, "limit", "Initial opening price: - 1 means no opening, 0 means immediate opening, and other specific values are price limits")
varip amount = input(1, "amount", "amount of opening positions")
varip loss = input(30, "loss", "stop loss")
varip targetOffset = input(30, "targetOffset", "trigger tracking profit and loss stop offset")
varip minTick = input(1, "minTick", "the minimum unit of price fluctuation")
tradeType = input.string("long", "direction", tooltip="order direction, long: go long, short: go short", options=["long", "short"])
if not barstate.ishistory and not isAlertMinTick
runtime.log("check whether syminfo.mintick is correct! syminfo.mintick:", syminfo.mintick, "#FF0000")
if syminfo.mintick < minTick
runtime.error("system syminfo.mintick < minTick parameter", "#FF0000")
isAlertMinTick := true
if not barstate.ishistory and limit == -1 and not isAlert
runtime.log("No open price is set, current limit is -1 (to prevent false openings, initial default limit is -1), openings are prohibited", "#FF0000")
isAlert := true
if isTrade and strategy.position_size == 0 and not isAlertFinished
runtime.log("All order processes executed, position is 0", "#FF0000")
isAlertFinished := true
if not barstate.ishistory and not isTrade and limit != -1
if limit == 0
strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount)
else if limit > 0
strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount, limit=limit)
if tradeType == "long"
targetPrice := (limit == 0 ? close : limit) + targetOffset
else
targetPrice := (limit == 0 ? close : limit) - targetOffset
strategy.exit("exit", "open", amount, loss=loss, trail_price=targetPrice, trail_offset=offset)
runtime.log("The price per point is:", syminfo.mintick, ", current close:", close)
isTrade := true
if ((close > targetPrice and strategy.position_size > 0) or (close < targetPrice and strategy.position_size < 0)) and not barstate.ishistory
high_lowPrice := na(high_lowPrice) ? close : high_lowPrice
if strategy.position_size > 0
high_lowPrice := close > high_lowPrice ? close : high_lowPrice
else
high_lowPrice := close < high_lowPrice ? close : high_lowPrice
plot(targetPrice, "trail_price trigger line")
plot(strategy.position_size!=0 ? high_lowPrice : na, "current highest/lowest price")
plot(strategy.position_size!=0 ? (strategy.position_size > 0 ? high_lowPrice-syminfo.mintick*offset : high_lowPrice+syminfo.mintick*offset) : na, "moving stop loss trigger line")
Desain strategi tidak rumit, tetapi perlu diatur sebagai
Perhatikan bahwa stop loss dinyatakan dalam poin (minTick) dan offset juga dinyatakan dalam poin (minTick). offset dari targetOffset trailing stop profit trigger line dinyatakan dalam hal jarak harga (misalnya, ditetapkan menjadi 30, yang adalah RMB30 untuk jarak).
Strategi komisi ini dirancang untuk memungkinkan tidak hanya posisi dasar awal untuk pergi panjang, tetapi juga posisi dasar awal untuk pergi pendek.
Mari kita menunjukkan implementasi desain sebagai berikut:
1. Ketika strategi berjalan, posisi dasar akan dibuka dan dimasukkan segera, dan kemudian stop loss dan tracking stop profit akan ditetapkan sesuai dengan parameter.
arah ditetapkan menjadi panjang, parameter batas ditetapkan menjadi 0, yaitu, biarkan strategi masuk dan pergi panjang segera ketika berjalan, jumlah ditetapkan menjadi 1, yaitu, strategi membuka posisi 1 kontrak.
2. tentukan parameter batas, tentukan harga masuk
Pengaturan parameter lainnya tetap tidak berubah kecuali bahwa harga parameter batas yang ditentukan adalah: 1276
Parameter batas default adalah -1, yang tidak mengoperasikan apa pun dan mencegah pembukaan posisi secara tidak sengaja
Ketika menggunakan strategi bahasa Pine, penting untuk memperhatikan data minTick. Jumlah tepat harga minTick dalam sistem terkait dengan
Parameter
OK, di atas adalah seluruh desain strategi komisi semi otomatis ini, meskipun saya juga menggunakannya untuk perdagangan bot nyata. tetapi alat tersebut juga harus digunakan sesuai dengan kebiasaan trading Anda sendiri untuk memahami, modifikasi spesifik, optimasi dapat dilakukan sendiri. di sini kode strategi hanya untuk berbagi publik, desain pembelajaran pertukaran dan logika.
Seperti yang dapat kita lihat, bahasa Pine sangat mudah digunakan, dan mudah dan mudah dipelajari. kita dapat menggunakan bahasa Pine untuk merancang alat yang kita inginkan dengan cepat, tanpa perlu khawatir tentang pemrograman yang rumit, dan menggunakan bahasa Pine untuk membuat perdagangan kuantitatif lebih mudah di FMZ Quantitative Trading Platform.