我是金字塔的用户,想利用海龟进行一下模拟程序化交易,但实现不了这个功能,打开这个公式,非常复杂,得加上几个语句才能实现,但试了几次,都无法完成,也请了一些程序员,也无法完成,请老师给指点迷津,多谢谢了。
多少费用?另外,海龟模型信号发出提示后如何加上提示音?请教了
VARIABLE:dayCount=1,PositionCount=1,SellSign=0;
VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0;
VARIABLE:N=0;
MA1:MA(C,5);
MA3:MA(C,10);
M:=MA(TR,20);
BUYHHV:=HHV(H,20);
SELLLLV:=LLV(L,10);
ss:n,linethick0;
IF BARPOS>=21 THEN BEGIN
IF BARPOS=21 THEN
N:=M;
IF DayCount=6 OR BARPOS=21 THEN BEGIN{5天调整N值}
N:=(19*N+TR)/20;{计算N值}
DayCount:=2;
END
DayCount:=DayCount+1;
EntPoint:=ENTERBARS+1;
IF EntPoint=EntAndExitSign THEN BEGIN{说明STOP指令买进头寸成功}
PositionCount:=PositionCount+1;{头寸计数}
SellSign:=True;{开始以STOP卖出,如果达到指定的价格}
END
IF PositionCount=1 THEN BEGIN{第一头寸}
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
开1:BUY(1,HOW,STOP,BUYHHV);{在20日新高STOP指令买进}
END
IF PositionCount=2 THEN BEGIN{如到第二头寸}
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
开2:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第一头寸)+0.5个N以STOP指令买进}
END
IF PositionCount=3 THEN BEGIN{如到第三头寸}
HOW:=CASH(0)*0.01/N;
开3:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第二头寸)+0.5个N以STOP指令买进}
END
IF PositionCount=4 THEN BEGIN
HOW:=CASH(0)*0.01/N;
开4:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);
END
IF SellSign=True THEN BEGIN
ExitPoint:=EXITBARS+1;
IF ExitPoint=EntAndExitSign THEN BEGIN {说明卖出成功}
PositionCount:=1;{头寸计算复原}
SellSign:=False;
END
IF ENTERPRICE-2*N then SELL(1,100%,STOP,SELLLLV);{退出离盈利头寸}
ELSE
SELL(1,100%,STOP,ENTERPRICE-2*N);{退出亏损头寸}
END
END;
帮助文档写有:
播放一首指定位置的一个声音文件,可以是MP3或者WAV等格式.
用法:PLAYSOUND(COND,PATH),当最后一个周期得COND条件成立时,播放指定位置PATH的一个声音文件
声音文件可以是绝对路径,也可以只是一个声音文件,只有一个文件名时用户需要将它安放在DOCUMENT目录.
例如:PLAYSOUND(CLOSE>OPEN,'D:\ONTIFY.MP3'),当最后一个周期为阳线时播放D:\ONTIFY.MP3位置的声音文件.
所属函数组:特色函数
VARIABLE:dayCount=1,PositionCount=1,SellSign=0;
VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0;
VARIABLE:N=0;
MA1:MA(C,5);
MA3:MA(C,10);
M:=MA(TR,20);
BUYHHV:=HHV(H,20);
SELLLLV:=LLV(L,10);
ss:n,linethick0;
IF BARPOS>=21 THEN BEGIN
IF BARPOS=21 THEN
N:=M;
IF DayCount=6 OR BARPOS=21 THEN BEGIN{5天调整N值}
N:=(19*N+TR)/20;{计算N值}
DayCount:=2;
END
DayCount:=DayCount+1;
EntPoint:=ENTERBARS+1;
IF EntPoint=EntAndExitSign THEN BEGIN{说明STOP指令买进头寸成功}
PositionCount:=PositionCount+1;{头寸计数}
SellSign:=True;{开始以STOP卖出,如果达到指定的价格}
END
IF PositionCount=1 THEN BEGIN{第一头寸}
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
开1:BUY(1,HOW,STOP,BUYHHV);{在20日新高STOP指令买进}PLAYSOUND(1,'C:\WINDOWS\Media\ringin.wav');END
IF PositionCount=2 THEN BEGIN{如到第二头寸}
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
开2:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第一头寸)+0.5个N以STOP指令买进}PLAYSOUND(1,'C:\WINDOWS\Media\ringin.wav');END
IF PositionCount=3 THEN BEGIN{如到第三头寸}
HOW:=CASH(0)*0.01/N;
开3:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第二头寸)+0.5个N以STOP指令买进}PLAYSOUND(1,'C:\WINDOWS\Media\ringin.wav');END
IF PositionCount=4 THEN BEGIN
HOW:=CASH(0)*0.01/N;
开4:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);PLAYSOUND(1,'C:\WINDOWS\Media\ringin.wav');END
IF SellSign=True THEN BEGIN
ExitPoint:=EXITBARS+1;
IF ExitPoint=EntAndExitSign THEN BEGIN {说明卖出成功}
PositionCount:=1;{头寸计算复原}
SellSign:=False;
END
IF ENTERPRICE-2*N then SELL(1,100%,STOP,SELLLLV);{退出离盈利头寸}
ELSE
SELL(1,100%,STOP,ENTERPRICE-2*N);{退出亏损头寸}
END
PLAYSOUND(1,'C:\WINDOWS\Media\ringout.wav');END;
读懂代码,然后在交易语句出现处,添加发音函数。以上例子中对开仓,和平仓发出不同的声音
留个问题给楼主自行解决,如果对于开仓,平仓的不同情况希望发出不同的声音,如果修改?
多谢老师指点了,这回明白这个函数的用法了,如果对于开仓、平仓使用不同的声音,只要更改一下这个语句中的链接文件即可。如最后平仓那句,可以这样 END
IF ENTERPRICE-2*N then SELL(1,100%,STOP,SELLLLV);{退出离盈利头寸}
ELSE
SELL(1,100%,STOP,ENTERPRICE-2*N);{退出亏损头寸}
END
PLAYSOUND(1,'C:\WINDOWS\Media\flourish.wav');END;
明天盘中测试一下,就不用盯着看了,谢谢老师了,呵呵