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

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

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

看下我复制的光辉老师的代码,哪里出错了

[复制链接]
发表于 2016-5-17 16:47:00 | 显示全部楼层 |阅读模式
int buy(double lots,double sl,double tp,string com, int buymagic)//开单不重复多单函数
  {
    int a=0;
    bool seek=false;
    for(int i=0;i<OrdersTotal();i++)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
        {
          if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderComment()==com && OrderMagicNumber()==buymagic)
            {
              seek=true;
              break;
            }
        }
     if(seek==false)
       {
         a=OrderSend(Symbol(),OP_BUY,lots,Ask,30,Ask-sl*Point,Ask+tp*Point,com,buymagic,0,White);
       }
    }
    return(a);

for语句中的第一个if判断不执行,短点调试的时候会直接跳过然后不断开单,求解
回复

使用道具 举报

发表于 2016-5-22 15:56:40 | 显示全部楼层
if 不执行说明不满足其中的4个逻辑与操作。
因为你新开的单子不在本for循环体内。
就是说你调用for语句时OrdersTotal是不包括新建的单子的。
还有即使重新for了,你的单子也没有差异化标记,至少加一行 buymagic++
在参数定义中改为 int & buymagic
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-1 20:57:53 | 显示全部楼层
不懂装懂 发表于 2016-5-22 15:56
if 不执行说明不满足其中的4个逻辑与操作。
因为你新开的单子不在本for循环体内。
就是说你调用for语句时 ...

非常感谢
回复 支持 反对

使用道具 举报

发表于 2016-6-3 14:40:30 | 显示全部楼层
if(seek==false)
       {
         a=OrderSend(Symbol(),OP_BUY,lots,Ask,30,Ask-sl*Point,Ask+tp*Point,com,buymagic,0,White);
       }
这个写到for循环外面
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-6-5 17:14 , Processed in 0.075794 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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