Walaupun terdapat lebih banyak peniaga yang menulis program untuk perdagangan automatik sepenuhnya, kumpulan peniaga yang lebih besar masih peniaga manual. Malah, peniaga subjektif manual juga boleh menulis alat kecil untuk membantu mereka dalam perdagangan subjektif mereka. Sebagai contoh, kadang-kadang anda menemui kedudukan kemasukan yang baik dan merancang untuk menetapkan stop loss tetap dan keuntungan yang menarik pada kedudukan awal. Kemudian tidak menggunakan perkara yang lebih intensif seperti pemantauan pasaran berikutnya, ikuti pelan taruhan stop loss dan mengambil keuntungan yang anda sendiri tetapkan dengan tepat, dan biarkan program melakukan pemantauan pasaran untuk anda. Hentikan kerugian untuk kehilangan, menang keuntungan untuk menang untuk membantu taruhan perdagangan manual.
Strategi untuk merancang keperluan sedemikian dengan menggunakan bahasa Pine adalah sangat mudah. Parameter berikut perlu direka untuk mencapai fungsi mengikut keperluan:
/*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")
Reka bentuk strategi tidak rumit, tetapi ia perlu ditubuhkan sebagai
Perhatikan bahawa stop loss dinyatakan dalam mata (minTick) dan offset juga dinyatakan dalam mata (minTick). offset dari targetOffset trailing stop profit trigger line dinyatakan dari segi jarak harga (contohnya, ditetapkan kepada 30, yang adalah RMB30 untuk jarak). Apabila minTick adalah 1, 30 bermaksud RMB30 untuk jarak.
Strategi komisen ini direka untuk membolehkan bukan sahaja kedudukan asas awal untuk pergi panjang, tetapi juga kedudukan asas awal untuk pergi pendek.
Mari kita menunjukkan pelaksanaan reka bentuk seperti berikut:
1. Apabila strategi berjalan, kedudukan asas akan dibuka dan dimasukkan dengan serta-merta, dan kemudian stop loss dan penjejakan stop profit akan ditetapkan mengikut parameter.
arah ditetapkan menjadi panjang, parameter had ditetapkan kepada 0, iaitu, biarkan strategi masuk dan pergi panjang dengan serta-merta apabila ia berjalan, jumlah ditetapkan kepada 1, iaitu, strategi membuka kedudukan 1 kontrak.
2. tentukan parameter had, tentukan harga kemasukan
Tetapan parameter lain kekal tidak berubah kecuali bahawa harga parameter had yang ditetapkan adalah: 1276
3. parameter had lalai adalah -1, yang tidak beroperasi apa-apa dan menghalang pembukaan secara tidak sengaja kedudukan
Apabila menggunakan strategi bahasa Pine, adalah penting untuk memberi perhatian khusus kepada data minTick. Jumlah tepat harga minTick dalam sistem berkaitan dengan
Parameter
OK, di atas adalah keseluruhan reka bentuk strategi komisen separa automatik ini, walaupun saya juga menggunakannya untuk perdagangan bot sebenar. tetapi alat tersebut juga mesti digunakan mengikut tabiat perdagangan anda sendiri untuk memahami, pengubahsuaian khusus, pengoptimuman boleh dilakukan oleh anda sendiri. di sini kod strategi hanya untuk perkongsian awam, reka bentuk pembelajaran pertukaran dan logik.
Seperti yang kita lihat, bahasa Pine sangat mudah digunakan, dan ia mudah dan mudah dipelajari. kita boleh menggunakan bahasa Pine untuk merancang alat yang kita mahukan dengan cepat, tanpa perlu risau tentang pengaturcaraan yang rumit, dan menggunakan bahasa Pine untuk membuat perdagangan kuantitatif lebih mudah di FMZ Quantitative Trading Platform.