পূর্ববর্তী নিবন্ধগুলিতে, আমরা উচ্চ-ফ্রিকোয়েন্সি মুনাফা হার্ভেস্টার কৌশলটির মূল স্পট সংস্করণের ধারণা এবং কোড বাস্তবায়ন বিশ্লেষণ করেছি।
পরিমাণগত ক্রিপ্টোকারেন্সি সার্কেলের অনেক ব্যবহারকারীই মাস্টার নামে একটি কৌশল নিয়ে উদ্বিগ্ন।মুদ্রণ. কৌশলমুদ্রণBinance USDT চুক্তিতে ট্রেড করা হয়। অনেক অনুসারীদের পর্যবেক্ষণ এবং বিশ্লেষণ থেকে দেখা যায় যে উচ্চ-ফ্রিকোয়েন্সি কৌশলটি মুনাফা কাটার নীতির অনুরূপ (মাস্টার শাওচাওও বলেছিলেন যে উচ্চ-ফ্রিকোয়েন্সি কৌশলটি মুনাফা কাটার নীতির অনুরূপ) । তবে এমন কিছু সূক্ষ্মতা থাকতে হবে যা একটি কৌশলকে একটি স্থিতিশীল বিজয়ী হার এবং একটি উপযুক্ত লাভ-হানি অনুপাত থাকতে সক্ষম করে।
তাই, আমি এতটাই উত্তেজিত ছিলাম যে আমি সাহায্য করতে পারিনি কিন্তু কৌশলটি যাদুকরভাবে পরিবর্তন করতে চেয়েছিলাম, এমনকি যাদুকরভাবে পরিবর্তিত কৌশল ফলাফল এবং প্রভাব মাস্টারদের দ্বারা বিকাশিত কৌশলগুলির সামনে কিছুই ছিল না। তবে এটি উচ্চ-ফ্রিকোয়েন্সি কৌশলটির জন্য একটি শেখার অনুশীলনও। আগ্রহী এফএমজেডররা এটি নিয়ে একসাথে আলোচনা এবং শিখতে পারে।
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
.
কৌশলটি মূল থেকে কিছু মডিউল সরিয়ে দেয়, যেমন ব্যালেন্স মডিউল। একটি মোটামুটি বড় পরিবর্তন হ'ল অর্ডার বইয়ের অপেক্ষমান অর্ডারে অর্ডার স্থাপন এবং কার্যকর হওয়ার জন্য অপেক্ষা করা। এটি একটি বিশৃঙ্খল বাজারে তুলনামূলকভাবে কম খরচে পজিশন খুলবে বলে আশা করা হচ্ছে, দীর্ঘকালীন শর্ট গেম খেলবে, স্বল্পমেয়াদী প্রবণতা অনুসরণ করবে এবং স্বল্পমেয়াদী প্রবণতা বিপরীত হলে পজিশন বন্ধ করবে এবং তারপরে বিপরীতভাবে অপেনড অর্ডার এবং ওপেন পজিশন চালিয়ে যাবে।
কৌশলটি অন্যান্য অকেজো কোড সরিয়ে দেয়, তাই এটি খুব সংক্ষিপ্ত এবং সহজ। যদিও কৌশলটি ক্ষতির সাথেও অলাভজনক কৌশল, এটি উচ্চ-ফ্রিকোয়েন্সি কৌশলগুলি শিখতে, উচ্চ-ফ্রিকোয়েন্সি কৌশলগুলির ক্রিয়াকলাপ পর্যবেক্ষণ করতে, বাজারের মাইক্রোস্কোপিক নিয়মগুলি পর্যবেক্ষণ করতে এটি একটি খুব সহজ এবং দরকারী মডেল। প্রোগ্রামযুক্ত এবং পরিমাণগত ট্রেডিং অনেক অনুশীলন, অভিজ্ঞতা এবং তত্ত্বের উপর ভিত্তি করে করা দরকার।
এটা দেখা যায় যে বাজারের পরিস্থিতি সক্রিয় না হলে পজিশন খোলার এবং বন্ধ করা আরও কঠিন।
বর্তমানে, কোন ভাল অপ্টিমাইজেশান দিক পাওয়া যায়নি। আগ্রহী শিক্ষার্থীরা সক্রিয়ভাবে কথা বলতে পারে এবং এটি নিয়ে একসাথে আলোচনা করতে পারে।
কৌশল ঠিকানাঃhttps://www.fmz.com/strategy/260806
কৌশলটি শুধুমাত্র অধ্যয়নের জন্য; যখন বাজারটি সমতল থাকে, তখন এটিকে বটে চালানো ক্ষতি করতে পারে।