avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

3.5 Modelo de marco de políticas

Creado el: 2017-01-19 16:04:24, Actualizado el: 2017-10-11 10:27:27
comments   4
hits   5727

3.5 Modelo de marco de políticas


El uso de una plantilla de marco de políticas permite construir estrategias de tendencia sencillas con muy poco código, y también puede escribir estrategias de tipo de cobertura si se tiene una base de programación.

3.5 Modelo de marco de políticas

  • Cómo usarlo:

      1. Encuentre la plantilla en la plaza de estrategias, como se muestra en la imagen de arriba, y copie en el centro de control de su cuenta.
      1. Haga referencia a la barra de plantillas del marco de políticas, como se muestra a continuación:

    3.5 Modelo de marco de políticas

  • Coloque el código de la barra de la barra de la política de la barra de la barra de la política de la barra de la barra de la barra de la barra de la política de la barra de la barra de la barra de la barra de la barra de la política de la barra de la barra de la barra de la política de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la barra de la

  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();  // 不用传参数。                             // 启动模板
  }
  • La introducción de la función de exportación:

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

Estos estados deben ser definidos dentro de la política, de lo contrario la plantilla no puede ser reconocida.

  • 1、 $.Relation_Exchange_onTick(p1, p2); Parámetro p1: Objetos de intercambio, como por ejemplo exchanges[0] es el primer objeto de intercambio agregado en la página de configuración de robots. Parámetro p2: La función de lógica de transacción definida, como la función onTick1 en el ejemplo, se puede transmitir en el nombre de la función.

  • 2、 \(.TaskCmd(p1, p2); Parámetro p1 : instrucciones enviadas a la plantilla para ejecutar, por ejemplo: TASK_OPEN_LONG // Construir instrucciones de almacenamiento múltiple Parámetros p2: los comandos TASK_IDLE, TASK_COVER pueden no transmitir parámetros. Los demás comandos deben seguirse con un parámetro numérico, p2, que indica la cantidad de operaciones que se deben realizar. La llamada requiere return \).TaskCmd(p1, p2); se devuelve en la función onTick.

  • 3、 $.Trend(); Sin parámetros

  • 4 \(.AddData (p1, p2, p3); // Añade contenido al final de la tabla en la barra de estado Parámetro p1: el índice de la tabla a agregar, 0 es el primero y 1 es el segundo (suponiendo que el segundo intercambio ya esté asociado con \).Relation_Exchange_onTick) Parámetro p2: Nombre de la propiedad del contenido agregado, en este caso los datos de los indicadores agregados se muestran en la tabla de columnas de estado 。(MA y MACD)

    Parámetro p3: cadena, transfiere el dato que desea mostrar a la cadena en la posición del parámetro p3.

  • Veamos el análisis de código de la función de lógica de transacción onTick1 en el ejemplo:

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

3.5 Modelo de marco de políticas

3.5 Modelo de marco de políticas

  • #### Las funciones interactivas de la plantilla del marco de políticas

Debido a que las plantillas no tienen la función de agregar controles interactivos, los controles interactivos solo se pueden agregar en las políticas que se refieren a la plantilla de la estructura de políticas de la barra, y es más fácil de agregar. Qué hacer: 1. Añadir un control de tipo cadena a la interacción de la estrategia, el nombre del control se escribe JS_code como se muestra a continuación: 3.5 Modelo de marco de políticas

  1. Luego, haga clic en el signo añadido en verde, y haga clic en “Guardar”. 3.5 Modelo de marco de políticas

  2. Cuando la estrategia se ejecuta, todos los comandos se muestran y pueden copiarse directamente para emitir comandos a la estrategia. 3.5 Modelo de marco de políticas

4 El formato de la orden es CMD ((index, CMD_STR, amount) El primer parámetro: el index indica a qué bolsa operar, la posición del index se escribe 0, es decir, representa a la primera bolsa operada, y así sucesivamente. El segundo parámetro: La orden que aparece en la cabecera de la tabla. El tercer parámetro: la cantidad de operaciones que se deben realizar.

Por ejemplo: 3.5 Modelo de marco de políticas

El resto de comandos se usan de la misma manera.

¡La lógica de las transacciones está escrita al azar, por favor, no lo hagas! Si BUG lo sugiere, ¡aplaudid!