以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  这个模型信号发出提示后如何加上提示音?在哪个位置加?请教了  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=2602)

--  作者:jery
--  发布时间:2010/8/24 15:17:59
--  这个模型信号发出提示后如何加上提示音?在哪个位置加?请教了

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;


--  作者:董小球
--  发布时间:2010/8/24 15:29:52
--  
你想在哪加 就在那个命令语句后面添加上就行了 逐句扫描的
--  作者:fly
--  发布时间:2010/8/24 17:38:31
--  [讨论]如何避免行情震荡
一般在开完仓,或者平完仓后加,象2楼说的那样,你想加在哪里都可以。
--  作者:jery
--  发布时间:2010/8/25 9:12:46
--  

我加过之后一直响,不知道为什么?具体帮忙分析一下:

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\\flourish.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);{退出亏损头寸}
    PLAYSOUND(1,\'C:\\WINDOWS\\Media\\flourish.wav\');
    END
END;


--  作者:董小球
--  发布时间:2010/8/25 10:12:59
--  
第一:先看看你调用的声音文件是不是很长的响时;第二:因为 每一个周期 你写的指标语句都重新执行一边,所以会不断的响,你可以加入一个全局变量variable:maxprofit=0 (比如记录下单时间,或者持仓数量); 通过IF判断这个计数来决定是否播放声音文件,全局变量不会因为每次初始化指标而重新赋值为0,它只会在第一个周期被初始化赋值为0,其他周期均不会对此变量进行赋值,比如:variable:maxprofit=0; IF BARPOS = 2 THEN MAXPROFIT := 10; IF BARPOS = 10 THEN MAXPROFIT := 30; AA:MAXPROFIT; 通过AA的显示曲线,你应该会明白全局变量的用法和赋值规律。
[此贴子已经被作者于2010-8-25 10:20:30编辑过]

--  作者:jery
--  发布时间:2010/8/26 10:28:24
--  
不知道具体加在哪个位置呀?
--  作者:wattwei
--  发布时间:2010/8/26 10:36:36
--  
建议不要一上手就拿复杂的整,先编个简单的双均线交叉交易系统,然后参照论坛的帖子逐步增加应用