[TOC] Pada tahun 2020, saya menulis sebuah artikel tentang strategi frekuensi tinggi, dan saya pikir itu akan membantu Anda untuk meminimalisir frekuensi tinggi.https://www.fmz.com/digest-topic/6228◎ Meskipun mendapat banyak perhatian, tulisan ini tidak mendalam. ◎ Waktu berlalu lebih dari dua tahun, dan pasar juga berubah. ◎ Setelah artikel itu diterbitkan, strategi frekuensi tinggi saya menghasilkan uang yang stabil untuk waktu yang lama, tetapi keuntungan yang lambat menurun secara bertahap, bahkan pernah dihentikan. ◎ Beberapa bulan terakhir, saya telah berusaha untuk mengubahnya, dan saat ini saya dapat menghasilkan sedikit uang. ◎ Artikel ini akan memberikan gambaran yang lebih rinci tentang ide-ide strategi frekuensi tinggi saya dan beberapa kode yang disederhanakan, yang berfungsi sebagai penghilang kerucut.
Akun yang dibayarkan kembali, contohnya, saat ini maker membayar kembali 5 dari 100.000 jika volume transaksi harian adalah 100 juta U, komisi akan 5000 U. Tentu saja taker masih berdasarkan tarif VIP, jadi jika strategi tidak perlu membayar, tingkat VIP tidak banyak mempengaruhi strategi frekuensi tinggi. Pertukaran umum tingkat yang berbeda dan tingkat komisi yang berbeda, perlu untuk mempertahankan transaksi yang lebih tinggi.
Kecepatan. Kebijakan frekuensi tinggi disebut frekuensi tinggi karena kecepatan sangat cepat. Bergabung dengan server colo untuk mendapatkan keterlambatan minimum dan koneksi paling stabil juga menjadi salah satu persyaratan untuk inner volume.
Pasar yang tepat. Perdagangan frekuensi tinggi dikenal sebagai mutiara perdagangan kuantitatif. Saya percaya bahwa banyak pedagang terprogram telah mencoba, tetapi sebagian besar orang harus berhenti karena tidak menghasilkan uang dan tidak menemukan arah yang lebih baik. Alasan utama adalah karena menemukan pasar perdagangan yang salah.
Berhadapan dengan persaingan. Pasar mana pun adalah pasar yang berubah secara dinamis, tidak ada strategi perdagangan yang dapat dilakukan secara permanen, perdagangan frekuensi tinggi lebih jelas, memasuki pasar ini secara langsung melawan sekelompok pedagang paling cerdas dan paling rajin. Di pasar nol dan berjudi, Anda menghasilkan lebih banyak daripada yang dibayar orang lain. Semakin lambat masuk, semakin tinggi kesulitan, yang sudah ada di pasar harus terus meningkat, dan dapat dihilangkan kapan saja.
Strategi frekuensi tinggi dibagi menjadi beberapa
Strategi saya adalah kombinasi dari tren dan pedagang, menilai tren terlebih dahulu, lalu memasang order, langsung memasang order setelah transaksi selesai, tidak memegang posisi stok, berikut ini adalah kode strategi kombinasi.
Kode di bawah ini adalah arsitektur yang didasarkan pada kontrak perpetual binary, yang sebagian besar berlangganan websocket dalam-deep order flowtrades pasar, dan informasi posisi. Karena pasar dan informasi akun adalah langganan yang terpisah, perlu terus-menerus menggunakan read ((-1) untuk menentukan apakah mendapatkan informasi terbaru, di sini digunakan EventLoop ((1000), menghindari siklus mati langsung, mengurangi beban sistem.
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)
}
}
Seperti yang telah saya sebutkan sebelumnya, strategi frekuensi tinggi saya membutuhkan penilaian tren dan kemudian melakukan penjualan. Penghakiman tren jangka pendek terutama didasarkan pada data transaksi per transaksi, yaitu aggTrade dalam langganan, yang berisi arah transaksi, harga, jumlah, waktu transaksi, dll. Menjual adalah referensi utama kedalaman dan volume transaksi. Di bawah ini akan dijelaskan secara rinci indikator yang perlu diperhatikan, sebagian besar indikator dibagi menjadi dua kelompok pembelian dan penjualan, dan semuanya dalam statistik dinamis jendela waktu tertentu, jendela waktu strategi saya dalam 10 detik.
//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 terbaru lebih besar dari harga jual rata-rata, harga beli terbaru lebih besar dari harga beli rata-rata, dan nilai pembelian interval tetap lebih besar dari nilai jual, maka penilaian bullish jangka pendek.
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, iterasi kedalaman ke jumlah yang dibutuhkan, di sini asumsikan transaksi pembayaran 10 sen dapat dilakukan dalam 1 s, tanpa mempertimbangkan hal-hal baru yang diikat, harga jual set untuk posisi pembelian 10 sen yang terkena dampak; berapa besar jendela waktu yang spesifik perlu diatur sendiri.
let buy_amount = Ratio * avg_sell_amount / avg_sell_time
let sell_amount = Ratio * avg_buy_amount / avg_buy_time
Ratio mewakili proporsi yang tetap, yaitu jumlah yang dibeli adalah proporsi yang tetap dari jumlah pesanan yang baru saja dijual. Strategi ini dapat menyesuaikan diri dengan ukuran pesanan berdasarkan aktivitas pembelian saat ini.
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 antaranya, avg_diff adalah perbedaan rata-rata transaksi, hanya saat harga jual beli pesanan saat ini lebih besar dari beberapa kali lipat nilai ini dan hanya akan ditukarkan pada saat yang lebih baik, jika memegang pesanan kosong, saat ini juga akan dipadatkan, menghindari invoice jangka panjang.
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()]})
*/
mztcoinTanyakan kepada Grasshopper, apa logika penjualan? Anda harus langsung menjual setelah transaksi, tidak memiliki gudang stok, berarti Anda harus mendaftar dalam siklus for yang sama, berapa harga yang harus ditagih, tidak ada transaksi?
mztcoinDewa Rumput
DANGOUGrasshopper
77924998Apa saja server AWS yang digunakan Grasshopper?
xukittyKekerasan
BtwxiaokGrasshopper membuat program frekuensi tinggi berbayar
Hati saya masihApakah strategi ini bisa digunakan untuk membuat salinan?
Pengarang: TradeManCall Grasshopper, berharap lebih banyak mengajar, belajar untuk masuk dalam perdagangan frekuensi tinggi
♪ Sebuah ombak di atas angin. ♪Kekerasan
FmzeroDia adalah dewa rumput!
Ukuran okKekerasan
Rumput"Saya tidak tahu apa yang terjadi di sana, tapi saya tidak tahu apa yang terjadi di sana.