ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم ایک ماڈیولر اور حسب ضرورت
ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم نے ٹریڈنگ ٹرمینل کی فعالیت کو بہتر بنایا، دستی ٹریڈنگ کو بہتر بنایا، اور ٹریڈنگ ٹرمینل کے ٹریڈنگ پلگ ان فنکشن کو متعارف کرایا.
اصول وہی ہے جوڈیبگنگ کا آلہ
ایک ٹریڈنگ ٹرمینل پلگ ان تخلیق کرنے کے لئے، آپ کی حکمت عملی کی قسم مقرر کر سکتے ہیں:Trading plugin
پرنئی حکمت عملیصفحہ. ٹریڈنگ پلگ ان کی حمایت کرتا ہےJavaScript
, Python
, C++
، اورMyLanguage
.
پلگ ان کوڈ ایک وقت کی مدت کے لئے عملدرآمد کر سکتے ہیں، اور یہ کچھ سادہ آپریشن انجام دے سکتے ہیں، جیسےآئس برگ آرڈر, زیر التواء احکامات, آرڈر منسوخیاورآرڈر کا حساب. اسی طرحڈیبگنگ کا آلہ، یہ استعمال کرتا ہےreturn
نتائج واپس کرنے کے لئے، اور یہ بھی براہ راست چارٹ اور میزیں واپس کر سکتے ہیں.
یہاں چند مثالیں ہیں، اور دیگر افعال آپ خود ہی دریافت کر سکتے ہیں.
گہرائی اسنیپ شاٹ پر واپس جائیں
// Return to the depth snapshot
function main() {
var tbl = {
type: 'table',
title: 'snapshot of the order depth @ ' + _D(),
cols: ['#', 'Amount', 'Ask', 'Bid', 'Amount'],
rows: []
}
var d = exchange.GetDepth()
for (var i = 0; i < Math.min(Math.min(d.Asks.length, d.Bids.length), 15); i++) {
tbl.rows.push([i, d.Asks[i].Amount, d.Asks[i].Price+'#ff0000', d.Bids[i].Price+'#0000ff', d.Bids[i].Amount])
}
return tbl
}
def main():
tbl = {
"type": "table",
"title": "snapshot of the order depth @ " + _D(),
"cols": ["#", "Amount", "Ask", "Bid", "Amount"],
"rows": []
}
d = exchange.GetDepth()
for i in range(min(min(len(d["Asks"]), len(d["Bids"])), 15)):
tbl["rows"].append([i, d["Asks"][i]["Amount"], str(d["Asks"][i]["Price"]) + "#FF0000", str(d["Bids"][i]["Price"]) + "#0000FF", d["Bids"][i]["Amount"]])
return tbl
void main() {
json tbl = R"({
"type": "table",
"title": "abc",
"cols": ["#", "Amount", "Ask", "Bid", "Amount"],
"rows": []
})"_json;
tbl["title"] = "snapshot of the order depth @" + _D();
auto d = exchange.GetDepth();
for(int i = 0; i < 5; i++) {
tbl["rows"].push_back({format("%d", i), format("%f", d.Asks[i].Amount), format("%f #FF0000", d.Asks[i].Price), format("%f #0000FF", d.Bids[i].Price), format("%f", d.Bids[i].Amount)});
}
LogStatus("`" + tbl.dump() + "`");
// C++ does not support "return json" to display the table, and you can create the live trading to display the table of the status bar
}
کراس پیریڈ اسپریڈز کا تعین کریں
// Draw cross-period spreads
var chart = {
__isStock: true,
title : { text : 'spread analysis chart'},
xAxis: { type: 'datetime'},
yAxis : {
title: {text: 'spread'},
opposite: false
},
series : [
{name : "diff", data : []}
]
}
function main() {
exchange.SetContractType('quarter')
var recordsA = exchange.GetRecords(PERIOD_M5)
exchange.SetContractType('this_week')
var recordsB = exchange.GetRecords(PERIOD_M5)
for(var i = 0; i < Math.min(recordsA.length, recordsB.length); i++){
var diff = recordsA[recordsA.length - Math.min(recordsA.length, recordsB.length) + i].Close - recordsB[recordsB.length - Math.min(recordsA.length, recordsB.length) + i].Close
chart.series[0].data.push([recordsA[recordsA.length - Math.min(recordsA.length, recordsB.length) + i].Time, diff])
}
return chart
}
chart = {
"__isStock": True,
"title": {"text": "spread analysis chart"},
"xAxis": {"type": "datetime"},
"yAxis": {
"title": {"text": "spread"},
"opposite": False
},
"series": [
{"name": "diff", "data": []}
]
}
def main():
exchange.SetContractType("quarter")
recordsA = exchange.GetRecords(PERIOD_M5)
exchange.SetContractType("this_week")
recordsB = exchange.GetRecords(PERIOD_M5)
for i in range(min(len(recordsA), len(recordsB))):
diff = recordsA[len(recordsA) - min(len(recordsA), len(recordsB)) + i].Close - recordsB[len(recordsB) - min(len(recordsA), len(recordsB)) + i].Close
chart["series"][0]["data"].append([recordsA[len(recordsA) - min(len(recordsA), len(recordsB)) + i]["Time"], diff])
return chart
// C++ does not support "return json" structure drawing