ایک نیم خودکار مقداری تجارتی آلہ کو فوری طور پر نافذ کریں
اجناس فیوچر ٹریڈنگ میں ، انٹر ٹائموری آربیٹریج ایک عام تجارتی طریقہ ہے۔ اس قسم کی آربیٹریج خطرے سے پاک نہیں ہے۔ جب پھیلاؤ کی یکطرفہ سمت میں توسیع جاری رہتی ہے تو ، آربیٹریج پوزیشن فلوٹنگ نقصان کی حالت میں ہوگی۔ تاہم ، جب تک کہ آربیٹریج پوزیشن کو مناسب طریقے سے کنٹرول کیا جاتا ہے ، یہ اب بھی بہت عملی اور قابل عمل ہے۔
اس مضمون میں، ہم ایک اور تجارتی حکمت عملی پر سوئچ کرنے کی کوشش کرتے ہیں، مکمل طور پر خود کار طریقے سے تجارتی حکمت عملی کی تعمیر کے بجائے، ہم نے ایک انٹرایکٹو نیم خودکار مقداری تجارتی آلے کو سمجھا ہے تاکہ یہ آسان ہو سکے.
ترقیاتی پلیٹ فارم ہم ایف ایم زیڈ کوانٹ پلیٹ فارم استعمال کریں گے۔ اس مضمون کی توجہ اس بات پر ہے کہ انٹرایکٹو افعال کے ساتھ نیم خودکار حکمت عملی کیسے بنائی جائے۔
انٹر ٹائمورل آربیٹریج ایک بہت ہی سادہ تصور ہے.
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
حکمت عملی میں ترمیم کے صفحے پر، آپ کو براہ راست حکمت عملی میں انٹرایکٹو کنٹرولز شامل کر سکتے ہیں:
فنکشن استعمال کریں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()