وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ایک نیم خودکار مقداری تجارتی آلہ کو فوری طور پر نافذ کریں

مصنف:نیکی, تخلیق: 2020-08-30 10:11:02, تازہ کاری: 2023-10-08 19:54:06

Quickly implement a semi-automatic quantitative trading tool

ایک نیم خودکار مقداری تجارتی آلہ کو فوری طور پر نافذ کریں

اجناس فیوچر ٹریڈنگ میں ، انٹر ٹائموری آربیٹریج ایک عام تجارتی طریقہ ہے۔ اس قسم کی آربیٹریج خطرے سے پاک نہیں ہے۔ جب پھیلاؤ کی یکطرفہ سمت میں توسیع جاری رہتی ہے تو ، آربیٹریج پوزیشن فلوٹنگ نقصان کی حالت میں ہوگی۔ تاہم ، جب تک کہ آربیٹریج پوزیشن کو مناسب طریقے سے کنٹرول کیا جاتا ہے ، یہ اب بھی بہت عملی اور قابل عمل ہے۔

اس مضمون میں، ہم ایک اور تجارتی حکمت عملی پر سوئچ کرنے کی کوشش کرتے ہیں، مکمل طور پر خود کار طریقے سے تجارتی حکمت عملی کی تعمیر کے بجائے، ہم نے ایک انٹرایکٹو نیم خودکار مقداری تجارتی آلے کو سمجھا ہے تاکہ یہ آسان ہو سکے.

ترقیاتی پلیٹ فارم ہم ایف ایم زیڈ کوانٹ پلیٹ فارم استعمال کریں گے۔ اس مضمون کی توجہ اس بات پر ہے کہ انٹرایکٹو افعال کے ساتھ نیم خودکار حکمت عملی کیسے بنائی جائے۔

انٹر ٹائمورل آربیٹریج ایک بہت ہی سادہ تصور ہے.

انٹر ٹائمورل آربیٹریج کا تصور

  • ویکیپیڈیا سے اقتباس


# Strategy Design

The strategy framework is as follows:

فنکشن اہم ((() { جبکہ ((سچ) { If(exchange.IO(status)){ // CTP پروٹوکول کی کنکشن کی حیثیت کا تعین. 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)){ // CTP پروٹوکول کی کنکشن کی حیثیت کا تعین. exchange.SetContractType ((rb2001) // دور ماہ کے معاہدے کی ترتیب Var tickerA = exchange.GetTicker() // دور ماہ کے معاہدے کی قیمتوں کا تعین ڈیٹا exchange.SetContractType ((rb1910) // قریب ترین ماہ کے معاہدے کو مقرر کریں Var tickerB = exchange.GetTicker() // قریب ماہانہ معاہدے کی قیمت کا ڈیٹا Var diff = ٹکرA.Last - ٹکرB.Last $.PlotLine ((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 (() اگر (cmd) { if (cmd == plusHedge) { q.pushTask ((تبادلہ، rb2001، sell، 1، تقریب ((کام، ret) { لاگ ((ٹاسک.ڈیسک، ریٹ) اگر (ret) { q.pushTask(تبادلہ، rb1910، buy، 1, 123, function(task، ret) { لاگ ((q، task.desc، ret، task.arg) }) } }) } دوسری صورت میں اگر (cmd == minusHedge) { q.pushTask ((تبادلہ، rb2001، buy، 1، فنکشن ((ٹاسک، ریٹ) { لاگ ((ٹاسک.ڈیسک، ریٹ) اگر (ret) { q.pushTask ((تبادلہ، rb1910، sell، 1, 123, function ((ٹاسک، ret) { لاگ ((q، task.desc، ret، task.arg) }) } }) } دوسری صورت میں اگر (cmd == coverPlus) { q.pushTask ((تبادلہ، rb2001، closesell، 1، فنکشن ((ٹاسک، ریٹ) { لاگ ((ٹاسک.ڈیسک، ریٹ) اگر (ret) { q.pushTask ((تبادلہ، rb1910، closebuy، 1, 123, function ((ٹاسک، ret) { لاگ ((q، task.desc، ret، task.arg) }) } }) } دوسری صورت میں اگر (cmd == coverMinus) { q.pushTask ((تبادلہ، rb2001، closebuy، 1، تقریب ((کام، ret) { لاگ ((ٹاسک.ڈیسک، ریٹ) اگر (ret) { q.pushTask ((تبادلہ، rb1910، closesell، 1, 123, function ((ٹاسک، ret) { لاگ ((q، task.desc، ret، task.arg) }) } }) } } q.poll (() `


متعلقہ مواد

مزید معلومات