एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म एक मॉड्यूलर और अनुकूलन योग्य
एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म ने ट्रेडिंग टर्मिनल की कार्यक्षमता में सुधार किया, मैन्युअल ट्रेडिंग को बेहतर तरीके से सुविधाजनक बनाया और ट्रेडिंग टर्मिनल का ट्रेडिंग प्लग-इन फ़ंक्शन पेश किया।
सिद्धांत समान है।डिबगिंग उपकरण: निष्पादित करने के लिए
ट्रेडिंग टर्मिनल प्लगइन बनाने के लिए, आप रणनीति प्रकार सेट कर सकते हैंः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