
Gần đây, tôi vô tình phát hiện ra rằng thị trường của STORJ, một đồng tiền trên Binance, rất kỳ lạ. Khối lượng giao dịch rất lớn và tần suất giao dịch rất nhanh. Đường K một phút cụ thể như sau. Bạn có thể thấy rằng khối lượng giao dịch mỗi phút khá ổn định và có thể thấy một bóng dưới dài trên đường phút.
Bằng cách quan sát đường K-line 1 giây của Binance, chúng tôi đã tìm ra manh mối. Ai đó sẽ bán 10.000 đến 20.000 STORJ cứ sau 5-7 giây, bất kể giá cả, và trực tiếp đâm vào một lỗ nhỏ trên đường K-line. Nó sẽ phục hồi bên trong. Hoạt động này rõ ràng là do một con robot được Iceberg ủy quyền thực hiện. Hoạt động bán này kéo dài trong một thời gian rất dài và tổng số tiền ước tính lên tới hàng chục triệu đô la. Trong nhiều trường hợp, sự trượt giá gây ra lên tới 1⁄1000, điều đó có nghĩa là người thực hiện chiến lược này đã mất hàng chục nghìn đô la chỉ do sự trượt giá của giao dịch. Đô la. Tuy nhiên, các hoạt động cơ học và giao dịch chủ động như vậy tạo ra cơ hội rõ ràng cho việc tạo lập thị trường và đầu cơ.

Chỉ cần sửa đổi chiến lược tần số cao ban đầu, chỉ mất vài phút để tạo ra con robot này, chuyên khai thác việc bán các đơn hàng tảng băng trôi một cách vô thức.
Vì thị trường sẽ có lệnh bán sau mỗi vài giây nên chúng ta chỉ cần tìm độ sâu 10.000 trong sổ lệnh mua và đặt lệnh trước. Theo cách này, khi tảng băng này được bán, có khả năng cao là robot tạo lập thị trường sẽ có thể nhận được nó. Vào thời điểm này, giao dịch rất sôi động và giá giảm ngay lập tức cũng kích hoạt một số lệnh mua. nguyên tắc tương tự áp dụng cho việc đặt lệnh bán và bán chúng theo đó. Lặp lại thao tác. Tần suất giao dịch rất cao, mặc dù tỷ lệ lợi nhuận mỗi lần không lớn nhưng tổng lợi nhuận vẫn rất đáng kể. Tất nhiên, tiền đề của mọi thứ là phải có một tài khoản có phí giao dịch thấp. Nếu phí giao dịch mua và bán là 0,1% thì không gian này không đủ để trả phí giao dịch.
Hiệu suất chiến lược như sau. Lúc đầu, lợi nhuận không được in. Tôi đã thay đổi nó vào chiều nay và in lợi nhuận. Robot bán hàng điên rồ đã thay đổi số lượng thành khoảng 5.000 mỗi lần, vì vậy giai đoạn chênh lệch giá tốt nhất đã qua. Lúc đầu, bạn có thể kiếm được khoảng 100-200U một giờ. Điều quan trọng là nó không có rủi ro và chi phí thấp. Nhìn từ góc độ khác, thực ra có rất nhiều kỹ thuật cho lệnh tảng băng trôi. Nếu bạn biết cách viết chiến lược, bạn có thể viết một chiến lược trên FMZ chỉ trong mười hai phút. Quan sát độ sâu của lệnh mua để xác định quy mô lệnh và giá cả, và quan sát quy mô của lệnh mua đang hoạt động để điều chỉnh quy mô lệnh chờ. Và chiến lược ủy thác tảng băng trôi với các đặc điểm như chiếm lĩnh thị trường có thể dễ dàng tiết kiệm hàng chục nghìn đô la.

Mã chiến lược rất đơn giản, chỉ có 80 dòng. Phù hợp với người mới bắt đầu. Một số thông số như độ chính xác đơn được mã hóa cứng trong chương trình. Bạn có thể tự sửa đổi chúng. Các thông số bắt buộc như trong hình bên dưới. Nên lưu chúng để sử dụng trong tương lai trong trường hợp cặp giao dịch trao đổi có một giao dịch điên rồ khác. Bạn có thể tính lãi cho họ bất cứ lúc nào.

function CancelPendingOrders() {
var orders = _C(exchange.GetOrders)
for (var j = 0; j < orders.length; j++) {
exchange.CancelOrder(orders[j].Id, orders[j])
}
}
function onexit(){
CancelPendingOrders()
}
function GetPrice(Type, Depth) {
var sumAmount = 0
var checkAmount = Type == "Buy" ? CheckBuyAmount : CheckSellAmount
var deep = Type == "Buy" ? Depth.Bids : Depth.Asks
for(var i = 0; i < Math.min(20, deep.length); i++) {
if(Type == "Buy" && deep[i].Price == lastBuyPrice && buyId){
sumAmount += deep[i].Amount - amountBuy //这里要减去自己的挂单
}else if(Type == "Sell" && deep[i].Price == lastSellPrice && sellId){
sumAmount += deep[i].Amount - amountSell
}else{
sumAmount += deep[i].Amount
}
if(sumAmount >= checkAmount){
return deep[i].Price
}
}
return deep[19].Price
}
function OnTick() {
var depth = _C(exchange.GetDepth)
var buyPrice = _N(Math.min(GetPrice("Buy", depth) + 0.0001, depth.Asks[0].Price-0.0001) , 4) //保证在盘口
var sellPrice = _N(Math.max(GetPrice("Sell", depth) - 0.0001, depth.Bids[0].Price+0.0001), 4)
LogStatus('buy_price:'+buyPrice, ' sell price: '+sellPrice)
if ((sellPrice - buyPrice) < DiffPrice) {
buyPrice = 0
}
if(sellPrice != lastSellPrice && sellId){
exchange.CancelOrder(sellId);
sellId = 0
lastSellPrice = 0
}
if(buyPrice != lastBuyPrice && buyId){
exchange.CancelOrder(buyId);
buyId = 0
lastBuyPrice = 0
}
var acc = _C(exchange.GetAccount)
if(account.Stocks+account.FrozenStocks != acc.Stocks+acc.FrozenStocks){
LogProfit((acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance - 2000)
Log('free '+acc.Stocks, ' lock: '+ acc.FrozenStocks, ' total: ' , (acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance)
}
account = acc
amountBuy = _N(Math.min(account.Balance / buyPrice - 0.1, Amount), 0)
amountSell = _N(account.Stocks, 0)
if (sellPrice > 0 && amountSell > 40 && sellId == 0) {
sellId = exchange.Sell(_N(sellPrice,4), amountSell)
lastSellPrice = sellPrice
}
if (buyPrice>0 && amountBuy > 40 && buyId == 0) {
buyId = exchange.Buy(_N(buyPrice,4), amountBuy)
lastBuyPrice = buyPrice
}
Sleep(Interval)
}
var account = {Stocks:0, FrozenStocks:0, Balance:0, FrozenBalance:0}
var buyId = 0
var sellId = 0
var lastBuyPrice = 0
var lastSellPrice = 0
var amountSell = 0
var amountBuy = 0
function main() {
CancelPendingOrders()
while (true) {
OnTick()
}
}