3.3 전략 절차의 일반적인 구조, 전략 프레임워크

저자:작은 꿈, 2016-11-12 14:36:54로 제작, 2019-08-01 09:23:53로 업데이트

전략 절차의 일반적인 구조, 전략 프레임워크


  • 전략의 일반적인 구조

    2.6 퓨처스 섹션에서 우리는 CTP 상품 퓨처스의 일반적인 절차 구조 (투자 방식) 를 처음 사용했습니다.

function MainLoop(){ //  处理具体工作的函数
  // deal Main task
}
function main() {
      var status = null;
      while(true){
          status = exchange.IO("status");      //  调用API 确定连接状态
          if(status == true){                 //  判断状态
              LogStatus("已连接!");
              MainLoop();                      //  连接上 交易所服务器后,执行主要工作函数。
          }else{                               //  如果没有连接上 即 exchange.IO("status") 函数返回 false
              LogStatus("未连接状态!");         //  在状态栏显示 未连接状态。
          }
          Sleep(1000);                         //  需要有轮询间隔, 以免访问过于频繁。
      }
}

디지털 화폐 전략의 일반적인 구조는 무엇입니까?

//other functions
function f1(){
    //...
}
//...
function loop(){
    // do somethings
    f1();
    //...
    //API...
}
function main(){
    //初始化
    //...
    
    while(true){
        loop();
        Sleep(1000);
    }
}

그리고 다른 동료들은 이렇게 묻습니다. "구조는 컨설팅이 가능한가, 아니면 동시에 실행되는 장치가 있습니까?"
발명자 양적 플랫폼은 API를 일부 포괄하여 동시 생성 메커니즘을 지원합니다. 아래 그림과 같이: (API 문서를 참조하십시오.)

img

  • 모의 멀티태스킹 모드

    코드 아키텍처: (나 자신도 앵무새입니다. 아키텍처는 Z 크기를 배우는 것입니다. 오류가 있다면 알려주세요.)
// 其它函数
function buy(){
    Log("buy");
}
//任务生成器构造函数
function MakeTasksController(){
    var TasksController = {};
    TasksController.tasks = [];  // 任务数组
    TasksController.initTask = function(cmd){ // 初始化要执行的任务参数、设置
        var task = {
            //各种任务 数据
            cmd : 0,     // 命令: 0:waiting , 1: buy 
            state: 0,    // 状态: 0:uncomplete  1: complete
            //...
        };
        task.cmd = cmd;
        //task.XX  初始化
        TasksController.tasks.push(task);   // 存入 任务数组
    };
    TasksController.DealWithTasks = function(){  // 处理  tasks 数组内 储存的task
        _.each(TasksController.tasks, function(task){  // 迭代 执行全部任务
            // 处理任务task ,保存每个任务的状态数据,直到任务完成。在处理任务的具体代码中 不做死循环处理。 
            // 即每个任务不独占时间。下次轮询 读取task 数据继续任务。从而实现模拟多任务模式。 
            // ...
            if(task.cmd === 1){
                buy();
                task.state = 1; // 任务执行完成就调用 赋值语句 给task.state 标记赋值
            }
        });
    };
    TasksController.CheckTask = function(){
        var process = 0;
        _.each(TasksController.tasks, function(task){
            if(task.state === 1){
                // 任务已经完成,弹出完成的任务。
                Log("task.cmd:", task.cmd, "已完成!");
            }else{
                process++;
            }
        });
        if(process === 0){
            TasksController.tasks = [];    // 清空 任务数组
        }
    };
    return TasksController;
}
function main(){
    var tasksController = MakeTasksController();
    var count = 0;
    while(true){
        //触发新建任务,例子。
        if(count === 100){
            tasksController.initTask(1);   //  初始化任务,   buy 任务  即  1 
            //...  初始其它任务。
        }
        //...      
        tasksController.DealWithTasks();  // 处理任务
        tasksController.CheckTask();      // 检查任务处理
        count++;
        Sleep(200);   //  任务很多的时候 可以适当减小 Sleep 的参数值
    }
}
  • 어떤 모듈이 완전한 거래 시스템으로 구성되어야 할까요?

    1, 수익 통계 모듈. 2, UI 인터페이스, 데이터 피드백, 상태 표시. 3, 상호작용 모듈. 4, 그래프 모듈. 5. 전략적 논리 (특정 거래 알고리즘) 6, 거래 모듈. 7, 데이터 처리 모듈.

    이 모든 것은 우리가 할 수 있는 일입니다.간단한 전략 프레임 워크 (스스로 변경할 수 있고 확장할 수 있습니다)

    이 전략 프레임 워크는 기본적으로 이전 학습 내용입니다. 모든 측면의 코드가 결합되어 있습니다. 코드를 자세히 읽으면 익숙해집니다. 직접 실행할 수 있지만 동작을 유발하는 코드를 작성하지 않고 자체 확장할 수 있습니다. 다음 장에서는 이 전략 프레임워크를 확장하여 전략이 실제로 실행될 수 있도록 노력하겠습니다.


더 많은

케빈이 모든 것은 단지 내용을 배우는 것뿐만 아니라 이러한 태도를 배우는 것입니다.

이 모든 것이 우리 삶에 영향을 미치고 있습니다.