VBA不支持多线程,但是你可以通过定时器的方式,通过定义不同的定时器,来实现多线程方式的运行。
通过VBA来控制公式系统的运行,效率方式并不会得到提高,反而会下降,如果你是在不追求速度的情况,可以考虑使用STKINDI函数来控制公式的运行,取到计算结果后,用VBA再来下单,
示例
Set Formula = marketdata.STKINDI("if08","zj","ma(5,10,20,60)",0,0) '调用中金所IF08合约的1分钟的MA移动平均线指标,参数依次是5,10,20,60
mgbox Formula.GetBufData("ma3",924) '显示第925根k线上的MA3指标线数值
VBA不支持多线程,但是你可以通过定时器的方式,通过定义不同的定时器,来实现多线程方式的运行。
能否给个链接,举例来说明一下。
通过VBA来控制公式系统的运行,效率方式并不会得到提高,反而会下降,如果你是在不追求速度的情况,可以考虑使用STKINDI函数来控制公式的运行,取到计算结果后,用VBA再来下单,
示例
Set Formula = marketdata.STKINDI("if08","zj","ma(5,10,20,60)",0,0) '调用中金所IF08合约的1分钟的MA移动平均线指标,参数依次是5,10,20,60
mgbox Formula.GetBufData("ma3",924) '显示第925根k线上的MA3指标线数值
不知道怎么讲,我的信号只要求每1分钟(或者每5、15分钟)级别轮询一次,需要的数据也就是前一个K线的(high,low,close,open,一条我设定的MA数据,和一个我修改过的公式指标内的两个小指标数据) 就OK了, 然后发信号给我前台的GUI,GUI再根据上面一些按钮的设置,判断要不要开始委托,判断信号我希望在1到2秒就完了,因为委托到成交也需要2到3秒钟时间。委托也不是个简单开仓,而是分获利了结和开新仓的(两者内部逻辑不同),而且还要手动修改委托价格。开完新仓成交以后, 止损和止盈要马上开始运行,直到或者亏损退出或者盈利退出。根据我提供的需求,斑竹你觉得我应该如何设计比较合适?
我觉得我给你的例子完全可以说明问题,目前明显你是对VBA一窍不通,建议你书店里买本VBA的书先自学一下,等开发时遇到实际问题再来发帖请教,或者我们帮你有偿进行开发
这个需求不需要多线程,使用定时器或者使用价格订阅方式就可以实现,公示系统提供信号,VBA根据信号来实现开平仓和止盈止损管理。
VBA不支持多线程,但是你可以通过定时器的方式,通过定义不同的定时器,来实现多线程方式的运行。
通过VBA来控制公式系统的运行,效率方式并不会得到提高,反而会下降,如果你是在不追求速度的情况,可以考虑使用STKINDI函数来控制公式的运行,取到计算结果后,用VBA再来下单,
示例
Set Formula = marketdata.STKINDI("if08","zj","ma(5,10,20,60)",0,0) '调用中金所IF08合约的1分钟的MA移动平均线指标,参数依次是5,10,20,60
mgbox Formula.GetBufData("ma3",924) '显示第925根k线上的MA3指标线数值
VBA可以用于高频模式,难道用STKINDI的方式会降低速度吗?那如何在VBA中使用指标可以提高速度呢?
使用VBA提高速度,在于你需要脱离指标的运行机制,全部算法都在VBA中实现