Type/to search
8
Follow
1369
Followers
সুষম ক্রম কৌশল (শিক্ষণ কৌশল)
Discussions
Created 2020-09-02 17:05:25  Updated 2024-12-10 10:09:34
 0
 2856

img

সুষম ক্রম কৌশল (শিক্ষণ কৌশল)

এই নিবন্ধে বর্ণিত কৌশলটির সারমর্ম হল একটি গতিশীল ভারসাম্য কৌশল, অর্থাৎ, ভারসাম্য রক্ষাকারী মুদ্রার মান সর্বদা মূল্যবান মুদ্রার মূল্যের সমান। যাইহোক, এটি অগ্রিম অর্ডার দেওয়ার জন্য ডিজাইন করা হয়েছে এবং কৌশল যুক্তি খুবই সহজ। এই কৌশলটি লেখার মূল উদ্দেশ্য হল কৌশল ডিজাইনের বিভিন্ন দিক প্রদর্শন করা।

  • নীতি লজিক এনক্যাপসুলেশন
    পলিসি লজিক এবং কিছু রানটাইম ডেটা এবং ট্যাগ ভেরিয়েবল একসাথে এনক্যাপসুলেট করুন (এগুলিকে অবজেক্টে এনক্যাপসুলেট করুন)।

  • সূচনা কাজের কৌশল পরিচালনার জন্য কোড
    প্রাথমিক রানের সময়, আয় গণনার জন্য প্রাথমিক অ্যাকাউন্টের তথ্য রেকর্ড করা হয়, এটি পরামিতি অনুযায়ী ডেটা পুনরুদ্ধার করা হয় কিনা তা নির্বাচন করা হয়।

  • নীতি মিথস্ক্রিয়া প্রক্রিয়াকরণের জন্য কোড
    একটি সাধারণ বিরতি ডিজাইন করা হয়েছে এবং ইন্টারেক্টিভ প্রক্রিয়াকরণ চালিয়ে যাচ্ছে।

  • কৌশল আয় গণনার জন্য কোড
    মুদ্রা ভিত্তিক গণনা ব্যবহার করে রিটার্ন গণনা করুন।

  • কৌশলে মূল তথ্যের স্থিরতার জন্য প্রক্রিয়া
    ডেটা পুনরুদ্ধার করার জন্য একটি প্রক্রিয়া ডিজাইন করুন

  • নীতি প্রক্রিয়াকরণ তথ্য প্রদর্শনের জন্য কোড
    স্ট্যাটাস বার ডেটা প্রদর্শন।

নীতি কোড

javascript
var Shannon = { // member e : exchanges[0], arrPlanOrders : [], distance : BalanceDistance, account : null, ticker : null, initAccount : null, isAskPending : false, isBidPending : false, // function CancelAllOrders : function (e) { while(true) { var orders = _C(e.GetOrders) if(orders.length == 0) { return } Sleep(500) for(var i = 0; i < orders.length; i++) { e.CancelOrder(orders[i].Id, orders[i]) Sleep(500) } } }, Balance : function () { if (this.arrPlanOrders.length == 0) { this.CancelAllOrders(this.e) var acc = _C(this.e.GetAccount) this.account = acc var askPendingPrice = (this.distance + acc.Balance) / acc.Stocks var bidPendingPrice = (acc.Balance - this.distance) / acc.Stocks var askPendingAmount = this.distance / 2 / askPendingPrice var bidPendingAmount = this.distance / 2 / bidPendingPrice this.arrPlanOrders.push({tradeType : "ask", price : askPendingPrice, amount : askPendingAmount}) this.arrPlanOrders.push({tradeType : "bid", price : bidPendingPrice, amount : bidPendingAmount}) } else if(this.isAskPending == false && this.isBidPending == false) { for(var i = 0; i < this.arrPlanOrders.length; i++) { var tradeFun = this.arrPlanOrders[i].tradeType == "ask" ? this.e.Sell : this.e.Buy var id = tradeFun(this.arrPlanOrders[i].price, this.arrPlanOrders[i].amount) if(id) { this.isAskPending = this.arrPlanOrders[i].tradeType == "ask" ? true : this.isAskPending this.isBidPending = this.arrPlanOrders[i].tradeType == "bid" ? true : this.isBidPending } else { Log("挂单失败,清理!") this.CancelAllOrders(this.e) return } } } if(this.isBidPending || this.isAskPending) { var orders = _C(this.e.GetOrders) Sleep(1000) var ticker = _C(this.e.GetTicker) this.ticker = ticker if(this.isAskPending) { var isFoundAsk = false for (var i = 0; i < orders.length; i++) { if(orders[i].Type == ORDER_TYPE_SELL) { isFoundAsk = true } } if(!isFoundAsk) { Log("卖单成交,撤销订单,重置") this.CancelAllOrders(this.e) this.arrPlanOrders = [] this.isAskPending = false this.isBidPending = false LogProfit(this.CalcProfit(ticker)) return } } if(this.isBidPending) { var isFoundBid = false for(var i = 0; i < orders.length; i++) { if(orders[i].Type == ORDER_TYPE_BUY) { isFoundBid = true } } if(!isFoundBid) { Log("买单成交,撤销订单,重置") this.CancelAllOrders(this.e) this.arrPlanOrders = [] this.isAskPending = false this.isBidPending = false LogProfit(this.CalcProfit(ticker)) return } } } }, ShowTab : function() { var tblPlanOrders = { type : "table", title : "计划挂单", cols : ["方向", "价格", "数量"], rows : [] } for(var i = 0; i < this.arrPlanOrders.length; i++) { tblPlanOrders.rows.push([this.arrPlanOrders[i].tradeType, this.arrPlanOrders[i].price, this.arrPlanOrders[i].amount]) } var tblAcc = { type : "table", title : "账户信息", cols : ["type", "Stocks", "FrozenStocks", "Balance", "FrozenBalance"], rows : [] } tblAcc.rows.push(["初始", this.initAccount.Stocks, this.initAccount.FrozenStocks, this.initAccount.Balance, this.initAccount.FrozenBalance]) tblAcc.rows.push(["当前", this.account.Stocks, this.account.FrozenStocks, this.account.Balance, this.account.FrozenBalance]) return "时间:" + _D() + "\n `" + JSON.stringify([tblPlanOrders, tblAcc]) + "`" + "\n" + "ticker:" + JSON.stringify(this.ticker) }, CalcProfit : function(ticker) { var acc = _C(this.e.GetAccount) this.account = acc return (this.account.Balance - this.initAccount.Balance) + (this.account.Stocks - this.initAccount.Stocks) * ticker.Last }, Init : function() { this.initAccount = _C(this.e.GetAccount) if(IsReset) { var acc = _G("account") if(acc) { this.initAccount = acc } else { Log("恢复初始账户信息失败!以初始状态运行!") _G("account", this.initAccount) } } else { _G("account", this.initAccount) LogReset(1) LogProfitReset() } }, Exit : function() { Log("停止前,取消所有挂单...") this.CancelAllOrders(this.e) } } function main() { // 初始化 Shannon.Init() // 主循环 while(true) { Shannon.Balance() LogStatus(Shannon.ShowTab()) // 交互 var cmd = GetCommand() if(cmd) { if(cmd == "stop") { while(true) { LogStatus("暂停", Shannon.ShowTab()) cmd = GetCommand() if(cmd) { if(cmd == "continue") { break } } Sleep(1000) } } } Sleep(5000) } } function onexit() { Shannon.Exit() }

ব্যাকটেস্ট রান

img

img

img

সম্প্রসারণ অপ্টিমাইজ করুন

  • আপনি একটি ভার্চুয়াল পেন্ডিং অর্ডার মেকানিজম যোগ করতে পারেন, তাই অর্ডারটি আসলে পোস্ট করা নাও হতে পারে।
  • ফিউচার ট্রেডিং যোগদান
  • বহু-বৈচিত্র্য এবং বহু-বিনিময় সংস্করণে প্রসারিত করুন

কৌশলগুলি শুধুমাত্র শিক্ষার উদ্দেশ্যে, সতর্কতার সাথে ব্যবহার করুন।
কৌশল ঠিকানা: https://www.fmz.com/strategy/225746

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)