8
Follow
1370
Followers
图表模板升级啦!
- 为了方便使用状态栏表格,使显示的数据更有条理。把图表模板增加了一个新功能。就是可以自定义在策略状态栏显示信息。新同学们不用再去配置状态栏表格对象了。
先写一下增加的导出函数,还有简介。
- TV //全局对象, 这个全局对象 负责管理 表格显示的内容,以及修改表格的内容。(这个是模板内的全局变量,引用模板的策略访问不到)
- $.TableInit = function(cols,rows) //这个导出函数是用来初始化状态栏表格的,在使用之前可以先声明 cols = [数值],rows = [数值] ,然后把变量传参。cols//列 ,rows//行。自动生成表格。并且返回TV对象,用于在引用模板的策略中写入数据。
- $.UpdateLogStatus = function() //这个导出函数 就是用来更新 状态栏表格的。 比如:var table = $.TableInit(6,5); 执行之后 table.a0 = "aaaa"; 然后再调用该导出函数:$.UpdateLogStatus() ,就可以把 "aaaa" 更新到a列,0行。
- 设置好cols 、rows 后 表格坐标大概是这样的。在使用时 直接访问 table.a0( 前提是调用过 var table = $.TableInit(6,5); ) 就可以写入到 如下表格的a0位置。 列数 最多到 "z" 。
- 注意:表格头部 ,就是坐标 a0,b0,c0... 的单元格 (表头)[这个问题已经修正,表头的数据内容可以是一样的了]。
| a | b | c | d | ... | ||
|---|---|---|---|---|---|---|
| 0 | a0 | |||||
| 1 | b1 | |||||
| 2 | d2 | |||||
| 3 | c3 | |||||
| 4 | ||||||
| 5 | ||||||
| 6 | ||||||
| 7 | ||||||
| 8 | ||||||
- 下面是在模板中的 main 函数测试代码:
//测试状态栏表格功能
var cols = 6;//列
var rows = 4;//行
$.TableInit(cols,rows);
- 继续测试一下功能:
/*测试状态栏表格功能*/
var cols = 6;//列 设置一个变量 代表 列
var rows = 4;//行 设置一个变量 代表 行
$.TableInit(cols,rows); //初始化 状态栏 会显示 各个单元格的 坐标
///*
for(var x in TV){
TV[x] = "lalala";// 全部单元格写成 lalala
}
//更新表格 显示 lalala, 表头 数据不能重复 ,否则显示不出来。
TV.a0 = "a0";
TV.b0 = "b0";
TV.c0 = "c0";
TV.d0 = "d0";
TV.e0 = "e0";
TV.f0 = "f0";//先把 表头数据写成不一样的
$.UpdateLogStatus();//更新 状态栏表格

除了表头单独写入的数据外,其他的单元格都写入了 "lalala"这个字符串。
- 那么是不是单元格只能写入字符串呢? 我们来实验一下,看看 数组、数值、对象、文本,这些数据的写入情况。
/*测试状态栏表格功能*/
var cols = 6;//列 设置一个变量 代表 列
var rows = 4;//行 设置一个变量 代表 行
$.TableInit(cols,rows); //初始化 状态栏 会显示 各个单元格的 坐标
///*
for(var x in TV){
TV[x] = "lalala";// 全部单元格写成 lalala
}
//更新表格 显示 lalala, 表头 数据不能重复 ,否则显示不出来。
TV.a0 = "a0";
TV.b0 = "b0";
TV.c0 = "c0";
TV.d0 = "d0";
TV.e0 = "e0";
TV.f0 = "f0";//先把 表头数据写成不一样的
$.UpdateLogStatus();//更新 状态栏表格
///*
//怎么在 表格里面写入数据呢?
var num = 100;
var text = "文本:测试表格文本";
var obj = {name:"对象",age:"19",sex:"girl"};
var array = ["数组",22,33,54];
TV.a1 = num;
TV.c2 = text;
TV.b3 = obj;
TV.b0 = array;
$.UpdateLogStatus();//再次更新 状态栏表格
//*/
以上是模板内的测试,下面在引用模板的策略中测试一下 模板功能:
function main(){
var i = 0;
var table = $.TableInit(4,5);
for(var x in table){//向表格写入数据
table[x] = "" + i;// 全部单元格写成 递增的数字
i++;
}
//更新表格 显示 递增的数字, 表头 数据不能重复 ,否则显示不出来。
table.a0 = "a0";
table.b0 = "b0";
table.c0 = "c0";
table.d0 = "d0";
table.a1 = "a1";
table.b1 = "b1";
table.c1 = "c1";
table.d1 = "d1";
table.a4 = "a4";
table.b4 = "b4";
table.c4 = "c4";
table.d4 = "d4";
//Log("TV:",TV);//测试是否能 访问到模板中的TV 对象
$.UpdateLogStatus();
}
Related Recommendations
Comment
All comments (16)
回测正常,但模拟盘中却报错:
ReferenceError: identifier 'indicatorsName' undefined at [anon] (__FILE__:1388) at global (__FILE__:1694) preventsyield
8 years ago
测试了一下 ,可以的 ,您这个报错 我推测:
您是不是 直接复制的代码 在新建策略里面了, 这个模板有一些界面参数的。如果是只复制代码 ,这些参数 就需要手动配置下。
模板是这个帖子:https://www.botvs.com/strategy/20967
需要点击下面的 复制按钮。
8 years ago
我是通过点击复制并在线回测按钮复制的策略模板,然后我在自己的策略中也引用了这个模板,策略参数是正常显示的。
回测结果正常,然后我新建了一个机器人 B 测试也是正常的,证明策略本身没有问题。但不知道为何,就是在机器人 A 上会报错,两个机器人的配置也都一样,甚是诡异。
8 years ago
报错 看来 应该 是 indicatorsName 这个 参数 的问题 。这个参数 是个 界面参数 。
这样 , 您再 复制 一次 这个策略 用新复制的 创建个 机器人 跑下,看是否还报错。
8 years ago
- 1




