پچھلے مضامین میں، ہم نے اعلی تعدد کے منافع کٹائی کی حکمت عملی کے اصل اسپاٹ ورژن کے خیالات اور کوڈ کے نفاذ کا تجزیہ کیا.
مقداری cryptocurrency دائرے میں بہت سے صارفین کو ایک ماسٹر کی طرف سے تیار کی حکمت عملی کے بارے میں بہت فکر مند ہیںپیسہ چھاپناکی حکمت عملی.پیسہ چھاپنابائننس یو ایس ڈی ٹی معاہدے میں تجارت کی جاتی ہے۔ بہت سے پیروکاروں کے مشاہدے اور تجزیے سے یہ دیکھا جاسکتا ہے کہ اعلی تعدد کی حکمت عملی منافع کٹانے والے کے اصول سے ملتی جلتی ہے (ماسٹر شیاؤ کاؤ نے یہ بھی کہا کہ اعلی تعدد کی حکمت عملی کا اصول منافع کٹانے والے سے ملتا جلتا ہے) ۔ لیکن کچھ لطیفیت ہونی چاہئے جو حکمت عملی کو مستحکم جیت کی شرح اور مناسب منافع سے نقصان کا تناسب حاصل کرنے کے قابل بناتی ہے۔
لہذا ، میں اتنا پرجوش تھا کہ میں مدد نہیں کرسکتا تھا لیکن حکمت عملی کو جادوئی طور پر تبدیل کرنا چاہتا تھا ، یہاں تک کہ جادوئی طور پر تبدیل شدہ حکمت عملی کا نتیجہ اور اثر بھی ماسٹرز کے تیار کردہ حکمت عملیوں کے سامنے کچھ نہیں تھا۔ لیکن یہ ہائی فریکوئنسی حکمت عملی کے لئے سیکھنے کی مشق بھی ہے۔ دلچسپی رکھنے والے ایف ایم زیڈ اس کے بارے میں ایک ساتھ بحث اور سیکھ سکتے ہیں۔
var TickInterval = 100
function LeeksReaper() {
var self = {}
self.numTick = 0
self.lastTradeId = 0
self.vol = 0
self.askPrice = 0
self.bidPrice = 0
self.orderBook = {
Asks: [],
Bids: []
}
self.prices = []
self.tradeOrderId = 0
self.account = null
self.buyPrice = 0
self.sellPrice = 0
self.state = 0
self.depth = null
self.updateTrades = function() {
var trades = _C(exchange.GetTrades)
if (self.prices.length == 0) {
while (trades.length == 0) {
trades = trades.concat(_C(exchange.GetTrades))
}
for (var i = 0; i < 15; i++) {
self.prices[i] = trades[trades.length - 1].Price
}
}
self.vol = 0.7 * self.vol + 0.3 * _.reduce(trades, function(mem, trade) {
// Huobi not support trade.Id
if ((trade.Id > self.lastTradeId) || (trade.Id == 0 && trade.Time > self.lastTradeId)) {
self.lastTradeId = Math.max(trade.Id == 0 ? trade.Time : trade.Id, self.lastTradeId)
mem += trade.Amount
}
return mem
}, 0)
}
self.updateOrderBook = function() {
var orderBook = _C(exchange.GetDepth)
self.depth = orderBook
self.buyPrice = orderBook.Bids[pendingLevel].Price
self.sellPrice = orderBook.Asks[pendingLevel].Price
self.orderBook = orderBook
if (orderBook.Bids.length < 3 || orderBook.Asks.length < 3) {
return
}
self.bidPrice = orderBook.Bids[0].Price * 0.618 + orderBook.Asks[0].Price * 0.382 + 0.01
self.askPrice = orderBook.Bids[0].Price * 0.382 + orderBook.Asks[0].Price * 0.618 - 0.01
self.prices.shift()
self.prices.push(_N((orderBook.Bids[0].Price + orderBook.Asks[0].Price) * 0.15 +
(orderBook.Bids[1].Price + orderBook.Asks[1].Price) * 0.1 +
(orderBook.Bids[2].Price + orderBook.Asks[2].Price) * 0.1 +
(orderBook.Bids[3].Price + orderBook.Asks[3].Price) * 0.075 +
(orderBook.Bids[4].Price + orderBook.Asks[4].Price) * 0.05 +
(orderBook.Bids[5].Price + orderBook.Asks[5].Price) * 0.025))
}
self.updateAccount = function() {
var account = exchange.GetAccount()
if (!account) {
return
}
self.account = account
LogProfit(parseFloat(account.Info.totalWalletBalance), account)
}
self.CancelAll = function() {
while (1) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
break
}
for (var i = 0; i < orders.length; i++) {
exchange.CancelOrder(orders[i].Id)
}
Sleep(100)
}
}
self.poll = function() {
self.numTick++
self.updateTrades()
self.updateOrderBook()
var pos = _C(exchange.GetPosition)
var burstPrice = self.prices[self.prices.length - 1] * burstThresholdPct
var bull = false
var bear = false
LogStatus(_D(), "\n", 'Tick:', self.numTick, 'self.vol:', self.vol, ', lastPrice:', self.prices[self.prices.length - 1], ', burstPrice: ', burstPrice)
if (self.numTick > 2 && (
self.prices[self.prices.length - 1] - _.max(self.prices.slice(-6, -1)) > burstPrice ||
self.prices[self.prices.length - 1] - _.max(self.prices.slice(-6, -2)) > burstPrice && self.prices[self.prices.length - 1] > self.prices[self.prices.length - 2]
)) {
bull = true
} else if (self.numTick > 2 && (
self.prices[self.prices.length - 1] - _.min(self.prices.slice(-6, -1)) < -burstPrice ||
self.prices[self.prices.length - 1] - _.min(self.prices.slice(-6, -2)) < -burstPrice && self.prices[self.prices.length - 1] < self.prices[self.prices.length - 2]
)) {
bear = true
}
if (pos.length != 0) {
if (pos[0].Type == PD_LONG) {
self.state = 1
} else {
self.state = 2
}
} else {
self.state = 0
}
if ((!bull && !bear)) {
return
}
if (bull) {
var price = (self.state == 0 || self.state == 1) ? self.buyPrice : self.depth.Bids[coverPendingLevel].Price
var amount = (self.state == 0 || self.state == 1) ? pendingAmount : pos[0].Amount
exchange.SetDirection("buy")
exchange.Buy(price, amount)
} else if (bear) {
var price = (self.state == 0 || self.state == 2) ? self.sellPrice : self.depth.Asks[coverPendingLevel].Price
var amount = (self.state == 0 || self.state == 2) ? pendingAmount : pos[0].Amount
exchange.SetDirection("sell")
exchange.Sell(price, amount)
}
self.numTick = 0
Sleep(TickInterval)
self.CancelAll()
self.updateAccount()
}
while (!self.account) {
self.updateAccount()
Sleep(500)
}
Log("self.account:", self.account)
return self
}
function main() {
LogProfitReset()
exchange.SetPrecision(pricePrecision, amountPrecision)
exchange.SetContractType("swap")
var reaper = LeeksReaper()
while (true) {
reaper.poll()
Sleep(100)
}
}
حکمت عملی کا منصوبہ بائننس یو ایس ڈی ٹی کنٹریکٹ مارکیٹ پر تجارت کرنے کا ہے ، جو یکطرفہ پوزیشنوں کی حمایت کرتا ہے۔ لہذا ، حکمت عملی کو یکطرفہ پوزیشنوں کی خصوصیات کے مطابق تبدیل اور ڈیزائن کیا گیا ہے (ایک طرفہ پوزیشنیں حکمت عملی میں ترمیم کے لئے زیادہ آسان ہیں) ، اور آپ کو صرف خرید و فروخت پر غور کرنے کی ضرورت ہے ، پوزیشنوں کو بند کرنے کے بارے میں سوچنے کی ضرورت نہیں ہے۔ سوچنے کا یہ طریقہ منافع کٹانے والے کے اسپاٹ ورژن سے بھی قریب ہے۔
حکمت عملی بنیادی طور پر اصل قلیل مدتی قیمت رجحان بریک آؤٹ معیار برقرار رکھتا ہے، اور قلیل مدتی قیمت بریک آؤٹ رینج پیرامیٹر کی طرف سے کنٹرول کیا جاتا ہےburstThresholdPct
مختصر مدت کی قیمت کا تعین کرنے کے لئے معیار کے مطابقbull
یاbear
.
یہ حکمت عملی اصل سے کچھ ماڈیولز کو ہٹاتی ہے ، جیسے بیلنس ماڈیول۔ ایک بہت بڑی ترمیم آرڈر دینے کے احکامات کو آرڈر بک میں زیر التواء احکامات میں تبدیل کرنا ہے اور عمل درآمد کے منتظر ہے۔ اس سے توقع کی جاتی ہے کہ وہ افراتفری والے بازار میں نسبتا low کم قیمت پر پوزیشنیں کھولے گا جس میں سخت طویل مختصر کھیل ہوگا ، قلیل مدتی رجحان کی پیروی کرے گا ، اور جب قلیل مدتی رجحان الٹ جائے گا تو پوزیشنیں بند کردے گا ، اور پھر الٹ پلٹ آرڈرز اور کھلی پوزیشنوں کو جاری رکھے گا۔
یہ حکمت عملی دوسرے بیکار کوڈ کو ہٹاتی ہے ، لہذا یہ بہت مختصر اور آسان ہے۔ اگرچہ حکمت عملی ایک غیر منافع بخش حکمت عملی ہے ، یہاں تک کہ نقصانات کے ساتھ بھی ، یہ ایک ایف ایم زی کے لئے اعلی تعدد کی حکمت عملیوں کو سیکھنے ، اعلی تعدد کی حکمت عملیوں کے اقدامات کا مشاہدہ کرنے ، مارکیٹ کے خوردبین قوانین کا مشاہدہ کرنے وغیرہ کے لئے ایک بہت ہی آسان اور مفید ماڈل ہے۔ پروگرام شدہ اور مقداری تجارت کو بہت ساری مشق ، تجربے اور نظریات پر مبنی ہونے کی ضرورت ہے۔
یہ دیکھا جاسکتا ہے کہ جب مارکیٹ کی صورتحال فعال نہیں ہوتی ہے تو پوزیشن کھولنا اور بند کرنا زیادہ مشکل ہوتا ہے۔
فی الحال، کوئی اچھی اصلاح کی سمت نہیں ملی ہے. طالب علم، جو دلچسپی رکھتے ہیں، فعال طور پر بات کر سکتے ہیں اور اس پر ایک ساتھ بحث کر سکتے ہیں.
حکمت عملی کا پتہ:https://www.fmz.com/strategy/260806
یہ حکمت عملی صرف مطالعہ کے لیے ہے۔ جب مارکیٹ فلیٹ ہو، تو اسے بوٹ میں چلانے سے نقصان ہو سکتا ہے۔