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

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

img

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

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

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

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

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

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

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

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.
         }
     }
}

مارکیٹ کے اعداد و شمار حاصل کریں، فرق کا حساب لگائیں، اور ریکارڈ کرنے کے لئے گراف ڈرائنگ. اسے صرف قیمت کے فرق میں حالیہ اتار چڑھاؤ کی عکاسی کرنے دو. لائن ڈرائنگ لائبریری کے فنکشن کا استعمال کریں$.PlotLine

img

انٹرایکٹو حصہ

حکمت عملی میں ترمیم کے صفحے پر، آپ کو براہ راست حکمت عملی میں انٹرایکٹو کنٹرولز شامل کر سکتے ہیں:

img

فنکشن استعمال کریںGetCommandاسٹریٹجی کوڈ میں اس کمانڈ کو پکڑنے کے لیے جو روبوٹ کو اسٹریٹجی کنٹرول کے ٹرگر ہونے کے بعد بھیجی گئی تھی۔

کمانڈ کی گرفتاری کے بعد، مختلف کمانڈز کو مختلف طریقے سے عملدرآمد کیا جا سکتا ہے.

کوڈ کا ٹریڈنگ حصہ کماڈٹی فیوچر ٹریڈنگ کلاس لائبریری فنکشن کا استعمال کرتے ہوئے پیک کیا جا سکتا ہے۔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()

متعلقہ

مزید