设为首页收藏本站

 找回密码
 注册
查看: 3586|回复: 5
打印 上一主题 下一主题

请教重复开仓问题 [复制链接]

Rank: 5Rank: 5

精华
0
UID
5696
积分
1213
帖子
256
主题
111
阅读权限
60
注册时间
2009-10-18
最后登录
2023-6-10
跳转到指定楼层
1#
发表于 2010-11-29 11:19:11 |只看该作者 |倒序浏览
Params

        Numeric entrylots(1);
        Numeric exitlots(1);
        Numeric opentime(9.15);
        Numeric closetime(14.45);
        Numeric morepoint(1);
        Numeric alllots(1);
   
Vars

        Numeric minpoint;
        Numeric bpoint;
        Numeric spoint;
    bool bcon;
    bool scon;
        bool timecon;

Begin

    MinPoint = MinMove*PriceScale;
        timecon = q_lasttime>=opentime/100 && q_lasttime<=closetime/100 && Q_LastDate==date;

    if( BarStatus==0 )
    {
        SetGlobalVar(10,999999);
                setGlobalVar(11,0);
    }


    if( xxxxxxxx )
    {
        SetGlobalVar(10,xxxxxxxx);
    }

    if( yyyyyyyyyy)
    {
   setGlobalVar(11,yyyyyyyyyyyy);
    }

bpoint = GetGlobalVar(10)+morepoint*minpoint;
spoint = GetGlobalVar(11)-morepoint*minpoint;


bcon = Q_AskPrice>=bpoint || (Q_AskPrice==GetGlobalVar(10) && Q_AskVol<entrylots && Q_BidVol>2*Q_AskVol);
scon = Q_BidPrice<=spoint || (Q_BidPrice==GetGlobalVar(11) && Q_BidVol<entrylots && Q_AskVol>2*Q_BidVol);

        if( bcon && timecon && A_AccountID!="")
        {
                        A_SendOrder(Enum_Buy,Enum_Exit,exitlots,Q_AskPrice());
                        A_SendOrder(Enum_Buy,Enum_Entry,entrylots,Q_AskPrice());
                        SetGlobalVar(10,999999);
        }
                else if( bcon && A_SellPosition>0 && Q_LastDate==date && q_lasttime>=opentime/100 && A_AccountID!="")
        {
                        A_SendOrder(Enum_Buy,Enum_Exit,exitlots,Q_AskPrice());
                        SetGlobalVar(10,999999);
        }

        if( scon && timecon && A_AccountID!="")
        {
                        A_SendOrder(Enum_Sell,Enum_Exit,exitlots,Q_BidPrice());
                        A_SendOrder(Enum_Sell,Enum_Entry,entrylots,Q_BidPrice());
            setGlobalVar(11,0);
        }
                        else if( scon && A_BuyPosition>0 && Q_LastDate==date && q_lasttime>=opentime/100 && A_AccountID!="")
        {
                        A_SendOrder(Enum_Sell,Enum_Exit,exitlots,Q_BidPrice());
            setGlobalVar(11,0);
        }


        if(high>GetGlobalVar(10)) SetGlobalVar(10,999999);
        if(low<GetGlobalVar(11)) setGlobalVar(11,0);

  if(Q_LastTime>0.1458 && A_BuyPosition>0)
{
        A_SendOrder(Enum_Sell,Enum_Exit,allLots,Q_BidPrice);
}
        if(data1.Q_LastTime>0.1458 && A_SellPosition>0)
{
        A_SendOrder(Enum_Buy,Enum_Exit,allLots,Q_AskPrice);
}

        Commentary("bpoint:"+Text(GetGlobalVar(10)));
        Commentary("spoint:"+Text(GetGlobalVar(11)));

End

该程序思路:使用全局变量记录开仓点位,一旦符合条件下单,更改全局变量值,使开仓条件不满足,避免重复下单。
但是模拟测试时仍旧会重复发单。。。交易助手不追单也没用。。。
for dream,for freedom.

Rank: 5Rank: 5

精华
0
UID
19913
积分
634
帖子
92
主题
13
阅读权限
60
注册时间
2010-11-18
最后登录
2013-12-25
2#
发表于 2010-11-30 09:52:55 |只看该作者
实际上论坛很多人都实践过这种方法 但是效果都不好
原因是如果你网速不行 卡了 但是系统认为你的单子发出去了 还是会改变全局变量的值
要是能吧marketposition变成服务器端返回值而不是客户端返回值就好了

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5696
积分
1213
帖子
256
主题
111
阅读权限
60
注册时间
2009-10-18
最后登录
2023-6-10
3#
发表于 2010-12-1 13:32:23 |只看该作者
2# illidanyl


多谢楼上的朋友解答,不过我的网络很好啊,而且如果全局变量的值被改变了的话,应该就不会重复发单了,倒是有可能我的网络太快了,全局变量的值还没改变。。。
for dream,for freedom.

使用道具 举报

Rank: 2

精华
0
UID
15901
积分
76
帖子
22
主题
5
阅读权限
30
注册时间
2010-9-8
最后登录
2012-10-11
4#
发表于 2012-7-16 20:34:41 |只看该作者
为什么看了这么多类似问题的帖子,没到这个问题就不了了之了呢?到底这个问题怎么解决呢?

使用道具 举报

初级大户

酱油

Rank: 5Rank: 5

精华
0
UID
37561
积分
1108
帖子
395
主题
9
阅读权限
60
注册时间
2011-5-4
最后登录
2014-11-3
5#
发表于 2012-7-17 10:32:39 |只看该作者
额,弄个计时器,发单操作之后数秒内不操作。。。

使用道具 举报

Rank: 1

精华
0
UID
170904
积分
14
帖子
13
主题
0
阅读权限
10
注册时间
1970-1-1
最后登录
2013-9-11
6#
发表于 2013-9-10 17:11:06 |只看该作者
收藏收藏学学

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-12 17:59

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部