অর্ধ-স্বয়ংক্রিয় পরিমাণগত ট্রেডিং সরঞ্জাম দ্রুত বাস্তবায়ন করুন

লেখক:ভাল, তৈরিঃ 2020-08-30 10:11:02, আপডেটঃ 2023-10-08 19:54:06

img

অর্ধ-স্বয়ংক্রিয় পরিমাণগত ট্রেডিং সরঞ্জাম দ্রুত বাস্তবায়ন করুন

কমোডিটি ফিউচার ট্রেডিংয়ে, ইন্টারটেম্পোরারি আরবিট্রেজ একটি সাধারণ ট্রেডিং পদ্ধতি। এই ধরনের আরবিট্রেজ ঝুঁকিমুক্ত নয়। যখন স্প্রেডের একতরফা দিকটি প্রসারিত হতে থাকে, তখন আরবিট্রেজ পজিশনটি ভাসমান ক্ষতির অবস্থায় থাকবে। তবে, যতক্ষণ পর্যন্ত আরবিট্রেজ পজিশনটি সঠিকভাবে নিয়ন্ত্রিত থাকে, ততক্ষণ এটি এখনও খুব কার্যকর এবং কার্যকর।

এই নিবন্ধে, আমরা অন্য ট্রেডিং কৌশল স্যুইচ করার চেষ্টা, পরিবর্তে একটি সম্পূর্ণ স্বয়ংক্রিয় ট্রেডিং কৌশল নির্মাণ, আমরা একটি ইন্টারেক্টিভ অর্ধ স্বয়ংক্রিয় পরিমাণগত ট্রেডিং টুল উপলব্ধি পণ্যের ফিউচার ট্রেডিং মধ্যে intertemporary সালিশ সহজ করতে.

উন্নয়ন প্ল্যাটফর্ম আমরা এফএমজেড কোয়ান্ট প্ল্যাটফর্ম ব্যবহার করব। এই নিবন্ধের ফোকাস হল ইন্টারেক্টিভ ফাংশনগুলির সাথে আধা-স্বয়ংক্রিয় কৌশলগুলি কীভাবে তৈরি করা যায়।

ইন্টারটেম্পোরাল আর্বিট্রেজ একটি খুব সহজ ধারণা।

অন্তর্বর্তীকালীন সালিসির ধারণা

  • উইকিপিডিয়া থেকে উদ্ধৃতি

In economics and finance, arbitrage is the practice of taking advantage of a price difference between two or more markets: striking a combination of matching deals that capitalize upon the imbalance, the profit being the difference between the market prices at which the unit is traded. When used by academics, an arbitrage is a transaction that involves no negative cash flow at any probabilistic or temporal state and a positive cash flow in at least one state; in simple terms, it is the possibility of a risk-free profit after transaction costs. For example, an arbitrage opportunity is present when there is the opportunity to instantaneously buy something for a low price and sell it for a higher price.

কৌশল নকশা

কৌশলগত কাঠামো নিম্নরূপঃ

Function main(){
     While(true){
         If(exchange.IO("status")){ // Determine the connection status of the CTP protocol.
             LogStatus(_D(), "Already connected to CTP !") // Market Opening time, login connection is normal.
         } else {
             LogStatus(_D(), "CTP not connected!") // Not logged in to the trading front end.
         }
     }
}

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

Function main(){
     While(true){
         If(exchange.IO("status")){ // Determine the connection status of the CTP protocol.
             exchange.SetContractType("rb2001") // Set the far month contract
             Var tickerA = exchange.GetTicker() // far-month contract quote data
            
             exchange.SetContractType("rb1910") // Set the near month contract
             Var tickerB = exchange.GetTicker() // near-month contract quote data
            
             Var diff = tickerA.Last - tickerB.Last
             $.PlotLine("diff", diff)

             LogStatus(_D(), "Already connected to CTP !") // Market Opening time, login connection is normal.
         } else {
             LogStatus(_D(), "CTP not connected!") // Not logged in to the trading front end.
         }
     }
}

বাজারের তথ্য সংগ্রহ করুন, পার্থক্য গণনা করুন, এবং রেকর্ড করার জন্য গ্রাফ আঁকুন। এটি কেবলমাত্র দামের পার্থক্যের সাম্প্রতিক ওঠানামা প্রতিফলিত করুন। line drawing লাইব্রেরির ফাংশন ব্যবহার করুন$.PlotLine

img

ইন্টারেক্টিভ অংশ

কৌশল সম্পাদনা পৃষ্ঠায়, আপনি কৌশল সরাসরি ইন্টারেক্টিভ কন্ট্রোল যোগ করতে পারেনঃ

img

ফাংশনটি ব্যবহার করুনGetCommandউপরে উল্লিখিত কৌশল কন্ট্রোল ট্রিগার হওয়ার পর রোবটকে যে কমান্ড পাঠানো হয়েছিল তা ক্যাপচার করার জন্য কৌশল কোডে।

কমান্ডটি ক্যাপচার করার পরে, বিভিন্ন কমান্ডগুলি ভিন্নভাবে প্রক্রিয়া করা যেতে পারে।

কোডের ট্রেডিং অংশটি Commodity Futures Trading Class Library ফাংশন ব্যবহার করে প্যাকেজ করা যেতে পারে।var q = $.NewTaskQueue()লেনদেন নিয়ন্ত্রণ বস্তু তৈরি করতেq(গ্লোবাল ভেরিয়েবল হিসেবে ঘোষণা করা হয়) ।

var cmd = GetCommand()
if (cmd) {
    if (cmd == "plusHedge") {
        q.pushTask(exchange, "rb2001", "sell", 1, function(task, ret) {
            Log(task.desc, ret)
            if (ret) {
                q.pushTask(exchange, "rb1910", "buy", 1, 123, function(task, ret) {
                    Log("q", task.desc, ret, task.arg)
                })
            }
        })
    } else if (cmd == "minusHedge") {
        q.pushTask(exchange, "rb2001", "buy", 1, function(task, ret) {
            Log(task.desc, ret)
            if (ret) {
                q.pushTask(exchange, "rb1910", "sell", 1, 123, function(task, ret) {
                    Log("q", task.desc, ret, task.arg)
                })
            }
        })
    } else if (cmd == "coverPlus") {
        q.pushTask(exchange, "rb2001", "closesell", 1, function(task, ret) {
            Log(task.desc, ret)
            if (ret) {
                q.pushTask(exchange, "rb1910", "closebuy", 1, 123, function(task, ret) {
                    Log("q", task.desc, ret, task.arg)
                })
            }
        })
    } else if (cmd == "coverMinus") {
        q.pushTask(exchange, "rb2001", "closebuy", 1, function(task, ret) {
            Log(task.desc, ret)
            if (ret) {
                q.pushTask(exchange, "rb1910", "closesell", 1, 123, function(task, ret) {
                    Log("q", task.desc, ret, task.arg)
                })
            }
        })
    }
}
q.poll()

সম্পর্কিত

আরো