3.5 Templat kerangka strategi

Penulis:Penemu Kuantitas - Mimpi Kecil, Dibuat: 2017-01-19 16:04:24, Diperbarui: 2017-10-11 10:27:27

3.5 Templat kerangka strategi


Dengan menggunakan template strategi framework, strategi tipe tren sederhana dapat dibangun dengan hanya sedikit kode, dan jika ada dasar pemrograman, strategi tipe hedge juga dapat ditulis.

3.5 策略框架模板

  • Cara Menggunakannya:

    • 1. Jika Anda menemukan template ini di Strategy Square di gambar di atas, maka Anda dapat menyalin template ini ke Control Center akun Anda.
    • 2. Mengutip template framework untuk membuat kebijakan, seperti gambar di bawah ini:

    3.5 策略框架模板

  • Menempelkan kode kebijakan pada template template kerangka kebijakan untuk pengujian (klik pada template kerangka template kerangka kebijakan untuk template yang sudah ditulis pada halaman kebijakan):

    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 ekspor:

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

    Dalam kebijakan, kondisi ini harus didefinisikan, jika tidak template tidak dapat dikenali.

    • 1, $.Relation_Exchange_onTick ((p1, p2)); Parameter p1 : objek bursa, misalnya exchanges[0] yaitu halaman konfigurasi robot Objek bursa pertama yang ditambahkan. Parameter p2 : Fungsi logika transaksi khusus seperti pada contoh pada onTick1 dapat ditransfer dengan nama fungsi.

    • 2、 \(.TaskCmd ((p1, p2); Parameter p1 : mengirim perintah yang akan dijalankan pada template, seperti: TASK_OPEN_LONG // membangun perintah multi-hack Parameter p2: TASK_IDLE, TASK_COVER tidak dapat mengirim parameter; perintah lain harus mengikuti parameter kuantitatif yaitu p2, yang menunjukkan jumlah yang akan dilakukan. Panggilan membutuhkan return \).TaskCmd ((p1, p2)); dikembalikan dalam fungsi onTick.

    • 3, $.Trend ((); Tidak ada parameter

    • 4、 \(.AddData ((p1, p2, p3); // Ditambahkan ke bagian akhir tabel pada bar status. Parameter p1: indeks dari tabel yang akan ditambahkan, 0 untuk yang pertama, 1 untuk yang kedua (asalkan menggunakan \).Relation_Exchange_onTick telah menghubungkan bursa kedua) Parameter p2 : nama atribut yang ditambahkan, dalam hal ini data indikator yang ditambahkan ditampilkan dalam tabel status tabl;; (MA dan MACD)

    Parameter p3: String, mengubah data yang ingin ditampilkan menjadi string yang ditransfer ke posisi parameter p3.

  • Lihatlah analisa kode untuk fungsi onTick1 dalam contoh logika transaksi:

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

    3.5 策略框架模板

3.5 策略框架模板

  • #### Fungsi interaktif dari template kerangka kerja strategi

Karena templat tidak menambahkan fungsi kontrol interaktif, maka kontrol interaktif hanya dapat ditambahkan dengan mengacu pada kebijakan templat templat kerangka kerja.Langkah-langkah: 1. Pada interaksi kebijakan, tambahkan sebuah kontrol dengan tipe string, dan nama kontrol akan ditulis JS_code seperti berikut:3.5 策略框架模板

2, lalu klik Tambah warna hijau, dan klik Simpan.3.5 策略框架模板

3. Semua perintah yang ditampilkan saat kebijakan berjalan dapat disalin langsung dan dikirimkan ke kebijakan.3.5 策略框架模板

4, format perintah adalah CMD ((index, CMD_STR, amount) Parameter pertama: indeks menunjukkan mana bursa yang dioperasikan, posisi indeks tertulis 0, yang mewakili operasi bursa pertama, dan sebagainya. Parameter kedua: perintah yang ditampilkan di bagian atas tabel. Parameter ketiga: jumlah operasi yang harus dilakukan.

Contoh:3.5 策略框架模板

Perintah lainnya menggunakan metode yang sama.

Logika transaksi ditulis secara acak, jangan main-main!


Informasi lebih lanjut

Ritual Yang YangSetiap kali saya meragukan, saya selalu menemukan petunjuk dalam teks mimpi, terima kasih

Penemu Kuantitas - Mimpi Kecil^_^ Ha-ha. Bantuan itu bagus. Ayo maju!