老师您好!!!
感谢您传给我的定时撤单文件,我根据自己需求进行了小改动,请您帮我审阅(变动之处我已在文件中标红),成分感谢!!!!
ontimer+onorder
官方有现成的代码
复制粘贴一下就可以了
不用自己写
我这么给你写
是线性逻辑
有助于理解消化
上个帖子说了
理解后用ontimer+onorder
跨了几个域
还用到了函数和MAP
Params
Integer Lots(1);// 交易手数
Vars
Global Integer DeleteTimer(-1);//定时器
Global Bool HasSendSellEntry;//已报空单
Global Numeric MinPoint;//最小跳动点
Numeric p_SellEntry; //卖平价
Events
OnBarOpen(ArrayRef<Integer> indexs)
{
HasSendSellEntry = False;
MinPoint =MinMove * PriceScale;
}
OnBar(ArrayRef<Integer> indexs)
{
IF (BarStatus==2 && QuoteStatus == Enum_QuoteStatus_RealTime && Q_Status == Enum_QStatus_Trade && !HasSendSellEntry)
{
//我怀疑你说的市价是这个意思
p_SellEntry = Q_Last - MinPoint;
p_SellEntry = Max(Q_LowerLimit, p_SellEntry);
p_SellEntry = Min(Q_UpperLimit, p_SellEntry);
IF (A_SendOrder(Enum_Sell, Enum_Entry, Lots, p_SellEntry))
{
HasSendSellEntry = True;
DeleteTimer = CreateTimer(5 * 1000, 0, 3);
}
}
}
随手写的,没调试
剩余代码按照前面说的自己改一下
顺手解决了你重复发单
为什么你开空没有条件
直接疯狂砸盘?
谢谢,我说的市价就是这个。因为目前只是为了测试订单流程,所以随便写了一个价格
这不叫试驾
是市场价
发的限价指令限价单
😴
你太犟了
写法太拧巴、费劲
1、
IF (MyOrderS.side == Enum_Sell && MyOrderS.combOffset == Enum_Entry && (MyOrderS.status==Enum_Declared || MyOrderS.status==Enum_FillPart))
2、等1秒就是防止死循环,可以把秒数放大一点
3、就你这编码还担心效率问题?还大量CPU?
你的担心偏了,编码考虑运行效率没错,
更多时候要考虑逻辑合理性和程序健壮性,甚至采取一些冗余手段,这个优先级更高
4、续3,你把心思放在正统的逻辑和编码实现上,你都知道有风险,非要折腾这个破SID数组,我就告诉你,我认为这套函数出现就是个错误,会把类似你这样初学的人带偏,用A_SendOrder函数发单吧
我想问你
以市价发单,还担心不成,还要补3次
你是天天碰上跌停板了?
就算跌停了
你挂着就行了
为啥撤了再发?
按买1价追单也不想持仓太多,所以撤了重发啊
放弃破SID数组,用A_SendOrder函数发单。
另一个问题,总感ONORDER不能被即时触发,下周再测试一下。
我理解:ORDER配合定时器最好,用ORDER代替你程序中的WHILE就完美了。
我这样想有必要吗?可行吗?
你不控制发单
测个球
顺手给你写好了
当然应该ontimer+onorder
你不要靠感觉担心
我们用了都说好还很舒服
“当然应该ontimer+onorder”
老师有现成的例子吗?求赐!!不胜感激!!!!
我不是感觉ONORDER有问题,而是根据我的测试结果。
可能是我的测试案例有问题,所以请老师给我一个现成的案例(ontimer+onorder)。
再谢!!
自己去帮助里面找
有完整的代码
看你用TB也快半年了
你这么学习效率太低了
建议你先花个几个小时把帮助文件大致浏览一遍
看看DEMO
看看老刘老王的视频也行啊
用正统的思维去构建策略
你最近的思维是错的
老刘老王都没搞明白的玩意
不是他们不会
是所有人都不会用这个方式
我也是平时编码之余上来看看
能搭把手就搭把手
这么简单的问题浪费太多时间了
再啰嗦一句
学习要讲究方法
先把帮助文件大致浏览一遍
看看2-3个DEMO
按理说有个一两周就能掌握基本的策略构建