Function SimRecord(Formula,variety,OpType,ss)
'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
SimRecord = 0
Open "d:\tt.txt" For Output as #1
a=1
print #1 , a
close #1
End Function
请教一下,建立了一个vba函数,在open的时候编译有错误,提示“编译错误‘1025’,语句未结束”
请问这是什么问题呢
多谢您的回复,按照帖子上的方法测试了一下,编译没有问题,但是在回测的时候文件并没有被操作,可能是什么问题呢?
你按照1楼那个方法,自己在d盘建立好testfile.txt
然后运行没反应吗????我这边试过,写入这个文件都是没问题的
你别用自定义函数,直接复制黏贴,然后去启动这样一个操作看下呢?
[此贴子已经被作者于2016/4/7 17:41:39编辑过]
Function SimRecord(Formula,variety,OpType,ss)
'
'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
SimRecord = 0
MsgBox "测试"
set fso = CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile("d:\tt.txt", 8, false) '第二个参数 2 表示重写,如果是 8 表示追加
f.WriteLine "写入内容并换行"
f.Close
set f = nothing
set fso = nothing
End Function
这是宏的代码,单独执行宏对这个代码测试是可以的。
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);
手数:=ss;
//交易条件
开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件
EqualFlag := 0;
if MA1 = MA2 THEN
EqualFlag := 1;
//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
if HOLDING = 0 then begin
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);
end
SimRecord(1,1,1);
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
这是策略,在回测的时候,不能正确执行VBA的函数。
VBA的自定义函数要通过公式编辑器左侧的自定义函数栏进行添加的,请确认你是否是通过这个方式添加的
如图,就这样放到图表上看看情况呢
此主题相关图片如下:5v)bu$cosfjdwl0hj8(x)ec.png

SimRecord(1,1,1);
MA1:=MA(CLOSE,A);
单独测试simrecord是没问题的,但是增加下面一条语句后,就不能执行simrecord中的代码了(不弹出提示框)