和老白一起玩转JavaScript -- 创造一个会做买卖的小伙伴(7)好用的工具一定要知道为什么好用!

Author: 小小梦, Created: 2017-03-16 12:29:51, Updated: 2017-10-11 10:37:54

                                  // 把 AccountToTable 引用传递给 导出函数 (接口)

// 测试用 主函数 function main() { var p = $.NewPositionManager(); p.OpenShort(“MA701”, 1); p.OpenShort(“MA705”, 1); Log(p.GetPosition(“MA701”, PD_SHORT)); Log(p.GetAccount()); Log(p.Account()); Sleep(60000 * 10); p.CoverAll(); LogProfit(p.Profit()); Log($.IsTrading(“MA701”)); // 多品种时使用交易队列来完成非阻塞的交易任务 var q = $.NewTaskQueue(); q.pushTask(exchange, “MA701”, “buy”, 3, function(task, ret) { // 最后一个参数 function(task,ret){…} 就是一个 匿名函数作为回调函数传入任务对象task Log(task.desc, ret) // 回调函数中 输出了该任务的描述, 和任务完成的返回值,这些是预设,并不会马上执行。 if (ret) { q.pushTask(exchange, “MA701”, “closebuy”, 1, 123, function(task, ret) { // 在第一个压入队列的任务的回调函数中,压入匹配的任务到任务队列。用来实现配对交易。 // 只要第一个任务交易完成就会触发回调函数中的匹配操作。 Log(“q”, task.desc, ret, task.arg) }) } }) while (true) { // 在空闲时调用poll来完成未完成的任务 q.poll() Sleep(1000) } }


- #### 通篇看完,我想你们应该对这个模块有了一定的了解。

这个模块代码分两种 模式:
- 1、单品种的交易模式

  这个只能用于一个品种的商品期货合约的买卖处理,整体流程是线性的。
  
- 2、多品种模拟并发交易模式:

  这个就可以用来做多品种的策略,比如多品种的海龟交易法。(多品种的好处就是分散资金,一定程度上控制风险。)
  
  这个模式的设计思路就是遇到任何错误都不等待重试,马上返回对应的错误码,这样多个任务执行时,虽然程序执行流程还是线性的。但是都已很快的速度执行,不独占过多时间,类似CPU并发机制。并且各个任务都有自身的变量寄存数据结构,在错误返回后再次执行的时候会继续任务的执行直到完成,模拟出并发执行的效果。适合用于多品种策略系统使用(各品种交易在时间序列上的互相影响降至较低程度)。
  
  并且使用了回调函数,在任务完成时可以自动触发一些设计好的代码。
  
  这种思路很值得学习。
  
下一篇,我们会用这些JS代码创造出一个真正的策略。


#### 先写到这,欢迎读者给我留言!提出建议和意见,如果感觉好玩可以分享给更多热爱程序热爱交易的朋友 
https://www.fmz.com/bbs-topic/737

### 程序员 littleDream 原创

More