
हाल ही में, जब मैं बाजार को देख रहा था, तो मैंने गलती से पाया कि बिनेंस पर एक सिक्का STORJ का बाजार बहुत अजीब था। ट्रेडिंग वॉल्यूम बहुत बड़ा था और ट्रेडिंग आवृत्ति बहुत तेज थी। विशिष्ट एक मिनट की K-लाइन इस प्रकार है। आप देख सकते हैं कि प्रति मिनट ट्रेडिंग वॉल्यूम काफी सुसंगत है, और मिनट लाइन पर एक लंबी निचली छाया देखी जा सकती है।
बिनेंस की 1-सेकंड की K-लाइन को देखकर, हमें एक सुराग मिला। कोई व्यक्ति हर 5-7 सेकंड में 10,000 से 20,000 STORJ बेचेगा, चाहे कीमत कुछ भी हो, और सीधे K-लाइन में एक छोटा सा छेद करेगा। यह अंदर से ठीक हो जाएगा। यह ऑपरेशन स्पष्टतः आइसबर्ग द्वारा नियुक्त रोबोट द्वारा किया गया था। यह बिक्री अभियान बहुत लंबे समय तक चला, और कुल राशि का अनुमान करोड़ों डॉलर था। कई मामलों में, स्लिपेज 1⁄1000 तक पहुंच गया, जिसका मतलब है कि इस रणनीति के निष्पादक ने हजारों डॉलर खो दिए लेन-देन में चूक के कारण। डॉलर। हालांकि, इस तरह के यांत्रिक परिचालन और सक्रिय लेनदेन, मार्केट मेकिंग और स्केलिंग के लिए स्पष्ट अवसर पैदा करते हैं।

मूल स्पॉट उच्च आवृत्ति रणनीति को संशोधित करके, इस रोबोट को बनाने में केवल कुछ ही मिनट लगे, जो विशेष रूप से आइसबर्ग ऑर्डर की बिना सोचे-समझे बिक्री का फायदा उठाता है।
चूंकि हर कुछ सेकंड में बाजार में बिकवाली होगी, इसलिए हमें केवल खरीद ऑर्डर बुक में 10,000 की गहराई ढूंढनी होगी और ऑर्डर को सामने रखना होगा। इस तरह, जब यह हिमखंड बेचा जाता है, तो इस बात की बहुत अधिक संभावना होती है कि बाजार बनाने वाला रोबोट इसे प्राप्त कर सकेगा। इस समय, व्यापार बहुत सक्रिय है, और तात्कालिक मूल्य गिरावट भी कुछ खरीद आदेशों को ट्रिगर करती है। यही सिद्धांत बिक्री आदेश देने और उसके अनुसार उन्हें बेचने पर भी लागू होता है। इस प्रक्रिया को दोहराएँ। लेन-देन की आवृत्ति बहुत अधिक है, और भले ही हर बार वापसी की दर बड़ी न हो, फिर भी कुल लाभ काफी है। बेशक, हर चीज का आधार कम लेनदेन शुल्क वाला खाता होना है। यदि खरीद और बिक्री के लिए लेनदेन शुल्क 0.1% है, तो यह स्थान लेनदेन शुल्क का भुगतान करने के लिए पर्याप्त नहीं है।
रणनीति का प्रदर्शन इस प्रकार है। शुरुआत में, मुनाफ़ा नहीं छापा गया था। मैंने इसे आज दोपहर बदल दिया और मुनाफ़ा छाप दिया। पागल बेचने वाले रोबोट ने हर बार मात्रा को लगभग 5,000 में बदल दिया है, इसलिए सबसे अच्छी मध्यस्थता अवधि बीत चुकी है। शुरुआत में आप प्रति घंटे लगभग 100-200U कमा सकते हैं। खास बात यह है कि यह जोखिम मुक्त और कम लागत वाला है। दूसरी तरफ से देखें तो आइसबर्ग ऑर्डर के लिए वास्तव में कई तकनीकें हैं। यदि आप जानते हैं कि रणनीति कैसे लिखनी है, तो आप FMZ पर सिर्फ़ एक दर्जन मिनट में एक रणनीति लिख सकते हैं। ऑर्डर का आकार निर्धारित करने के लिए खरीद ऑर्डर की गहराई का निरीक्षण करें और कीमत, और लंबित ऑर्डर आकार को समायोजित करने के लिए सक्रिय खरीद ऑर्डर के आकार का निरीक्षण करें। और बाजार पर कब्जा करने जैसी विशेषताओं के साथ हिमशैल सौंपने की रणनीति आसानी से हजारों डॉलर बचा सकती है।

रणनीति कोड बहुत सरल है, केवल 80 पंक्तियाँ। शुरुआती लोगों के लिए उपयुक्त। कुछ पैरामीटर जैसे कि सिंगल प्रिसिज़न प्रोग्राम में हार्ड-कोड किए गए हैं। आप उन्हें खुद संशोधित कर सकते हैं। आवश्यक पैरामीटर नीचे दिए गए चित्र में दिखाए गए हैं। एक्सचेंज ट्रेडिंग जोड़ी के मामले में भविष्य में उपयोग के लिए उन्हें सहेजने की अनुशंसा की जाती है एक और अजीब लेनदेन है। आप किसी भी समय उनसे कुछ ब्याज ले सकते हैं।

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()
}
}