智能交易网,程序化交易,自动交易,量化交易

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

参加MT4智能交易编程培训,7课免费在线试听MT4指标,EA代写,或EA指标加密账户远程验证服务 最完善商业MT4跟单系统(0.1秒极速响应不漏单)
为论坛做贡献有奖学金,奖学金可直接换真钱 扫本站微信公 众号部分视频课程指标EA免费得智能交易网MT4操盘神器,扫公众号免费得
查看: 3021|回复: 2

请教

[复制链接]
发表于 2012-1-26 12:46:03 | 显示全部楼层 |阅读模式
赵老师好:
各位师兄们好:
请教几个问题,请赵老师或者师兄们赐教,谢谢了。

下面这段代码中,写的是,扫描是否有本程序下的买单,如果有,kaiguan=1,就不再会下买单了;如果没有本程序下的买单,就是执行开单,并且返回的是定单号码。

1、假如扫描的时候,已经有本程序下的买单了,那么返回的是什么呢?是0,还是本程序已经下的买单的定单号码?
2、我想写一些功能,在这个buy函数执行后,并且是执行了开单(就是前面没有本程序下的buy单),执行了开单操作,然后再执行下面的功能,你用的方法是if(buy(symbol,lots,ask,30,sun,ying,magic)>0),这样的方法,我想能否定义一个什么东西去接受它。比如xiabdcg=buy(),if(xiabdcg>0),就执行下面的功能,但是,我把xiabdcg=buy(),放了好几个位置,都是出现错误,请问,是否可以这样写法?如果可以,应该把xiabdcg=buy()放在什么位置?


//以下是买单函数
int buy(double Lots,double sun,double ying,string comment,int magic)
  {
          int kaiguan=0;
            for(int i4=0;i4<OrdersTotal();i4++)
               {
                   if(OrderSelect(i4,SELECT_BY_POS,MODE_TRADES))
                     {
                       if((OrderComment()==comment)&&(OrderMagicNumber()==magic))   
                         {kaiguan=1;}
                      }
               }
            if(kaiguan==0)
              {
                   int ticket=OrderSend(Symbol( ) ,OP_BUY,Lots,Ask,50,0,0,comment,magic,0,Green);
                   if(ticket>0)
                   {
                    if(OrderSelect(ticket, SELECT_BY_TICKET)==true)
                      {
                       if((sun!=0)&&(ying!=0))
                        {OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-sun*MarketInfo(Symbol(),MODE_POINT),OrderOpenPrice()+ying*MarketInfo(Symbol(),MODE_POINT),0,Red); }
                       if((sun==0)&&(ying!=0))
                        {OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderOpenPrice()+ying*MarketInfo(Symbol(),MODE_POINT),0,Red); }
                       if((sun!=0)&&(ying==0))
                        {OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-sun*MarketInfo(Symbol(),MODE_POINT),0,0,Red); }
                      }
                   }
              return(ticket);
              }
             else
              {
               return(0);
              }
  }


回复

使用道具 举报

发表于 2012-1-26 19:01:33 | 显示全部楼层
1、假如扫描的时候,已经有本程序下的买单了,那么返回的是什么呢?是0,还是本程序已经下的买单的定单号码?
回答:是0,如果返回是小于0的数,表示的意思是开单因为网络 滑点等原有没有开单成功。如果返回的是大于0的数,表示返回的是开单成功的订单号码。
2、我想写一些功能,在这个buy函数执行后,并且是执行了开单(就是前面没有本程序下的buy单),执行了开单操作,然后再执行下面的功能,你用的方法是if(buy(symbol,lots,ask,30,sun,ying,magic)>0),这样的方法,我想能否定义一个什么东西去接受它。比如xiabdcg=buy(),if(xiabdcg>0),就执行下面的功能,但是,我把xiabdcg=buy(),放了好几个位置,都是出现错误,请问,是否可以这样写法?如果可以,应该把xiabdcg=buy()放在什么位置?
回答:我明白你的意思,你是希望开单保证执行成功后,再运行你的某些功能。
  我的写法是if(buy(symbol,lots,ask,30,sun,ying,magic)>0)
    如果你希望有变量去接受,可以的因为这个函数返回的是一个int型的变量。
  你的接受代码应该是;
  int  xiabdcg=buy(symbol,lots,ask,30,sun,ying,magic);
   if(xiabdcg>0)//说明开单成功了
     {
        //然后你可以执行你的代码
     }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-27 10:23:07 | 显示全部楼层
回复 admin 的帖子

明白了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|sitemap|智能交易网,程序化交易,自动交易,量化交易 ( 苏ICP备08108698号,苏州智德金网络科技股份有限公司版权所有 )

GMT+8, 2019-11-18 03:40 , Processed in 0.086168 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表