রিসোর্স লোড হচ্ছে... লোডিং...

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

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

Quickly implement a semi-automatic quantitative trading tool

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

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

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

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

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

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

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


# Strategy Design

The strategy framework is as follows:

ফাংশন প্রধান ((() { যদিও (সত্য) If(exchange.IO(status)){ // সিটিপি প্রোটোকলের সংযোগের অবস্থা নির্ধারণ করে। LogStatus ((_D(), CTP এর সাথে ইতিমধ্যে সংযুক্ত!) // মার্কেট খোলার সময়, লগইন সংযোগ স্বাভাবিক। } অন্য { LogStatus ((_D(), CTP সংযুক্ত নয়!) // ট্রেডিং ফ্রন্ট এন্ডে লগ ইন করা হয়নি। } } }


If the CTP protocol is connected properly, then we need to set up the trading contract and then get the market quote. After obtaining the quotes, we can use the FMZ Quant platform build-in "line drawing" library to draw the difference.

ফাংশন প্রধান ((() { যদিও (সত্য) If(exchange.IO(status)){ // সিটিপি প্রোটোকলের সংযোগের অবস্থা নির্ধারণ করে। exchange.SetContractType ((rb2001) // দীর্ঘ মাসের চুক্তি সেট করুন Var tickerA = exchange.GetTicker ((() // দূরবর্তী মাসের চুক্তির দরপত্রের তথ্য exchange.SetContractType ((rb1910) // নিকটতম মাসের চুক্তি সেট করুন Var tickerB = exchange.GetTicker() // প্রায় মাসিক চুক্তির কোট ডেটা Var diff = টিকারA.Last - টিকারB.Last $.প্লটলাইন ((diff, diff)

LogStatus ((_D(), CTP এর সাথে ইতিমধ্যে সংযুক্ত!) // মার্কেট খোলার সময়, লগইন সংযোগ স্বাভাবিক। } অন্য { LogStatus ((_D(), CTP সংযুক্ত নয়!) // ট্রেডিং ফ্রন্ট এন্ডে লগ ইন করা হয়নি। } } }


Get the market data, calculate the difference, and draw the graph to record. let it simply reflects the recent fluctuations in the price difference.
Use the function of "line drawing" library ```$.PlotLine```

 ![Quickly implement a semi-automatic quantitative trading tool](/upload/asset/6e286fea238b8266dd13.png) 

# Interactive part

On the strategy editing page, you can add interactive controls directly to the strategy:

 ![Quickly implement a semi-automatic quantitative trading tool](/upload/asset/6e9b91112616d444b964.png) 

Use the function ```GetCommand``` in the strategy code to capture the command that was sent to the robot after the above strategy control was triggered.

After the command is captured, different commands can be processed differently.

The trading part of the code can be packaged using the "Commodity Futures Trading Class Library" function. First, use ```var q = $.NewTaskQueue()``` to generate the transaction control object ```q``` (declared as a global variable).

var cmd = GetCommand (() if (cmd) { if (cmd == plusHedge) { q.pushTask ((exchange, rb2001, sell, 1, function ((task, ret) {) লগ ((task.desc, ret) if (ret) { q.pushTask ((exchange, rb1910, buy, 1, 123, function ((task, ret) {) লগ ((q, task.desc, ret, task.arg) }) } }) } অন্যথায় যদি (cmd == minusHedge) { q.pushTask ((exchange, rb2001, buy, 1, function ((task, ret) {) লগ ((task.desc, ret) if (ret) { q.pushTask ((exchange, rb1910, sell, 1, 123, function ((task, ret) {) লগ ((q, task.desc, ret, task.arg) }) } }) } অন্যথায় যদি (cmd == coverPlus) { q.pushTask ((exchange, rb2001, closesell, 1, function ((task, ret) {) লগ ((task.desc, ret) if (ret) { q.pushTask ((exchange, rb1910, closebuy, 1, 123, function ((task, ret) {) লগ ((q, task.desc, ret, task.arg) }) } }) } অন্যথায় যদি (cmd == coverMinus) { q.pushTask ((exchange, rb2001, closebuy, 1, function ((task, ret) {) লগ ((task.desc, ret) if (ret) { q.pushTask ((exchange, rb1910, closesell, 1, 123, function ((task, ret) {) লগ ((q, task.desc, ret, task.arg) }) } }) } } q.poll (() `


সম্পর্কিত বিষয়বস্তু

আরও দেখুন