avatar of 发明者量化-小小梦 发明者量化-小小梦
フォロー ダイレクトメッセージ
4
フォロー
1271
フォロワー

3.5 ポリシーフレームワークテンプレート

作成日:: 2017-01-19 16:04:24, 更新日:: 2017-10-11 10:27:27
comments   4
hits   5727

3.5 ポリシーフレームワークテンプレート


策略フレームワークのテンプレートを使用すると,簡単なトレンド型策略をごくわずかなコードで構築できます. プログラミングの基礎があれば,また,策略のヘッジタイプを書き出すこともできます.

3.5 ポリシーフレームワークテンプレート

  • 使用手順:

      1. 上の図のように,戦略広場からこのテンプレートを検索し,自分のアカウントのコントロールセンターにコピーしてください.
    • 2 策略を記述する際の引用は,以下のように策略フレームワークのテンプレート欄に表示されます.

    3.5 ポリシーフレームワークテンプレート

  • テスト欄のポリシーフレームワークのテンプレート欄のポリシーコードを貼り付けます:

  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();  // 不用传参数。                             // 启动模板
  }
  • 輸出関数の説明:

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

ポリシーの内部では,これらの状態が定義されなければなりません. そうでなければ,テンプレートは認識できません.

  • 1、 $.Relation_Exchange_onTick(p1, p2); 参数p1: 取引所オブジェクト,例えばexchanges[0] は,ロボットの設定ページに追加された最初の取引所オブジェクトです. 参数p2: onTick1の関数のように,定義されたトランザクションロジック関数は,関数名に表示される.

  • 2、 \(.TaskCmd(p1, p2); パラメータp1: TASK_OPEN_LONG // 複数倉庫命令の作成など,テンプレートに実行するコマンドを送信 参数p2:TASK_IDLE,TASK_COVERコマンドを送信する際は,参数を送信しないことが可能です.他のコマンドは,操作する数を示す数値参数であるp2を伴う必要があります. 呼び出しには return \).TaskCmd ((p1, p2)) が必要です. onTick関数で返されます.

  • 3、 $.Trend(); パラメータなし

    1. \(.AddData ((p1, p2, p3); // ステータスボックスの表の末尾にコンテンツを追加する 参数 p1 : 追加する表のインデックスで,0は最初の,1は2番目の ((\).Relation_Exchange_onTickで2番目の取引所が関連付けられていると仮定します) パラメータp2: 添付内容の属性の名前,この例では,添付指標のデータは,ステータスの表に表示されます.

    参数p3: 文字列,表示したいデータを文字列に変換してp3の参数位置に転送する.

  • onTick1のコード解析を例として見てみましょう.

  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);               // 没有任何 触发,发送等待命令。
  }
  • #### 画面に表示されるのは

3.5 ポリシーフレームワークテンプレート

3.5 ポリシーフレームワークテンプレート

  • #### ポリシーのフレームワークの模板のインタラクティブ機能

テンプレートにはインタラクティブ コントロールの追加機能がないため,インタラクティブ コントロールは,ポリシー フレームワークのテンプレート を参照したポリシーにのみ追加できます. ステップ: 1 戦略インタラクションに文字列型のコントロールを追加すると,そのコントロールの名前は JS_code と書きます. 3.5 ポリシーフレームワークテンプレート

2 緑の”追加”をクリックすると”保存”が表示されます. 3.5 ポリシーフレームワークテンプレート

  1. 策略が実行される時,すべてのコマンドが表示され,直接コピーされ,策略に命令を発行する. 3.5 ポリシーフレームワークテンプレート

4 命令の形式は CMD ((index, CMD_STR, amount) である 最初のパラメータ: index は,操作する取引所を指し,index の位置は 0 と書きます.つまり,操作する最初の取引所を意味する. 2番目のパラメータ: 表の頭部に表示されるコマンド 3番目のパラメータ:操作する数.

例えば 3.5 ポリシーフレームワークテンプレート

他のコマンドは同じ方法で使う.

取引のロジックは随意に書いてあるので,実盤には入れないで下さい.