[TOC] Saya menulis artikel pada tahun 2020 mengenai strategi frekuensi tinggi, tetapi saya tidak dapat menerangkan bagaimana ia boleh digunakan.https://www.fmz.com/digest-topic/6228Walaupun mendapat banyak perhatian, tulisan ini tidak mendalam. Masa telah berlalu lebih dari dua tahun, dan pasaran juga berubah. Selepas artikel itu diterbitkan, strategi frekuensi tinggi saya telah menghasilkan wang yang stabil untuk masa yang lama, tetapi keuntungan perlahan menurun, atau bahkan dihentikan. Beberapa bulan kebelakangan ini, saya telah berusaha untuk mengubahnya, dan kini dapat menghasilkan sedikit wang.
Sebagai contoh, sekarang, jika jumlah dagangan setiap hari adalah 100 juta U, bayaran balik adalah 5000 U. Sudah tentu, pemegang masih berdasarkan kadar VIP, jadi jika strategi tidak perlu membayar, peringkat VIP tidak banyak mempengaruhi strategi frekuensi tinggi. Pertukaran umum mempunyai peringkat yang berbeza dan kadar bayaran balik yang berbeza, yang memerlukan mengekalkan jumlah dagangan yang tinggi. Sebelum ini, ketika beberapa pasaran mata wang berfluktuasi besar, bayaran balik juga menguntungkan, dengan peningkatan jumlah dalaman, bayaran balik menyumbang peratusan keuntungan yang lebih besar, bahkan hanya bergantung pada bayaran balik, pedagang frekuensi tinggi mengejar kadar tertinggi.
Kelajuan. Kebijakan frekuensi tinggi dipanggil frekuensi tinggi kerana ia sangat pantas. Mengikut pelayan colo pertukaran, mendapatkan kelewatan minimum dan sambungan yang paling stabil juga menjadi salah satu syarat dalaman. Kebijakan ini juga memerlukan masa dalaman yang minimum, dan artikel ini akan menerangkan kerangka websocket yang saya gunakan, yang dijalankan secara serentak.
Pasaran yang sesuai. Perdagangan frekuensi tinggi dikenali sebagai mutiara perdagangan kuantitatif. Saya percaya bahawa banyak peniaga berprogram telah mencuba, tetapi kebanyakan orang harus berhenti kerana tidak menghasilkan wang dan tidak dapat mencari arah untuk memperbaiki, yang utama adalah kerana mencari pasaran perdagangan yang salah. Tahap awal strategi harus mencari pasaran yang agak mudah untuk menghasilkan wang untuk berdagang, sehingga menguntungkan dan mempunyai maklum balas yang lebih baik, yang menggalakkan kemajuan strategi.
Menghadapi persaingan. Pasaran mana-mana dagangan adalah berubah secara dinamik, tidak ada strategi dagangan yang boleh dilakukan sekali dan selamanya, dagangan frekuensi tinggi lebih jelas, memasuki pasaran ini secara langsung dengan sekumpulan pedagang yang paling pintar dan paling rajin. Dalam pasaran yang berjudi dan berjudi, lebih banyak yang anda hasilkan sama dengan yang orang lain hasilkan.
Strategi frekuensi tinggi berlainan
Strategi saya adalah gabungan trend dan peniaga, menilai trend terlebih dahulu, kemudian memasang pesanan, menjual pesanan dengan segera selepas transaksi, tidak memegang stok, berikut adalah perbandingan kod strategi.
Kod di bawah ini adalah struktur berdasarkan kontrak kekal Bitcoin, yang mengumpul maklumat mengenai pasaran dan kedudukan kedudukan. Oleh kerana pasaran dan maklumat akaun adalah langganan berasingan, anda perlu terus menggunakan read ((-1) untuk menentukan sama ada anda mendapat maklumat terkini, di sini menggunakan EventLoop ((1000), mengelakkan hidupan mati secara langsung, mengurangkan beban sistem. EventLoop ((1000 akan menghalang ke WS atau menghantar tugas bersama-sama dengan masa lebih daripada 1000ms.
var datastream = null
var tickerstream = null
var update_listenKey_time = 0
function ConncetWss(){
if (Date.now() - update_listenKey_time < 50*60*1000) {
return
}
if(datastream || tickerstream){
datastream.close()
tickerstream.close()
}
//需要APIKEY
let req = HttpQuery(Base+'/fapi/v1/listenKey', {method: 'POST',data: ''}, null, 'X-MBX-APIKEY:' + APIKEY)
let listenKey = JSON.parse(req).listenKey
datastream = Dial("wss://fstream.binance.com/ws/" + listenKey + '|reconnect=true', 60)
//Symbols是设定的交易对
let trade_symbols_string = Symbols.toLowerCase().split(',')
let wss_url = "wss://fstream.binance.com/stream?streams="+trade_symbols_string.join(Quote.toLowerCase()+"@aggTrade/")+Quote.toLowerCase()+"@aggTrade/"+trade_symbols_string.join(Quote.toLowerCase()+"@depth20@100ms/")+Quote.toLowerCase()+"@depth20@100ms"
tickerstream = Dial(wss_url+"|reconnect=true", 60)
update_listenKey_time = Date.now()
}
function ReadWss(){
let data = datastream.read(-1)
let ticker = tickerstream.read(-1)
while(data){
data = JSON.parse(data)
if (data.e == 'ACCOUNT_UPDATE') {
updateWsPosition(data)
}
if (data.e == 'ORDER_TRADE_UPDATE'){
updateWsOrder(data)
}
data = datastream.read(-1)
}
while(ticker){
ticker = JSON.parse(ticker).data
if(ticker.e == 'aggTrade'){
updateWsTrades(ticker)
}
if(ticker.e == 'depthUpdate'){
updateWsDepth(ticker)
}
ticker = tickerstream.read(-1)
}
makerOrder()
}
function main() {
while(true){
ConncetWss()
ReadWss()
worker()
updateStatus()
EventLoop(1000)
}
}
Strategi frekuensi tinggi saya memerlukan penilaian trend dan kemudian pelaksanaan jualan. Penghakiman mengenai trend jangka pendek adalah berdasarkan data urus niaga secara keseluruhan, iaitu aggTrade dalam langganan, termasuk arah urus niaga, harga, kuantiti, masa urus niaga, dan lain-lain. Penjualan adalah rujukan utama kedalaman dan jumlah urus niaga.
//bull代表短期看涨,bear短期看跌
let bull = last_sell_price > avg_sell_price && last_buy_price > avg_buy_price &&
avg_buy_amount / avg_buy_time > avg_sell_amount / avg_sell_time;
let bear = last_sell_price < avg_sell_price && last_buy_price < avg_buy_price &&
avg_buy_amount / avg_buy_time < avg_sell_amount / avg_sell_time;
Jika harga jual terkini lebih besar daripada harga jualan purata, harga beli terkini lebih besar daripada harga pembelian purata, dan nilai pembelian selang tetap lebih besar daripada nilai jualan, maka keputusan baik atau buruk dalam jangka pendek akan dibuat.
function updatePrice(depth, bid_amount, ask_amount) {
let buy_price = 0
let sell_price = 0
let acc_bid_amount = 0
let acc_ask_amount = 0
for (let i = 0; i < Math.min(depth.asks.length, depth.bids.length); i++) {
acc_bid_amount += parseFloat(depth.bids[i][1])
acc_ask_amount += parseFloat(depth.asks[i][1])
if (acc_bid_amount > bid_amount && buy_price == 0) {
buy_price = parseFloat(depth.bids[i][0]) + tick_size
}
if (acc_ask_amount > ask_amount && sell_price == 0) {
sell_price = parseFloat(depth.asks[i][0]) - tick_size
}
if (buy_price > 0 && sell_price > 0) {
break
}
}
return [buy_price, sell_price]
}
Di sini masih mengambil pemikiran lama, mengulangi kedalaman kepada jumlah yang diperlukan, di sini mengandaikan bahawa pembayaran 10 sen boleh dilakukan dalam 1s, tanpa mengambil kira pesanan baru, harga pesanan dijual ditetapkan sebagai harga pembelian 10 sen.
let buy_amount = Ratio * avg_sell_amount / avg_sell_time
let sell_amount = Ratio * avg_buy_amount / avg_buy_time
Ratio mewakili peratusan tetap, yang mewakili jumlah pembelian sebagai peratusan tetap jumlah pesanan yang dijual baru-baru ini. Strategi ini dapat menyesuaikan diri dengan saiz pesanan berdasarkan aktiviti pembelian dan penjualan semasa.
if(bull && (sell_price-buy_price) > N * avg_diff) {
trade('buy', buy_price, buy_amount)
}else if(position.amount < 0){
trade('buy', buy_price, -position.amount)
}
if(bear && (sell_price-buy_price) > N * avg_diff) {
trade('sell', sell_price, sell_amount)
}else if(position.amount > 0){
trade('sell', sell_price, position.amount)
}
Di mana avg_diff adalah perbezaan purata, dan hanya akan dibayar apabila harga pembelian dan penjualan pesanan semasa lebih besar daripada nilai kelipatan tertentu, dan hanya akan dibayar pada masa yang baik, jika memegang pesanan kosong, ini juga akan dipadamkan, mengelakkan invois jangka panjang. Perintah bawah boleh memuat turun pesanan only-maker, memastikan transaksi pesanan.
var tasks = []
var jobs = []
function worker(){
let new_jobs = []
for(let i=0; i<tasks.length; i++){
let task = tasks[i]
jobs.push(exchange.Go.apply(this, task.param))
}
_.each(jobs, function(t){
let ret = t.wait(-1)
if(ret === undefined){
new_jobs.push(t)//未返回的任务下次继续等待
}
})
jobs = new_jobs
tasks = []
}
/*
需要的任务参数写在param里
tasks.push({'type':'order','param': ["IO", "api", "POST","/fapi/v1/order",
"symbol="+symbol+Quote+"&side="+side+"&type=LIMIT&timeInForce=GTX&quantity="+
amount+"&price="+price+"&newClientOrderId=" + UUID() +"×tamp="+Date.now()]})
*/
mztcoinSoalan Grasshopper, apakah logik jualannya? jual segera selepas berdagang, tidak menyimpan simpanan simpanan, yang bermaksud di dalam kitaran for yang sama, berapa harga, tidak berdagang?
mztcoinTuhan Rumput
DANGOUGrasshopper 1
77924998Server AWS yang mana yang digunakan oleh Grasshopper?
xukittyBerani Berani
bwxiaokGrasshopper menyediakan kursus frekuensi tinggi berbayar
Hati saya masihAdakah strategi ini berguna jika anda boleh meniru?
Penulis: TradeManCall Grasshopper, mahu lebih banyak mengajar, belajar untuk masuk dalam perdagangan frekuensi tinggi
~ Sebuah ombak di atas angin ~Keganasan
FmzeroTuhan Rumput!
Ukuran okKeganasan
RumputSaya tidak tahu apa yang akan berlaku.