Bab 3.1 menunjukkan sebuah template perdagangan spot, yang sangat menyederhanakan kesulitan menulis strategi spot. Namun, proses perdagangan futures sangat berbeda dari spot, sehingga fungsi perdagangan futures yang terintegrasi berdasarkan template spot, sekarang terbuka.
"Sudah terbuka di Strategy Square:
Di sisi real-time, cryptocurrency ini sama dengan cryptocurrency real-time sebelumnya.
Parameter:
Strategi ini membawa kode uji coba:
function main() {
if (exchange.GetName() === 'Futures_OKCoin') {
var info = exchange.SetContractType("this_week");
Log("info 返回值:", info);
Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
var depth = exchange.GetDepth();
var p = $.NewPositionManager();
p.OpenShort("this_week", 10, depth.Bids[0].Price - 2);
Log(exchange.GetPosition());
Sleep(500 * 1000);
depth = exchange.GetDepth();
var ret = p.Cover("this_week", depth.Bids[0].Price + 2, 5);
Log("cover ret:", ret);
//LogProfit(p.Profit());
Log(exchange.GetPosition());
Log("-----------------------------测试分割线----------------------------------------");
var depth = exchange.GetDepth();
p.OpenLong("this_week", 20, depth.Bids[0].Price + 2);
Log(exchange.GetPosition());
Sleep(500 * 1000);
depth = exchange.GetDepth();
var ret = p.Cover("this_week", depth.Bids[0].Price - 2, 10, PD_LONG);
Log("cover ret:", ret);
Log(exchange.GetPosition());
Log("-----------------------------测试分割线----------------------------------------");
var ret = p.Cover("this_week", depth.Bids[0].Price - 3, 10, PD_LONG);
Log("cover ret:", ret);
var ret = p.Cover("this_week", depth.Bids[0].Price + 3, 5, PD_SHORT);
Log("cover ret:", ret);
Log(exchange.GetPosition());
} else if (exchange.GetName() === 'Futures_BitVC') {
var info = exchange.SetContractType("week");
Log("info 返回值:", info);
Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
var depth = exchange.GetDepth();
var p = $.NewPositionManager();
p.OpenLong("week", 500, depth.Bids[0].Price + 2);
Log(exchange.GetPosition());
Sleep(500 * 1000);
depth = exchange.GetDepth();
var ret = p.Cover("week", depth.Bids[0].Price - 2, 500);
Log("cover ret:", ret);
Log(exchange.GetPosition());
Log("-----------------------------测试分割线----------------------------------------");
var info = exchange.SetContractType("week");
Log("info 返回值:", info);
Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
var depth = exchange.GetDepth();
p.OpenShort("week", 600, depth.Bids[0].Price - 2);
Log(exchange.GetPosition());
Sleep(500 * 1000);
depth = exchange.GetDepth();
var ret = p.Cover("week", depth.Bids[0].Price - 2, 500, PD_SHORT);
Log("cover ret:", ret);
Log(exchange.GetPosition());
Log("-----------------------------测试分割线----------------------------------------");
var ret = p.Cover("week", depth.Bids[0].Price + 3, 100, PD_SHORT);
Log("cover ret:", ret);
//p.Cover("week", depth.Asks[0].Price - 3, 300, PD_LONG);
Log(exchange.GetPosition());
} else if(exchange.GetName() === 'huobi' || exchange.GetName() === 'OKCoin'){
Log($.GetAccount());
Log($.Buy(0.5));
Log($.Sell(0.5));
exchange.Buy(1000, 3);
$.CancelPendingOrders(exchanges[0]);
Log($.Cross(30, 7));
Log($.Cross([1,2,3,2.8,3.5], [3,1.9,2,5,0.6]));
}
}
Penggunaan:
Strategi pengujian:
function main(){
var p = $.NewPositionManager();
var i = 0;
exchanges[0].SetContractType("this_week");
var isFirst = true;
var ret = null;
while(true){
var depth = _C(exchanges[0].GetDepth);
var positions = _C(exchanges[0].GetPosition);
var len = positions.length;
if(isFirst === true && i % 3 === 0 && len === 0){
ret = p.OpenLong("this_week", 1 + (i % 3) + (i % 2), depth.Asks[0].Price);
isFirst = false;
}else if(isFirst === false){
ret = p.OpenShort("this_week", 1 + (i % 3) + (i % 2), depth.Bids[0].Price);
isFirst = true;
}else{
for(var j = 0 ; j < len; j++){
if(positions[j].Type === PD_LONG){
ret = p.Cover("this_week", depth.Bids[0].Price - 2, positions[j].Amount, PD_LONG);
}else if(positions[j].Type === PD_SHORT){
ret = p.Cover("this_week", depth.Asks[0].Price + 2, positions[j].Amount, PD_SHORT);
}
Log("ret:", ret);
}
}
Log("ret", ret, "---------------------#FF0000");
i++;
Sleep(1000 * 60 * 15);
}
}
Jika ada pertanyaan, bug, silakan hubungi penulis, terima kasih banyak!
YundiMengapa saya tidak dapat menemukan JS's cryptocurrency trading library, tidak ada strategi di dalamnya.
Aku bukan paman yang buruk.Berapa harga untuk $.Buy ((0.5)?
OutlawjkApakah versi python juga mendukung OKEX futures?
sederhana-chunJika Anda ingin tahu apa yang dimaksud dengan ret, apakah itu singkatan dari kata-kata dalam bahasa Inggris?
sederhana-chunDi mana versi PY?
yhfggApakah ada versi Python yang tersedia?
Penemu Kuantitas - Mimpi KecilPerpustakaan perdagangan mata uang kripto berjangka adalah tidak resmi, karena interfaces pemegang saham sering mengalami keterlambatan, yang dapat menyebabkan order berulang, sehingga dibatalkan publik.
YundiHalo, ini adalah futures komoditas dan komoditas, saya bertanya di grup, JS digital currency futures library hilang karena ada bug.
Penemu Kuantitas - Mimpi Kecil/upload/asset/16c4dcc69723e302152c.png Di tempat ini
Penemu Kuantitas - Mimpi KecilSaat itu, harga saingan, ditambah sedikit penurunan harga.
Penemu Kuantitas - Mimpi KecilJS saya sebenarnya juga ditulis berdasarkan struktur futures komoditas, jadi saya bisa merujuknya.
OutlawjkApakah Anda akan lebih memilih untuk menggunakan js, dengan referensi template Python untuk OKEX futures?
Penemu Kuantitas - Mimpi KecilPython tidak memiliki fitur berjangka Tidak ada transplantasi >_<
Penemu Kuantitas - Mimpi Kecilreturn berarti nilai yang dikembalikan, umumnya digunakan untuk menyimpan sementara suatu fungsi yang mengembalikan nilai.
sederhana-chunTerima kasih.
Penemu Kuantitas - Mimpi Kecilhttps://www.botvs.com/strategy/21104, mungkin sedikit berbeda dari versi JS, yang dipindahkan dari JS.
Penemu Kuantitas - Mimpi KecilAda versi python, tetapi lebih jarang digunakan.