The resource loading... loading...

Usage of Plugin

The plugin can execute the code for a period of time, and it can perform some simple operations, such as iceberg orders, pending orders, order cancellation and order calculation. Same as the debugging tool, it uses return to return the results, and it can also directly return the charts and tables. Here are a few examples, and other functions can be explored by yourself.

  • Return to the depth snapshot
  // 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
  // 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

There are other examples in the “More Strategies”, such as buy / sell in small quantities.

Plugin Writing How to Use