我用A函数发单返回F,但是消息中心并无报错记录,这是为什么呢?
或者请老师告诉我:A函数发单失败的原因有哪些,我来一个个排查,谢谢!
IF (A_SendOrderEx(Enum_Sell, Enum_Entry, Lots, Q_Last-MinDiff*SellJs,OrderIds))//追空(市价-点)
{
SellJs=SellJs+1;//开空单成交时重置为0
}
Else//报单出错
{
PlotString("追空单报错","F",O,Yellow);
}
Print("追空次数="+TEXT(SellJs)+ "/时间="+TEXT(CurrentTime));
Print("追空价="+TEXT(Q_Last-MinDiff*SellJs));
😭
你脑子太快了
跟不上很正常
你脑子太快了
跟不上很正常
啊
我终于知道你的问题了
打开k线不等于访问策略单元的内容!
打开k线相当于重新新建一个新的图表然后跑公式!
运行路径完全不一样的!!!!
你以为的打开k线是在读这个策略单元生成的print内容
其实不是的,等于是克隆一个完全一样的人,虽然性格身材器官完全一样,但是这个克隆人有自己的人生!不能通过观察这个克隆人的人生去定义母体的人生!
谢谢老师费心讲解!!!
PRINT的问题,我改用日志记录去解决了。
我现在问的已不是PRINT的问题了,想问:A函数发单失败的原因有哪些?你在视频中准备讲后来又叉开了
视频里其实讲了
第一 没有开启自动交易
第二 不是最新的实时bar
你的问题其实是,订单是无图表策略单元发出的,然后你打开k线,发现k线图的控制台没有输出print,所以觉得结构有问题。
其实图表的控制台输出的是图表的内容,图表k线没有启动自动交易,那就执行不了print
老刘
你终于明白了👍
辛苦了
太不容易了
他主要还是编码习惯问题
好的逻辑可以避免很多已知未知的问题
谢谢!!!
策略单元按A函数发单,图表k线不发单(因为没有启动自动交易)所以不执行IF(A)下的print。
设计者的神思路,也可能是出于全盘考虑不得不选择如此曲折离奇的设计.
对于使用者,我们只要记住就好了,再次感谢!!!
这个设计是合理且有必要的
你要系统的梳理一下编码逻辑和习惯
如果觉得我几次回复比较刻薄不开心
你说一下
后期不打扰了
A函数大多都会诸如此类的反复提醒:
该函数直接发单,不经过任何确认,并会在每次公式计算时发送,一般需要配合着仓位头寸进行条件处理,在不清楚运行机制的情况下,请慎用。
注:不能使用于历史测试,仅适用于实时行情交易。
所以编码逻辑是
1、过滤历史补充行情数据(特定情况还需要过滤集合竞价)
1、多数据源处理好数据对齐(官方有推荐方案 特定场景需要自己设计算法 比如我近期刚开发完成的股指期权策略 数据延时3秒需要自己设计新算法)
2、触发开仓条件
3、仓位头寸计算 即资金要够 或 在设定的风险度以内
4、检验行情状态 类高频:这种状况图表交易函数局限性太大 为了兼顾回溯和实盘 非实时用图表函数 实时用账户函数; 趋势、波段:两者同步 无图表交易和图表观察 做到实盘和回溯所见即所得
在符合以上条件下
发单(控制报单次数)
以及后续的撤单重发逻辑控制
大多时候
策略逻辑并不复杂
逻辑控制都是细节
老师,您多虑了😆