请教代码:根据标记执行下单,比如 在出现标记“买入”的情况下,下一根bar开盘买入1手合约。

请教代码:根据标记执行下单,比如 在出现标记“买入”的情况下,下一根bar开盘买入1手合约。请问如何调用标记的内容,并作为条件进行操作。

这样应该可以,满足条件时赋值,在下个bar开始时符合条件买入VarsGlobal Bool ret(False);EventsOnBar(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; }

回复:十分感谢!