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

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

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

条件很简单,但实在做不出来

[复制链接]
发表于 2018-6-23 19:08:49 | 显示全部楼层 |阅读模式
思路:5分钟图。条件1:(最高价—开盘价)大于等于50点;条件2:(最高价时间-开盘价时间)小于等于120秒。开仓:多单


void OnTick()
  {  
      
       if (High[0]-Open[0])>=50*Point && (TimeCurrent()-iBarShift("null",0,0))=<120        //在5分钟图如果,(最高价—开盘价)>=50点且(最高价时间-开盘价时间)=<120秒
           
         bool   a=  OrderSend(Symbol(),OP_BUY,0.1,Ask,10,Bid-50*Point,Bid+50*Point,"开多单" ,12345,Red);   //开多单
              
  }


搞了一天头晕脑胀,现在看到电脑屏幕都有见到大海的感觉,请老师或高手们给指点一下,实在做不出来。多谢!
回复

使用道具 举报

发表于 2018-6-25 09:24:42 | 显示全部楼层
你的难点在于:最高价时间-开盘价时间
这个时间的获取难。开盘价时间 就是Time[0],
最高价时间是需要,你用变量记录的。具体实现,起来很复杂的,我写给你把
  1. datetime hightime=0;
  2. double high0=0;
  3. datetime timebar=0;
  4. int OnInit()
  5.   {
  6.    return(INIT_SUCCEEDED);
  7.   }
  8. void OnDeinit(const int reason)
  9.   {

  10.   }
  11. void OnTick()
  12.   {
  13.       if(timebar!=Time[0])//每根新的k线产生 重新初始化记录的价格和时间
  14.         {
  15.           high0=0;
  16.           hightime=0;
  17.           timebar=Time[0];
  18.         }
  19.       if(NormalizeDouble(high0,Digits)<NormalizeDouble(High[0],Digits))
  20.         {
  21.           high0=NormalizeDouble(High[0],Digits);
  22.           hightime=TimeCurrent();
  23.         }
  24.       if((High[0]-Open[0])>=50*Point && (hightime-Time[0])<=120)
  25.         {
  26.           bool a=OrderSend(Symbol(),OP_BUY,0.1,Ask,10,Bid-50*Point,Bid+50*Point,"开多单" ,12345,Red);   //开多单
  27.         }
  28.   }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-28 08:46:58 | 显示全部楼层
MT4MT5 发表于 2018-6-25 09:24
你的难点在于:最高价时间-开盘价时间
这个时间的获取难。开盘价时间 就是Time[0],
最高价时间是需要,你 ...

老师辛苦!非常感谢!谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-1 16:22:46 | 显示全部楼层
MT4MT5 发表于 2018-6-25 09:24
你的难点在于:最高价时间-开盘价时间
这个时间的获取难。开盘价时间 就是Time[0],
最高价时间是需要,你 ...

赵老师:
    你好!用你的方法测试一下自己的参数,效果很好!当改成空单( high和low ,BId和Ask,“<”和“>”互换),下单量却非常大,而且“(lowtime-Time[0])<=”个参数好象不管用,请赵老师指点一下,这是哪里的错误呢? 谢谢!


datetime lowtime=0;
double   low0=0;
datetime timebar=0;
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {

  }
void OnTick()
  {
      if(timebar!=Time[0])//每根新的k线产生 重新初始化记录的价格和时间
        {
          low0=0;
          lowtime=0;
          timebar=Time[0];
        }
      if(NormalizeDouble(low0,Digits)>NormalizeDouble(Low[0],Digits))
        {
          low0=NormalizeDouble(Low[0],Digits);
          lowtime=TimeCurrent();
        }
      if((Open[0]-Low[0])>=50*Point && (lowtime-Time[0])<=120)
      
        {
          bool a=OrderSend(Symbol(),OP_SELL,0.1,Bid,10,Ask+50*Point,Ask-50*Point,"开空单" ,12345,Red);   //开空单
        }
  }
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-10-14 08:43 , Processed in 0.094492 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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