交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 5828|回复: 14
打印 上一主题 下一主题

[ea和相关说明] 求一个基本功能网格EA

[复制链接]

16

主题

4369

积分

2

精华

高级操盘手

金钱
4369 美元
权重
12
跳转到指定楼层
楼主
发表于 2017-11-12 17:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求一个基本功能网格EA。
不需要其他多余的过滤等功能,只需要最基本功能。
比如多单, 现价多,然后在现价上下若干点均匀都布上多单挂单,设置止盈止损。 某一单止盈后在原来的位置上重新布上多单挂单。
空单同理。
多空能分别或者同时运行。

我知道网格和马丁的问题及缺陷,我只是比较懒,想用它来干某些事情。
谢谢了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 保留保留

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
沙发
发表于 2017-11-12 19:08 | 只看该作者

16

主题

4369

积分

2

精华

高级操盘手

金钱
4369 美元
权重
12
板凳
 楼主| 发表于 2017-11-12 20:48 | 只看该作者
frlin2003 发表于 2017-11-12 19:08
http://my.fx3q.com/thread-19-1-1.html 小明。

多谢小明。
不过这个不是我想要的。 这个只是挂单而已。
我要的是能辅助交易的EA。
比如现价做多,那么同时在现价往上每隔20点挂buy stop,现价往下每隔20点挂buy limit单。上涨一个格子就止盈,止盈的同时将这个多单重新挂上。 比如A点的多单在A+20点止盈了,止盈的同时在A点重新挂buy limit(当然同时A+20的buy stop也成交了)。
做空同样的道理。
多谢了!

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
地板
发表于 2017-11-12 20:53 | 只看该作者
whyn403 发表于 2017-11-12 20:48
多谢小明。
不过这个不是我想要的。 这个只是挂单而已。
我要的是能辅助交易的EA。
简易版循环挂单v20130808.zip (1021 Bytes, 下载次数: 17)

  1. //+------------------------------------------------------------------+
  2. //|                                      简易版循环挂单v20130808.mq4 |
  3. //+------------------------------------------------------------------+
  4. double 第一单价格=0;
  5. int 第一单多空=-1;
  6. double 全体止盈线=0;
  7. //+------------------------------------------------------------------+
  8. //| expert initialization function                                   |
  9. //+------------------------------------------------------------------+
  10. int init()
  11.   {
  12. //----
  13.    
  14. //----
  15.    return(0);
  16.   }
  17. //+------------------------------------------------------------------+
  18. //| expert deinitialization function                                 |
  19. //+------------------------------------------------------------------+
  20. int deinit()
  21.   {
  22. //----
  23.    
  24. //----
  25.    return(0);
  26.   }
  27. //+------------------------------------------------------------------+
  28. //| expert start function                                            |
  29. //+------------------------------------------------------------------+
  30. int start()
  31.   {
  32. //----
  33.    
  34.    if(OrdersTotal()==1){   //当只有一张定单时执行
  35.       if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)//选中这唯一一张定单
  36.       {         
  37.          if(OrderType()==OP_BUY || OrderType()==OP_SELL)//当这张定单为多单或空单时执行(挂单则不执行)
  38.          {  
  39.             int ticket;
  40.             
  41.             if(OrderType()==OP_BUY){
  42.                第一单多空=OP_BUYSTOP;
  43.                第一单价格=OrderOpenPrice();

  44.                for (int i=1; i<=100; i++){
  45.                   ticket=OrderSend(Symbol(),第一单多空,0.02,第一单价格+i*0.0002,0,0,全体止盈线,"",0,CLR_NONE);
  46.                   if(ticket<0)Print("挂多: "+DoubleToStr(第一单价格+i*0.0002,4)+"失败");
  47.                   Sleep(3000);
  48.                }
  49.             }
  50.             else if(OrderType()==OP_SELL){
  51.                第一单多空=OP_SELLSTOP;
  52.                第一单价格=OrderOpenPrice();

  53.                for (int j=1; j<=100; j++){
  54.                   ticket=OrderSend(Symbol(),第一单多空,0.02,第一单价格-j*0.0002,0,0,全体止盈线,"",0,CLR_NONE);
  55.                   if(ticket<0)Print("挂空: "+DoubleToStr(第一单价格-j*0.0002,4)+"失败");
  56.                   Sleep(3000);
  57.                }
  58.             }            
  59.          }
  60.          
  61.       }
  62.       else
  63.       {
  64.          Print("OrderSelect返回的错误:",GetLastError());
  65.       }
  66.    }
  67.    else{
  68.       return(0);
  69.    }
  70.    
  71. /*
  72.    for (int i=1; i<=20; i++){
  73.       OrderSend(Symbol(),OP_SELLSTOP,0.02,第一单价格-i*0.0002,0,0,全体止盈线,"",0,CLR_NONE);
  74.    }
  75. */
  76. //----
  77.    return(0);
  78.   }
  79. //+------------------------------------------------------------------+
复制代码

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
5
发表于 2017-11-12 20:55 | 只看该作者
whyn403 发表于 2017-11-12 20:48
多谢小明。
不过这个不是我想要的。 这个只是挂单而已。
我要的是能辅助交易的EA。

计算第一单手数.zip (1020 Bytes, 下载次数: 4)
  1. //+------------------------------------------------------------------+
  2. //|                                               计算第一单手数.mq4 |
  3. //+------------------------------------------------------------------+

  4. #property indicator_chart_window
  5. double 期待爆仓距离=25;
  6. double 点差 = 2;
  7. double 初始保证金;
  8. int 每手保证金=200;//(只限杠杆500平台的USDJPY)
  9. double 第一单手数=0;
  10. double 平台强平线=0.2;//20%
  11. //+------------------------------------------------------------------+
  12. //| Custom indicator initialization function                         |
  13. //+------------------------------------------------------------------+
  14. int init()
  15.   {

  16.    return(0);
  17.   }
  18. //+------------------------------------------------------------------+
  19. //| Custom indicator deinitialization function                       |
  20. //+------------------------------------------------------------------+
  21. int deinit()
  22.   {

  23.    return(0);
  24.   }
  25. //+------------------------------------------------------------------+
  26. //| Custom indicator iteration function                              |
  27. //+------------------------------------------------------------------+
  28. int start()
  29.   {


  30.   
  31.    if(OrdersTotal()==0){
  32.       初始保证金=AccountEquity();
  33.       第一单手数=初始保证金/(平台强平线*每手保证金+期待爆仓距离*10+点差*10);
  34.       Comment("只限USDJPY: "+DoubleToStr(第一单手数,3)+"手");
  35. /*
  36. 已知:USDJPY,$100,目前空仓,杠杆500,点差预设2,平台强平线20%
  37. 下单后瞬间后,离爆仓(强平线)点位距离规定为25点
  38. 求:手数
  39. ----------------
  40. 解:
  41. 设手数为X

  42. 手续费=X*2*10
  43. 盈亏25点的费用=X*25*10
  44. 算点差后盈亏25点的费用:(25+2)*X*10
  45. 100 - (25+2)*X*10使仓将将爆仓,即达到爆仓线的20%多一丝儿
  46. 爆仓线=净值/已用保证金(????)
  47. 下单后瞬间的净值=100 - 手续费和爆仓点总费用=100 - (25+2)*X*10
  48. 已用保证金 = 200 * X

  49. 得到公式:(100 - (25+2)*X*10) / (200 * X)= 20%
  50. 第一单手数,即X=初始保证金/(平台强平线*每手保证金+期待爆仓距离*10+点差*10);
  51. 求得X=0.3225806451612903约0.32
  52. */



  53.    }

  54.    return(0);
  55.   }
  56. //+------------------------------------------------------------------+
复制代码

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
6
发表于 2017-11-12 20:56 | 只看该作者
拿来就用,整个互联网中恐难找到,
可能需要适当加工,小明。

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
7
发表于 2017-11-12 20:56 | 只看该作者

  1. double 第一单价格=0; //等待程序自动索取第一张定单的价格
  2. int 第一单多空=-1;   //等待程序自动索取第一张定单的类型
  3. double 全体止盈线=0;//手动自行设置
  4. double 全体止损线=0;//未使用/爆仓即止损
  5. int 挂单数量=20;
  6. double 挂单头寸=2;
  7. int init()
  8.   {
  9.    return(0);
  10.   }
  11. int deinit()
  12.   {
  13.    return(0);
  14.   }
  15. int start()
  16.   {
  17.    if(OrdersTotal()==1){   //当有且只有一张定单时执行
  18.       if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)//选中这唯一一张定单
  19.       {         
  20.          if(OrderType()==OP_BUY || OrderType()==OP_SELL)//当这张定单为多单或空单时执行(挂单则不执行)
  21.          {  
  22.             int ticket;
  23.             
  24.             if(OrderType()==OP_BUY){         //如果这一单是多单则......
  25.                第一单多空=OP_BUYSTOP;        //则挂buystop单
  26.                第一单价格=OrderOpenPrice();  //这一单的开仓价

  27.                for (int i=1; i<=挂单数量; i++){
  28.                   ticket=OrderSend(Symbol(),第一单多空,挂单头寸,第一单价格+i*0.0002,0,0,全体止盈线,"",0,CLR_NONE);    //0.0002为定单之间间隔   //CLR_NONE表示不在挂单时生成小箭头
  29.                   if(ticket<0)Print("挂多: "+DoubleToStr(第一单价格+i*0.0002,4)+"失败");     //ticket<0表示挂单失败
  30.                   Sleep(3000);                                                               //挂单间隔3秒=3000毫秒/挂单间隔太小平台有时报错
  31.                }
  32.             }
  33.             else if(OrderType()==OP_SELL){   //如果这一单是空单则......
  34.                第一单多空=OP_SELLSTOP;       //则挂sellstop单
  35.                第一单价格=OrderOpenPrice();

  36.                for (int j=1; j<=挂单数量; j++){
  37.                   ticket=OrderSend(Symbol(),第一单多空,挂单头寸,第一单价格-j*0.0002,0,0,全体止盈线,"",0,CLR_NONE);
  38.                   if(ticket<0)Print("挂空: "+DoubleToStr(第一单价格-j*0.0002,4)+"失败");
  39.                   Sleep(3000);
  40.                }
  41.             }            
  42.          }
  43.          
  44.       }
  45.       else
  46.       {
  47.          Print("OrderSelect返回的错误:",GetLastError());
  48.       }
  49.    }
  50.    else{
  51.       return(0);
  52.    }
  53.    return(0);
  54.   }
复制代码

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
8
发表于 2017-11-12 21:05 | 只看该作者
三段代码的大意是,
自动算头寸;
检测头寸是多还是空。如果头寸挂单成交,那么瞬间网格化挂单。的一种半自动化思路。

16

主题

4369

积分

2

精华

高级操盘手

金钱
4369 美元
权重
12
9
 楼主| 发表于 2017-11-12 21:07 | 只看该作者

小明这编程功底杠杆的,容我好好学习下再看。
多谢了!!!!

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
10
发表于 2017-11-12 21:07 | 只看该作者
whyn403 发表于 2017-11-12 21:07
小明这编程功底杠杆的,容我好好学习下再看。
多谢了!!!!


原作者:平大爷。

16

主题

4369

积分

2

精华

高级操盘手

金钱
4369 美元
权重
12
11
 楼主| 发表于 2017-11-12 21:27 | 只看该作者
frlin2003 发表于 2017-11-12 21:07
原作者:平大爷。

所以要将3段代码和在一个里面?
感谢!

2128

主题

6万

积分

157

精华

大型投行

金钱
61601 美元
权重
640
12
发表于 2017-11-12 21:30 | 只看该作者
whyn403 发表于 2017-11-12 21:27
所以要将3段代码和在一个里面?
感谢!

每个当时都可以独立使用。其中 1 3 是相似的,中间的是辅助品。

16

主题

4369

积分

2

精华

高级操盘手

金钱
4369 美元
权重
12
13
 楼主| 发表于 2017-11-12 21:41 | 只看该作者
frlin2003 发表于 2017-11-12 21:30
每个当时都可以独立使用。其中 1 3 是相似的,中间的是辅助品。

好的,多谢!!

5

主题

677

积分

0

精华

初级操盘手

金钱
677 美元
权重
0
14
发表于 2020-4-1 09:13 | 只看该作者
全面,功能实现没问题!

3

主题

340

积分

0

精华

见习操盘手

金钱
340 美元
权重
0
15
发表于 2020-11-10 18:51 | 只看该作者
这就没下文了?
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
皖ICP备: 2024050410号-2

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

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