仅图表显示用不涉及头寸管理:
省略N行
///////////////////////////////////////////////////////////////////////////////////////////////////////
IF HOLDING=0 THEN
BEGIN
//多头开仓,"开多"囊括了所有开多条件.只要在可开多区且,满足任意一个就开仓.
IF 交易时间 AND 开多 AND 大胆做多区 THEN
BEGIN
//为便于相互调用,条件语句多数未设定区间限制,故此处还是有限制的必要.
BUY(1,P,LIMITR,CLOSE);
PLAYSOUND(交易时间 AND 开多 AND 大胆做多区,'D:\Weisoft Stock\sound\BK.wav');
END
//空头开仓,"开空"囊括所有开空条件...............
IF 交易时间 AND 开空 AND NOT(大多相强区) and not(红区) and not(红补) and not(趋势纯红) and 开空必要条件 THEN
BEGIN
BUYSHORT(1,P,LIMITR,CLOSE);
PLAYSOUND(交易时间 AND 开空 AND NOT(超级强势区) AND NOT(大多相强区),'D:\Weisoft Stock\sound\SK.wav');
END
END
///////////////////////////////////////////////////////////////////////////////////////////////
IF HOLDING>0 THEN BEGIN
//多头平仓. "A平多"代表满足平多的任一条件.当有平多单条件满足时,需要先判断当前点位所处区间,并判断出"开多单时"的点位所处区间(大区)及开多性质(大中小波),开仓点位不同,平仓条件不同.
IF ENTERBARS>1 AND A平多 THEN
BEGIN
if 大波开多 or 纯超强区 then
begin
IF 平多1 THEN
SELL(1,HOLDING,MARKET,CLOSE);
PLAYSOUND(平多1,'D:\Weisoft Stock\sound\SP.wav');
GOTO QUITLINE;
end
if 大波开多 and 混超强区 then
begin //细化平多仓.混超区开的大波多单,平仓条件相对纯超区宽松
IF 平多2 THEN //只要是大波开仓就不能用普平多条件.否则太快平错失太多机会.
SELL(1,HOLDING,MARKET,CLOSE);
PLAYSOUND(平多2,'D:\Weisoft Stock\sound\SP.wav');
GOTO QUITLINE;
end
if not(大波开多) AND NOT(纯超强区) then
begin
IF 平多 OR 平多1 OR 平多2 or 平多3 THEN
SELL(1,HOLDING,MARKET,CLOSE);
PLAYSOUND(平多 OR 平多1 OR 平多2 or 平多3,'D:\Weisoft Stock\sound\SP.wav');
GOTO QUITLINE;
end
END
//多头收盘平仓
QUITLINE@ IF NOT(交易时间) THEN
BEGIN
SELL(1,HOLDING,LIMITR,CLOSE);
PLAYSOUND(NOT(交易时间),'D:\Weisoft Stock\sound\SP.wav');
END
END
{
通过GOTO无条件跳转保证不会重复开平仓.问题似乎解决了.
}
///////////////////////////////////////////////////////////////////////////////////////////////
平空代码省略.
现在的问题是.无法准确定位开平仓点.总是乱的.不知道那里的错误
还请高手指导一下.是不是条件控制和判断语句逻辑错误还是那里的问题.
我刚学金字塔编程,请多帮忙.
你这个代码只是片段
另外,你现在的逻辑是有问题的
请把所有if下的逻辑内容 用 begin end 包括起来
现在漏洞十分明显,报警肯定跟信号不一致