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(); 변수가 없습니다.

  • 4 \(.AddData(p1, p2, p3); // 상태 칸의 끝에 내용을 추가한다. 변수 p1: 추가할 수 있는 표의 인덱스, 0은 첫 번째, 1은 두 번째 ((\).Relation_Exchange_onTick로 두 번째 거래소가 이미 연관되어 있다고 가정한다) 변수 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 다음으로, 녹색으로 표시된 ‘+‘를 누르고, ‘Save’를 누르면 아래와 같이 표시됩니다. 3.5 정책 프레임워크 템플릿

  1. 전략이 실행될 때 모든 명령은 표시되며 직접 복사하여 정책에 명령을 내립니다. 3.5 정책 프레임워크 템플릿

4 명령 형식은 CMD ((index, CMD_STR, amount) 첫 번째 변수: index는 어떤 거래소를 연동하는지 나타냅니다. index의 위치 0을 쓰면, 연동된 첫 번째 거래소를 나타냅니다. 두 번째 변수: 표 머리부분에 표시되는 명령어. 세 번째 변수: 작업할 수 있는 수

예를 들어: 3.5 정책 프레임워크 템플릿

다른 명령어들은 동일한 방법을 사용한다.

거래 논리는 임의로 작성된 것입니다. 실제 디스크를 사용하지 마십시오!