在没有收完的实时Bar上(1小时周期),走了30分钟的时候达到买入条件了,我设置的buy(1, open) ,以open买入,但是开仓委托价格和成交价格都不是这根小时Bar的开盘价,而是开仓时候的最新价。模拟交易测试了好几次都是这样,同样用close\High\Low设置为开仓价也是这个情况,查询实际成交记录都是盘口的价格。请问是这样吗?我之前理解的close\High\Low的值在实时变动,open是每根Bar固定的值。现在通过测试重新理解:用buy函数开仓这些Open\close\High\Low都是每个tick上的行情数据吗?如果不是那这个情况怎么解释呢。
Print("open:" + Text(open));
Print("High:" + Text(High));
Print("Low:" + Text(Low));
Print("close:" + Text(close));
我用Print在控制台上查看这根Bar的事实行情,也不是每个Tick都在变动,open一直保持不变是个固定值。可是开仓buy(1, open)用这个open就不是固定值了,我这样描述老师能看明白是什么意思吗?麻烦老师给解释一下我的疑惑。谢谢
您好!这个算是TB量化运行机制的一个入门问题,我建议您把量化零基础的视频好好学习一遍。这里简单给你说明一下,TB策略的图表信号是由用户在公式中的指令发出的,信号的要素完全由用户指定(系统会根据实际K线做符合逻辑的调整,比如价格不超出K线最高最低的范围等),这里面就有非常大的灵活性,也可能导致错误,取决于策略的编写者。而图表信号符合实盘交易发单条件时,能以什么价格成交,这是由当时的行情决定的。
一个策略编写正常的情况下,策略的信号一定会符合实际交易的逻辑,这样图表信号和实际交易基本是一致的,误差就是交易的滑点。
而编写不正确的策略,就会相差十万八千里,表现形态也各种各样。所以,建议您还是先看看教程,对这个有了一定理解,再来讨论。
假入不考虑策略的问题,就单独探讨buy open这个买价的情况
我也有这个疑惑 ,既然buy(1, open) 不是open价成交而是以最新价成交, 那么传这个open有什么作用呢,那么问题又来了,怎么记录这个真实成交的价格呢
buy(1,open)
你是在图上标一个open买,表示你想要用open成交
实际open能不能成交,看你对策略的理解了
发单按什么价格发,就是看你的设置
开委托偏移就是按偏移
不开就是按open
老师,我刚才又测试了几遍,把委托偏移10跳改为0跳,实际成交价格还是最新价,不是open价。实时bar中,这个open买和lose\High\Low买都是最新价委托和成交。只是这个bar成为历史的时候,图表显示的是对应bar的open\lose\High\Low价。
设置了委托偏移吧?
buy(1,open) 是图表上的open
委托偏移按最新价偏移开始下
老师,委托偏移按最新价偏移开始下,那么不设委托偏移就是按最新价不偏移下单,那么这些buy open\lose\High\Low在实时bar中也没什么意义和区别吧。只是成为历史bar的时候会标在图标上对应的open\lose\High\Low为buy的价格对吗?
假入不考虑策略的问题,就单独探讨buy open这个买价的情况
buy是图表信号,会按你写的价格标记在图上
当你映射到账户下单时,如果你开了映射,软件自动按最新价偏移过去了。
理论上讲,你开了偏移图表上的价格就不是实际下单价格,图表体现在回测和信号标记上。