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 문서를 참조하십시오.)
// 其它函数
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, 데이터 처리 모듈.
이 모든 것은 우리가 할 수 있는 일입니다.간단한 전략 프레임 워크 (스스로 변경할 수 있고 확장할 수 있습니다)
이 전략 프레임 워크는 기본적으로 이전 학습 내용입니다. 모든 측면의 코드가 결합되어 있습니다. 코드를 자세히 읽으면 익숙해집니다. 직접 실행할 수 있지만 동작을 유발하는 코드를 작성하지 않고 자체 확장할 수 있습니다. 다음 장에서는 이 전략 프레임워크를 확장하여 전략이 실제로 실행될 수 있도록 노력하겠습니다.
케빈이 모든 것은 단지 내용을 배우는 것뿐만 아니라 이러한 태도를 배우는 것입니다.