avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

3.5 Modelo de estrutura de política

Criado em: 2017-01-19 16:04:24, atualizado em: 2017-10-11 10:27:27
comments   4
hits   5727

3.5 Modelo de estrutura de política


Usando um modelo de estrutura de estratégia, é possível construir uma estratégia de tendência simples com apenas um pouco de código e, se houver uma base de programação, escrever uma estratégia de tipo de hedge.

3.5 Modelo de estrutura de política

  • Passos para usar:

    • 1 - Procure o modelo na Praça da Estratégia, como mostrado acima, e copie-o no Centro de Controle da sua conta.

    • 2 - Escreva uma política com referência à barra de modelos do quadro de políticas, como mostrado abaixo:

    3.5 Modelo de estrutura de política

  • Coloque o código de política na barra de modelos do quadro de políticas da barra de testes ((a barra de seleção da barra de modelos do quadro de políticas da barra de seleção da barra de modelos do quadro de políticas da página já compilada na barra de políticas):

  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();  // 不用传参数。                             // 启动模板
  }
  • Introdução à função de exportação:

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

Esses estados devem ser definidos dentro da política, caso contrário, o modelo não será reconhecido.

  • 1、 $.Relation_Exchange_onTick(p1, p2); Parâmetro p1: Objetos de câmbio, como exchanges[0] é o primeiro objeto de câmbio adicionado na página de configuração do robô. Parâmetro p2: Funções de lógica de transação personalizadas, como a função onTick1 do exemplo, podem ser passadas para o nome da função.

  • 2、 \(.TaskCmd(p1, p2); Parâmetro p1 : instruções enviadas ao modelo para serem executadas, como: TASK_OPEN_LONG // construção de instruções de armazenamento múltiplo Parâmetro p2: O comando TASK_IDLE e o comando TASK_COVER podem ser enviados sem parâmetros. Os outros comandos precisam ser acompanhados por um parâmetro numérico, p2, que indica o número de operações a serem executadas. A chamada requer return \).TaskCmd(p1, p2); é retornada na função onTick.

  • 3、 $.Trend(); Sem parâmetros

  • 4 \(.AddData(p1, p2, p3); // Adicionar conteúdo ao final da tabela na barra de status. Parâmetro p1: o índice da tabela a ser adicionada, 0 é o primeiro, 1 é o segundo (assumindo que a segunda bolsa já foi associada com \).Relation_Exchange_onTick) Parâmetro p2: Nome do atributo do conteúdo adicionado, neste caso, os dados do indicador adicionado são exibidos na tabela de colunas de estado.

    Parâmetro p3: String, transfere os dados que você deseja exibir para String em p3.

  • Veja a análise de código da função onTick1 para a lógica de transação do exemplo:

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

3.5 Modelo de estrutura de política

3.5 Modelo de estrutura de política

  • #### Interações com o modelo do quadro de políticas

Como o modelo não tem a função de adicionar controles interativos, os controles interativos só podem ser adicionados em uma política que faz referência à barra de políticas do framework de templates de barra de políticas, e é mais fácil de adicionar. Passos: 1 - Adicionar um controle de tipo string na interação de estratégia, o nome do controle será JS_code, como mostrado abaixo: 3.5 Modelo de estrutura de política

2 e clique no sinal de adição verde, clique em Salvar. 3.5 Modelo de estrutura de política

  1. Quando a estratégia é executada, todas as instruções são exibidas e podem ser copiadas diretamente para emitir instruções para a estratégia. 3.5 Modelo de estrutura de política

4 O formato do comando é CMD ((index, CMD_STR, amount) O primeiro parâmetro: o index indica qual a bolsa a ser operada, a posição do index é escrita como 0, ou seja, representa a primeira bolsa a ser operada, e assim por diante. Segundo parâmetro: a ordem que aparece no cabeçalho da tabela. Terceiro parâmetro: o número de operações a serem realizadas.

Por exemplo: 3.5 Modelo de estrutura de política

Os outros comandos são usados da mesma forma.

A lógica de negociação é casual, não é realista! ☺ Se o BUG sugerir, aplauda!