请教代码:根据标记执行下单,比如 在出现标记“买入”的情况下,下一根bar开盘买入1手合约。请问如何调用标记的内容,并作为条件进行操作。
这样应该可以,满足条件时赋值,在下个bar开始时符合条件买入
Vars
Global Bool ret(False);
Events
OnBar(ArrayRef<Integer> indexs)
{
if(买入条件)
{
ret = true;
}
}
OnBarOpen(ArrayRef<Integer> indexs)
{
If(ret)
{
Buy(1,Open);
ret = False;
}
}
非常感谢!这里的条件我向是if(标记为“买入”) 这里的标记为“买入” 如何写代码呢,前面用plot画过标记“买入”的。后面就希望只要出现这个标记,就执行买入指令,就不用重复把画标记的条件写了。可以帮忙再提示一下吗?
照你说的,单纯把画图条件代入买入条件或者把ret = true这段赋值语句写在plot下面不行吗,从图画改成具体的判断语句的话,得看你的具体想法了,单单双均线交叉那种判断的写条件很简单,但是搞那种箱体的判断就比较难了
可以是可以,但是前面画标记的条件比较复杂,plt画了还会在一定条件下清除,下面是部分代码,价差我希望在我标记为2的时候,下根bar买入,如何调用标记的数值作为条件呢?只要标记为2,下根bar我就买入。
OnBar(ArrayRef<Integer> indexs)
{
up = close>Close[4];
dw = close<Close[4];
upp = close>Close[2];
dww = close<Close[2];
Numeric barnum_up;
Numeric barnum_dw;
if(up)
{
up_count = up_count[1]+1;
//dww_count = 0;
}
Else
{
up_count = 0;
}
if(up_count > 0 and up_count<=9)
{
Plt3.text(\"up:\",High*1.01,Text(up_count));
}
if(up_count > 9)
{
if(mod(up_count,9)<>0)
{
Plt3.text(\"up:\",High*1.01,Text(mod(up_count,9)));
}
Else
{
Plt3.text(\"up:\",High*1.01,Text(9));
}
}
if(up_count == 0 and up_count[1]>0 )
{
//Numeric i;
Numeric backnum_up;
backnum_up = mod(up_count[1],9);
Commentary(\"backnum_up:\"+Text(backnum_up));
plt3.clear(\"up:\",date[backnum_up]+time[backnum_up],date+time);
}
先不要讲买卖了,你在onbar里up = close>Close[4];,这样做比较的话模拟没问题,但是实盘里会报信号闪烁的。尽管出现标志2时想买入这一点做到很简单,但是你再过几个bar后想删除标志说明你想撤掉这个买入,往往这时候可能已经成交撤不了,标志删了,但是买入持仓删不了。这意味着你来用未来数据对过去做判断,这样是不能做交易的。
多谢,对的, 你说的对的,我也想到了闪烁的问题,所以这个代码我准备都放在onbarclose里面来写的,代码还没有写完,刚刚说再2的时候买入也就是举个例子,实际上我会在其他不会出现删掉的标记上来执行交易指令的,现在其实就想 如何 调用标记,然后作为一个if()里面的条件语句,比如 当标记为“2”时,这个如果来调用表达呢,前面是用plt做的标记。我刚刚开始学习tb写代码,刚刚开始练习一个代码过程中,所以有些基本的还不是很懂,不好意思!
直接写在这段代码的下面,出现标志2说明up_count值为2,直接把Mod(up_count,9) == 2作为买入条件就行了
Bool condition = Mod(up_count,9) == 2;
If(condition)
{
ret = true;
}
多谢,这样也是可以的,其实我想单纯的知道代码能不能 调用标记的记号,bool condition = 标记为“2”;这个怎么用代码写。标记的记号能不能调用
可以的,需要函数提取你画的图
GetPlotStringValue-获取当前策略应用商品当前bar上的字符型指标值
GetPlotNumericValue-获取当前策略应用商品当前bar上的数值型指标值
GetPlotIntegerValue-获取当前策略应用商品当前bar上的整型指标值
GetPlotBoolValue-获取当前策略应用商品当前bar上的布尔型指标值
String val = GetPlotStringValue(FormulaName, \"up:\");
Commentary(\"GetPlotStringValue:\" + val);
If(val == \"2\")
{
ret = true;
}
十分感谢!