Strategi grid, strategi Martingale, yang lebih memilih fluktuasi pasar, memiliki kelemahan mereka sendiri, dan mereka telah diuji untuk beberapa waktu di pasar kontrak ETH.FMZ.COMsatu hal tentang strategi semacam ini sangat setuju dengan seorang teman, yaitu, seperti untuk kontrak, pergi panjang memiliki risiko yang lebih rendah daripada pergi pendek di pasar mata uang digital. atau untuk menjadi sederhana, yang terburuk adalah menurun ke nol, tetapi meningkat adalah tak terbatas.
Jadi, apakah Martingale, Grid dan strategi lain hanya akan panjang, tidak akan pendek, dan menyebarkan risiko memancing dasar dalam jangkauan panjang akan lebih baik daripada posisi bilateral? ide ini terdengar sangat bagus, tetapi tidak ada yang tahu apakah itu dapat dipraktekkan. tapi, setidaknya, kita dapat backtest dengan mudah. jadi kita memiliki hari ini
Kode untuk mengimplementasikan ide ini sangat sederhana, berkat fleksibilitas platform, enkapsulasi antarmuka, sistem backtesting yang kuat dan sebagainya.
Ide desain strategi ini sangat sederhana. Letakkan pesanan beli ke bawah pada interval sesuai dengan harga awal di awal logika dan jika harga terus menurun, kita terus menempatkan pesanan beli, dan terus pergi memancing bawah. Kemudian kita menempatkan pesanan posisi penutupan berdasarkan harga posisi meningkatkan margin keuntungan tertentu, dan menunggu posisi ditutup. Jika posisi ditutup, logika di atas akan diulang dengan harga saat ini sebagai harga awal. Strategi tidak akan short untuk mempertahankan posisi, tetapi hanya long.
Kode sumber strategi:
function cancelAll() {
while (true) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
break
}
for (var i = 0 ; i < orders.length ; i++) {
exchange.CancelOrder(orders[i].Id, orders[i])
Sleep(interval)
}
}
}
function getLong(arr, kind) {
var ret = null
for (var i = 0 ; i < arr.length ; i++) {
if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) {
ret = arr[i]
}
}
return ret
}
function pendingBidOrders(firstPrice) {
var index = 0
var amount = baseAmount
while (true) {
var pos = _C(exchange.GetPosition)
var price = firstPrice - index * baseSpacing
amount *= ratio
index++
exchange.SetDirection("buy")
exchange.Buy(price, amount)
if (pos.length != 0) {
var longPos = getLong(pos, "pos")
if (longPos) {
exchange.SetDirection("closebuy")
exchange.Sell(longPos.Price + profitTarget, longPos.Amount)
}
}
while (true) {
Sleep(interval)
if (!getLong(_C(exchange.GetOrders), "orders")) {
cancelAll()
break
}
if (!getLong(_C(exchange.GetPosition), "pos")) {
cancelAll()
return
}
}
}
}
function main() {
exchange.SetContractType(symbol)
while (true) {
pendingBidOrders(_C(exchange.GetTicker).Last)
}
}
Desain parameter juga sangat sederhana:
Dengan 6 parameter ini saja.
Atur rentang waktu backtesting secara acak:
Uji balik:
Ini terlihat seperti strategi grid, strategi Martingale sangat banyak ~. Siswa yang pemula biasanya takut dengan strategi dengan kode panjang, yang mudah dicegah. Strategi singkat dan ringkas untuk memulai lebih mudah dan lebih tepat untuk memahami ide-ide strategi dan mempelajari desain logis.
Kode strategi hanya untuk tujuan studi dan penelitian.