Type/to search
8
Follow
1363
Followers
3.5 Vorlage für ein Richtlinien-Framework
Tutorials
Created 2017-01-19 16:04:24  Updated 2017-10-11 10:27:27
 4
 5842

3.5 Vorlage für ein Richtlinien-Framework


Mit einer Strategie-Framework-Vorlage kann mit nur wenig Code eine einfache Trend-Strategie erstellt werden, und mit einer gewissen Programmierung kann eine Strategie des Typs Hedging geschrieben werden.

img

  • Benutzung:

      1. Finden Sie die Vorlage im Strategieplatz, wie oben gezeigt, und kopieren Sie sie in die Control Center für Ihr Konto.
      1. Verwenden Sie die Strategie-Framework-Template-Tabelle, wie in der folgenden Abbildung gezeigt:

      img

  • Der Code für die Strategie, die in der Testleiste des Strategie-Framework-Templates angezeigt wird, wird in der folgenden Form angezeigt:

    var TASK_IDLE = 0; // 空闲状态命令 var TASK_OPEN_LONG = 1; // 建多仓命令 var TASK_OPEN_SHORT = 2; // 建空仓命令 var TASK_ADD = 3; // 加仓命令 var TASK_ST = 4; // 止损命令 var TASK_COVER = 5; // 平仓命令 function onTick1() { // 趋势系统1: 均线 具体买卖逻辑实现 // MA var records = _C(exchanges[0].GetRecords); if(records.length < 11){ return $.TaskCmd(TASK_IDLE); } var ema_fast = TA.MA(records, 7); var ema_slow = TA.MA(records, 10); var data = "fast[-2]:" + ema_fast[ema_fast.length - 2] + " slow[-2]" + ema_slow[ema_slow.length - 2] + " fast[-1]:" + ema_fast[ema_fast.length - 1] + " slow[-1]:" + ema_slow[ema_slow.length - 1]; $.AddData(0, "MA", data); if (ema_fast[ema_fast.length - 1] < ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] > ema_slow[ema_slow.length - 2]) { return $.TaskCmd(TASK_COVER); }else if(ema_fast[ema_fast.length - 1] > ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] < ema_slow[ema_slow.length - 2]){ return $.TaskCmd(TASK_OPEN_LONG, 0.5); } return $.TaskCmd(TASK_IDLE); } function onTick2() { // 趋势系统2:MACD 具体买卖逻辑实现 // MACD var records = _C(exchanges[1].GetRecords); if(records.length < 15){ return $.TaskCmd(TASK_IDLE); } var macd = TA.MACD(records); var dif = macd[0]; var dea = macd[1]; var data = "dif[-2]:" + dif[dif.length - 2] + " dea[-2]" + dea[dea.length - 2] + " dif[-1]:" + dif[dif.length - 1] + " dea[-1]:" + dea[dea.length - 1]; $.AddData(1, "MACD", data); if (dif[dif.length - 1] > dea[dea.length - 1] && dif[dif.length - 2] < dea[dea.length - 2]) { return $.TaskCmd(TASK_COVER); }else if(dif[dif.length - 1] < dea[dea.length - 1] && dif[dif.length - 2] > dea[dea.length - 2]){ return $.TaskCmd(TASK_OPEN_LONG, 0.8); } return $.TaskCmd(TASK_IDLE); } function main() { $.Relation_Exchange_onTick(exchanges[0], onTick1); // 把 添加的第一个交易所 关联 趋势系统1 即 均线MA $.Relation_Exchange_onTick(exchanges[1], onTick2); // 把 添加的第二个交易所 关联 趋势系统2 即 MACD $.Trend(); // 不用传参数。 // 启动模板 }
  • Die Export-Funktion:

    • Befehl:
    TASK_IDLE = 0; // 空闲状态命令 TASK_OPEN_LONG = 1; // 建多仓命令 TASK_OPEN_SHORT = 2; // 建空仓命令 TASK_ADD = 3; // 加仓命令 TASK_ST = 4; // 止损命令 TASK_COVER = 5; // 平仓命令

    Diese Zustände müssen in der Strategie definiert werden, sonst kann die Vorlage sie nicht erkennen.

    • 1、 $.Relation_Exchange_onTick(p1, p2);
      Parameter p1: Exchange-Objekte, wie zum Beispiel exchanges[0] ist der erste Exchange-Objekt, der auf der Robot-Konfigurationsseite hinzugefügt wurde.
      Parameter p2: Die benutzerdefinierte Transaktionslogik-Funktion, wie z. B. die Funktion onTick1 in der Beispielfunktion, kann als Funktionsname übertragen werden.

    • 2、 $.TaskCmd(p1, p2);
      Parameter p1: Befehle, die an die Vorlage gesendet werden, um ausgeführt zu werden, z. B. TASK_OPEN_LONG // Erstellen von Mehrlagerbefehlen
      Parameter p2: Die Befehle TASK_IDLE und TASK_COVER können ohne Parameter gesendet werden. Andere Befehle müssen mit einem Zahlenparameter p2 begleitet werden, der die Anzahl der zu bearbeitenden Befehle angibt.
      Der Aufruf erfordert return $.TaskCmd(p1, p2); wird in der onTick-Funktion zurückgegeben.

    • 3、 $.Trend();
      Keine Parameter

      1. $.AddData(p1, p2, p3); // Fügen Sie den Inhalt am Ende der Tabelle in den Statusbereich ein.
        Parameter p1 : Index der zu addierenden Tabelle, 0 als erstes und 1 als zweites (vorausgesetzt, das zweite Exchange ist bereits mit $.Relation_Exchange_onTick verknüpft)
        Parameter p2: Attribute für das Hinzufügen von Inhalten, in diesem Fall werden die Daten für die Hinzufügung von Indikatoren in den Statustabellen angegeben.

      Parameter p3: String, um die gewünschten Daten in Strings zu übertragen.

  • Hier ist die Codeanalyse der Transaktionslogik-Funktion onTick1 aus dem Beispiel:

    function onTick1() { // 趋势系统1: 均线 具体买卖逻辑实现 // MA var records = _C(exchanges[0].GetRecords); // 用跟 onTick1 函数 绑定的交易所 exchanges[0] 对象 获取该交易所的K线数据。 if(records.length < 11){ // 判断K线数据是否足够长度 return $.TaskCmd(TASK_IDLE); // K线数据长度不足时,发送等待命令。程序则不执行下面的代码。 } var ema_fast = TA.MA(records, 7); // 根据长度足够的K线数据计算 周期为7 的均线数据 即: 快线 var ema_slow = TA.MA(records, 10); // 计算 慢线 var data = "fast[-2]:" + ema_fast[ema_fast.length - 2] + " slow[-2]" + ema_slow[ema_slow.length - 2] + " fast[-1]:" + ema_fast[ema_fast.length - 1] + " slow[-1]:" + ema_slow[ema_slow.length - 1]; // 处理数据 组合为 字符串 data $.AddData(0, "MA", data); // 向状态栏表格 添加数据显示 if (ema_fast[ema_fast.length - 1] < ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] > ema_slow[ema_slow.length - 2]) { // 平仓触发判断 return $.TaskCmd(TASK_COVER); // 发送平仓命令 }else if(ema_fast[ema_fast.length - 1] > ema_slow[ema_slow.length - 1] && ema_fast[ema_fast.length - 2] < ema_slow[ema_slow.length - 2]){ // 开仓触发判断 return $.TaskCmd(TASK_OPEN_LONG, 0.5); // 发送开多仓命令 } return $.TaskCmd(TASK_IDLE); // 没有任何 触发,发送等待命令。 }
  • Es läuft wie folgt:

    img

    img

  • Interaktive Funktionen der Strategie-Framework-Vorlage

    Da die Vorlage keine Funktion zum Hinzufügen von Interaktionskontrollen hat, können Interaktionskontrollen nur auf Strategien hinzugefügt werden, die auf die Vorlagevorlage des Frameworks von Antennenpolitik verweisen.
    Schritte:

    1. Wenn Sie in eine Strategie-Interaktion einen String-Typen-Control hinzufügen, wird der Name des Controls als JS_code geschrieben, wie folgt:
      img

    2. Dann klicken Sie auf das grüne Plus-Zeichen und auf Speichern.
      img

    3. Wenn die Strategie ausgeführt wird, werden alle Befehle angezeigt, die direkt kopiert werden können, um Befehle an die Strategie zu senden.
      img

    4 Das Format der Befehle ist CMD ((index, CMD_STR, amount)
    Der erste Parameter: Index ist die Börse, die betrieben wird. Die Position des Index wird als 0 geschrieben, was bedeutet, dass der erste Handel betrieben wird, und so weiter.
    Zweiter Parameter: Befehl, der in der Oberseite der Tabelle angezeigt wird.
    Der dritte Parameter: Die Anzahl der zu bearbeitenden Operationen.

    Ein Beispiel:
    img

    Die übrigen Befehle werden in gleicher Weise verwendet.

Die Transaktionslogik ist zufällig geschrieben, bitte nicht live! ↓ Wenn BUG empfiehlt, dann bitte applaudieren!^^

Related Recommendations
Comment
All comments (2)

    每次在我疑惑的时候,总能在梦总的文中找到方向,谢谢

    9 years ago

    ^_^ 哈哈 有帮助就好 ~大家一起进步!

    9 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)