avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

3.5 Templat Rangka Kerja Dasar

Dicipta dalam: 2017-01-19 16:04:24, dikemas kini pada: 2017-10-11 10:27:27
comments   4
hits   5727

3.5 Templat Rangka Kerja Dasar


Dengan menggunakan templat kerangka strategi, anda boleh membina strategi jenis trend yang mudah dengan hanya sedikit kod, dan anda boleh menulis strategi jenis perlindungan jika anda mempunyai asas pengaturcaraan.

3.5 Templat Rangka Kerja Dasar

  • Langkah-langkah untuk menggunakannya:

    • Cari templat ini di Lapangan Strategi seperti yang ditunjukkan di atas, dan salin ke Pusat Kawalan Akaun anda.

    • 2.. Buat rujukan pada tetingkap templat kerangka dasar seperti yang ditunjukkan di bawah:

    3.5 Templat Rangka Kerja Dasar

  • Kod dasar untuk tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan tetapan

  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();  // 不用传参数。                             // 启动模板
  }
  • Fungsi eksport:

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

Keadaan ini mesti ditakrifkan dalam strategi, jika tidak, templat tidak dapat dikenali.

  • 1、 $.Relation_Exchange_onTick(p1, p2); Parameter p1: Objek pertukaran, seperti exchanges[0] ialah objek bursa pertama yang ditambahkan ke halaman konfigurasi robot. Parameter p2: Fungsi logik transaksi tersuai seperti fungsi onTick1 dalam contoh ini, boleh dihantar ke dalam nama fungsi.

  • 2、 \(.TaskCmd(p1, p2); Parameter p1: arahan yang dihantar ke templat untuk dilaksanakan, seperti: TASK_OPEN_LONG // membina arahan multi-simpanan Parameter p2: Apabila menghantar perintah TASK_IDLE, TASK_COVER boleh tidak menghantar parameter. Perintah lain perlu diikuti dengan parameter kuantiti iaitu p2, yang menunjukkan jumlah yang akan dikendalikan. Panggilan memerlukan return \).TaskCmd(p1, p2); dikembalikan dalam fungsi onTick.

  • 3、 $.Trend(); Tiada parameter

  • 4 \(.AddData(p1, p2, p3); // Tambahkan kandungan ke bahagian akhir status tab. Parameter p1: Indeks bagi jadual yang akan ditambah, 0 sebagai yang pertama, 1 sebagai yang kedua (dengan syarat bahawa \).Relation_Exchange_onTick telah dikaitkan dengan pertukaran kedua) Parameter p2: Nama sifat untuk menambah kandungan, dalam contoh ini, data penunjuk penambahan dipaparkan dalam jadual tetingkap status.

    Parameter p3: String, menukar data yang ingin dipaparkan ke dalam string yang dihantar ke dalam parameter p3 ini.

  • Lihat analisis kod fungsi logik transaksi onTick1 dalam contoh:

  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);               // 没有任何 触发,发送等待命令。
  }
  • #### Menunjukkan:

3.5 Templat Rangka Kerja Dasar

3.5 Templat Rangka Kerja Dasar

  • #### Fungsi interaktif templat bingkai dasar

Oleh kerana templat tidak mempunyai fungsi untuk menambah kawalan interaktif, kawalan interaktif hanya boleh ditambahkan pada dasar yang merujuk pada tetingkap templat kerangka tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap tetingkap. Langkah seterusnya: 1. Tambah satu kawalan jenis senar ke dalam interaksi strategi, nama kawalan akan ditulis JS_code seperti di bawah: 3.5 Templat Rangka Kerja Dasar

2 , kemudian klik Tambah dalam warna hijau, klik Simpan . 3.5 Templat Rangka Kerja Dasar

  1. Apabila strategi dijalankan, semua arahan akan dipaparkan dan boleh disalin secara langsung untuk memberi arahan kepada strategi. 3.5 Templat Rangka Kerja Dasar

4 , Format arahan adalah CMD ((index, CMD_STR, amount) Parameter pertama: indeks menunjukkan mana satu bursa yang dikendalikan, kedudukan indeks ditulis 0, yang bermaksud operasi bursa pertama, dan sebagainya. Parameter kedua: Perintah yang dipaparkan di kepala borang. Parameter ketiga: Bilangan operasi yang akan dijalankan.

Contohnya: 3.5 Templat Rangka Kerja Dasar

Perintah lain menggunakan kaedah yang sama.

Logik perdagangan ditulis secara tidak sengaja, jangan main-main! ☺ Selamat bertepuk tangan jika BUG mencadangkan!^^