21评论

8收藏

整数网格EA源码

 

avatar 水泊寒山 | 7087 人阅读 | 21 人评论 | 2017-05-17

  1. //+------------------------------------------------------------------+
  2. //|                                                           19.mq4 |
  3. //| bz. |
  4. //|                                      http://blog.163.com|
  5. //+------------------------------------------------------------------+
  6. #property copyright "下载更多外汇EA,外汇指标,交易系统,就到【外汇EA之家】"
  7. #property link      "http://www.eazhijia.com"
  8. #property description "①小数位置即对应整数网格取值位置,如;黄金正数个位取0,EUR小数0.00X取3  ②价格超过上阻力值不在开买单,超过下阻力不在开卖单,等于0无限制"

  9. #define BLWGZMA1 20050710
  10. //宏定义命令#define用法,定义本EA操作的订单的唯一标识号码,
  11. #define  NL    "\n"
  12.   

  13. extern double 基础单量 = 0.1;  //直接用交易量,

  14. extern double   止赢 = 100;  //直接出场点数,等于0此数无计算,无止赢
  15. extern double   止损 =1000;  //直接出场点数,等于0此数无计算,无止损

  16. extern int 小数位置 = 0; //小数位置即对应取值位置,如;黄金正数个位取0,EUR小数0.00X取3
  17. extern double   上阻力 = 0; //价格超过上阻力值不在开买单,超过下阻力不在开卖单,等于0无限制
  18. extern double   下阻力 = 0;

  19. //+------------------------------------------------------------------+
  20. //全局变量

  21.        int   wgb1=0,wgb2=0,wgb3=0,wgb4=0,wgb5=0,wgb6=0,wgb7=0,wgb8=0,wgb9=0,wgb0=0;
  22.        int   wgs1=0,wgs2=0,wgs3=0,wgs4=0,wgs5=0,wgs6=0,wgs7=0,wgs8=0,wgs9=0,wgs0=0;
  23.        double wgd1,wgd2,wgd3,wgd4,wgd5,wgd6,wgd7,wgd8,wgd9,wgd0;
  24.        int  OMb=0,OMp=0;
  25. //+------------------------------------------------------------------+
  26. //| expert initialization function  
  27. //   初始化                              |
  28. //+------------------------------------------------------------------+

  29. int init()
  30. {
  31. if(基础单量<MarketInfo(Symbol(), MODE_MINLOT))
  32. Alert("亲,基础单量 < 最小允许标准手数!");
  33.   
  34.   return(0);
  35. }

  36. //+------------------------------------------------------------------+
  37. //| expert deinitialization function  
  38. //反初始化                               |
  39. //+------------------------------------------------------------------+
  40. int deinit()
  41. {
  42.   
  43.   return(0);
  44. }

  45. //+------------------------------------------------------------------+

  46. //+------------------------------------------------------------------+
  47. //| Start function |
  48. //主程序
  49. //+------------------------------------------------------------------+
  50. void start()//主程序—-每次成交价所驱动的运算过程
  51. {
  52. //---- check for history and trading—对交易历史进行检查
  53. if(Bars<200 || IsTradeAllowed()==false)
  54. return;
  55. //如果K线数少于200根,或者如果允许智能交易交易=假时,返回

  56. //+------------------------------------------------------------------+

  57. //图表左上角显示相关信息
  58. string        str;
  59. str =  "当前订单数目=" + OrdersTotal() + NL +
  60.        "...................." + NL +
  61.        "区间市值上限" + 上阻力 + NL +
  62.        "区间设置下限" + 下阻力 + NL +
  63.        "...................." + NL ;
  64.       
  65.       
  66. Comment( str );
  67. /*
  68. ObjectCreate("label_object", OBJ_LABEL, 0, 0, 0);//物件建立(标签物件)
  69. ObjectSetText("label_object",str,18,"Arial",Red);//设定标签物件文字,大小,字型,颜色
  70.   ObjectSet("label_object", OBJPROP_XDISTANCE, 100);//设定X轴距
  71.    ObjectSet("label_object", OBJPROP_YDISTANCE, 50);//设定Y轴距*/
  72. //+------------------------------------------------------------------+

  73. //定义局部变
  74. double wg,jg1,jg2;

  75. jg1=NormalizeDouble(Bid/1000,3+小数位置-1);
  76. //计算 ,当前价格除以100,并将结果保留小数点1位  

  77. jg2=jg1*1000;


  78. if(小数位置==-2)
  79. wg=100;
  80. if(小数位置==-1)
  81. wg=10;
  82. if(小数位置==0)
  83. wg=1;
  84. if(小数位置==1)
  85. wg=0.1;
  86. if(小数位置==2)
  87. wg=0.01;
  88. if(小数位置==3)
  89. wg=0.001;
  90. if(小数位置==4)
  91. wg=0.0001;
  92. if(小数位置==5)
  93. wg=0.00001;
  94. if(小数位置==6)
  95. wg=0.00001;

  96.     wgd0 = jg2;
  97.     wgd1 = wg*1+jg2;
  98.     wgd2 = wg*2+jg2;
  99.     wgd3 = wg*3+jg2;
  100.     wgd4 = wg*4+jg2;
  101.     wgd4 = wg*5+jg2;
  102.     wgd6 = wg*6+jg2;
  103.     wgd7 = wg*7+jg2;
  104.     wgd8 = wg*8+jg2;
  105.     wgd9 = wg*9+jg2;
  106.       
  107. //+------------------------------------------------------------------+
  108.    
  109. //+------------------------------------------------------------------+
  110. CalculateCurrentOrders();
  111. //当前持仓单的数量

  112. CheckForOpen();
  113. //则进行开仓检查。

  114. //if(OrdersTotal()>0)
  115. //CheckForClose();
  116. //则进行平仓检查。

  117. //----
  118. }

  119. //+------------------------------------------------------------------+
  120. //+------------------------------------------------------------------+
  121. //| Check for open order conditions
  122. //自定义函数(无返回值) 开仓策略 |
  123. //+------------------------------------------------------------------+
  124. void CheckForOpen()//开仓检查(判断开仓条件及其处理)
  125. {
  126. int res; //定义局部变量res为整数型

  127. //+-----------
  128. //止损止赢计算,
  129. double  bzs,bzy,szs,szy;
  130. if(止损==0)
  131. {
  132. bzs=0;
  133. szs=0;
  134. }
  135. else
  136. {
  137. szs=Bid+止损*Point;
  138. bzs=Ask-止损*Point;
  139. }
  140. if(止赢==0)
  141. {
  142. bzy=0;
  143. szy=0;
  144. }
  145. else
  146. {
  147. szy=Bid-止赢*Point;
  148. bzy=Ask+止赢*Point;
  149. }
  150. //+-----------
  151. int sss=0,bbb=0;
  152. if(下阻力==0)
  153. sss=1;
  154. if(下阻力!=0)
  155. {
  156. if(Bid>下阻力)
  157. sss=1;
  158. else
  159. sss=0;
  160. }
  161. if(上阻力==0)
  162. bbb=1;
  163. if(上阻力!=0)
  164. {
  165. if(Ask<上阻力)
  166. bbb=1;
  167. else
  168. bbb=0;
  169. }


  170. //---- sell conditions-卖出条件
  171. if(OMp==1)
  172. {
  173. if(wgs1==0)
  174. {
  175. if( Bid==wgd1 )   
  176. {
  177. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs1",BLWGZMA1,0,Red);
  178. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  179. wgs1=1;
  180. }
  181. }

  182. if(wgs2==0)
  183. {
  184. if( Bid==wgd2 )   
  185. {
  186. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs2",BLWGZMA1,0,Red);
  187. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  188. wgs2=1;
  189. }
  190. }

  191. if(wgs3==0)
  192. {
  193. if( Bid==wgd3 )   
  194. {
  195. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs3",BLWGZMA1,0,Red);
  196. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  197. wgs3=1;
  198. }
  199. }

  200. if(wgs4==0)
  201. {
  202. if( Bid==wgd4  )   
  203. {
  204. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs4",BLWGZMA1,0,Red);
  205. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  206. wgs4=1;
  207. }
  208. }

  209. if(wgs5==0)
  210. {
  211. if( Bid==wgd5  )   
  212. {
  213. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs5",BLWGZMA1,0,Red);
  214. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  215. wgs5=1;
  216. }
  217. }

  218. if(wgs6==0)
  219. {
  220. if( Bid==wgd6  )   
  221. {
  222. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs6",BLWGZMA1,0,Red);
  223. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  224. wgs6=1;
  225. }
  226. }

  227. if(wgs7==0)
  228. {
  229. if( Bid==wgd7  )   
  230. {
  231. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs7",BLWGZMA1,0,Red);
  232. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  233. wgs7=1;
  234. }
  235. }

  236. if(wgs8==0)
  237. {
  238. if( Bid==wgd8  )   
  239. {
  240. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs8",BLWGZMA1,0,Red);
  241. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  242. wgs8=1;
  243. }
  244. }

  245. if(wgs9==0)
  246. {
  247. if( Bid==wgd9  )   
  248. {
  249. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs9",BLWGZMA1,0,Red);
  250. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  251. wgs9=1;
  252. }
  253. }

  254. if(wgs0==0)
  255. {
  256. if( Bid==wgd0  )   
  257. {
  258. res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy,"wgs0",BLWGZMA1,0,Red);
  259. //发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
  260. wgs0=1;
  261. }
  262. }

  263. }

  264. //---- buy conditions-买入条件
  265. if(OMb==1)
  266. {
  267. if(wgb1==0)
  268. {
  269.   if ( Ask==wgd1 )     
  270. {
  271. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb1",BLWGZMA1,0,Blue);
  272. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  273. wgb1=1;
  274. }
  275. }

  276. if(wgb2==0)
  277. {
  278.   if (Ask==wgd2 )     
  279. {
  280. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb2",BLWGZMA1,0,Blue);
  281. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  282. wgb2=1;
  283. }
  284. }

  285. if(wgb3==0)
  286. {
  287.   if ( Ask==wgd3 )     
  288. {
  289. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb3",BLWGZMA1,0,Blue);
  290. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  291. wgb3=1;
  292. }
  293. }

  294. if(wgb4==0)
  295. {
  296.   if (Ask==wgd4 )     
  297. {
  298. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb4",BLWGZMA1,0,Blue);
  299. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  300. wgb4=1;
  301. }
  302. }

  303. if(wgb5==0)
  304. {
  305.   if (Ask==wgd5 )     
  306. {
  307. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb5",BLWGZMA1,0,Blue);
  308. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  309. wgb5=1;
  310. }
  311. }

  312. if(wgb6==0)
  313. {
  314.   if (Ask==wgd6 )     
  315. {
  316. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb6",BLWGZMA1,0,Blue);
  317. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  318. wgb6=1;
  319. }
  320. }

  321. if(wgb7==0)
  322. {
  323.   if (Ask==wgd7 )     
  324. {
  325. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb7",BLWGZMA1,0,Blue);
  326. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  327. wgb7=1;
  328. }
  329. }

  330. if(wgb8==0)
  331. {
  332.   if (Ask==wgd8 )     
  333. {
  334. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb8",BLWGZMA1,0,Blue);
  335. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  336. wgb8=1;
  337. }
  338. }

  339. if(wgb9==0)
  340. {
  341.   if (Ask==wgd9 )     
  342. {
  343. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb9",BLWGZMA1,0,Blue);
  344. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  345. wgb9=1;
  346. }
  347. }

  348. if(wgb0==0)
  349. {
  350.   if (Ask==wgd0 )     
  351. {
  352. res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy,"wgb0",BLWGZMA1,0,Blue);
  353. //发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
  354. wgb0=1;
  355. }
  356. }

  357. }

  358. //----
  359. }
  360. //+------------------------------------------------------------------+
  361. //| Check for close order conditions
  362. //自定义函数(无返回值) 平仓策略 |
  363. //+------------------------------------------------------------------+
  364. /*
  365. void CheckForClose()//平仓检查(判断平仓条件及其处理)
  366. {  

  367. //----
  368. }
  369. */

  370. //+------------------------------------------------------------------+
  371. //| Calculate open positions
  372. //自定义函数(返回-整数型数据) 仓单查询与统计 |
  373. //+------------------------------------------------------------------+
  374. int CalculateCurrentOrders()//函数作用,计算当前持仓单的数量
  375. {
  376. //----
  377. wgb1=0;wgb2=0;wgb3=0;wgb4=0;wgd5=0;wgb6=0;wgb7=0;wgb8=0;wgb9=0;wgb0=0;
  378. wgs1=0;wgs2=0;wgs3=0;wgs4=0;wgs5=0;wgs6=0;wgs7=0;wgs8=0;wgs9=0;wgs0=0;
  379. for(int i=0;i<OrdersTotal();i++)
  380. //计次循环(i=0至订单数目,i=i+1)-循环检测当前的订单队列
  381. {
  382. if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
  383. //如果 没有本系统交易的仓单类型,则跳出循环
  384. if(OrderSymbol()==Symbol() && OrderMagicNumber()==BLWGZMA1)
  385. //如果 仓单货币对是当前货币对 且 仓单编号是本系统编号 时
  386. //(判断这个订单是不是当前EA操作的,避免EA误操作其他程序控制的持仓单)
  387. {
  388. if(OrderType()==OP_BUY && OrderComment()=="wgb1")
  389. wgb1=1;
  390. if(OrderType()==OP_BUY && OrderComment()=="wgb2")
  391. wgb2=1;
  392. if(OrderType()==OP_BUY && OrderComment()=="wgb3")
  393. wgb3=1;
  394. if(OrderType()==OP_BUY && OrderComment()=="wgb4")
  395. wgb4=1;
  396. if(OrderType()==OP_BUY && OrderComment()=="wgb5")
  397. wgb5=1;
  398. if(OrderType()==OP_BUY && OrderComment()=="wgb6")
  399. wgb6=1;
  400. if(OrderType()==OP_BUY && OrderComment()=="wgb7")
  401. wgb7=1;
  402. if(OrderType()==OP_BUY && OrderComment()=="wgb8")
  403. wgb8=1;
  404. if(OrderType()==OP_BUY && OrderComment()=="wgb9")
  405. wgb9=1;
  406. if(OrderType()==OP_BUY && OrderComment()=="wgb0")
  407. wgb0=1;



  408. if(OrderType()==OP_SELL && OrderComment()=="wgs1")
  409. wgs1=1;
  410. if(OrderType()==OP_SELL && OrderComment()=="wgs2")
  411. wgs2=1;
  412. if(OrderType()==OP_SELL && OrderComment()=="wgs3")
  413. wgs3=1;
  414. if(OrderType()==OP_SELL && OrderComment()=="wgs4")
  415. wgs4=1;
  416. if(OrderType()==OP_SELL && OrderComment()=="wgs5")
  417. wgs5=1;
  418. if(OrderType()==OP_SELL && OrderComment()=="wgs6")
  419. wgs6=1;
  420. if(OrderType()==OP_SELL && OrderComment()=="wgs7")
  421. wgs7=1;
  422. if(OrderType()==OP_SELL && OrderComment()=="wgs8")
  423. wgs8=1;
  424. if(OrderType()==OP_SELL && OrderComment()=="wgs9")
  425. wgs9=1;
  426. if(OrderType()==OP_SELL && OrderComment()=="wgs0")
  427. wgs0=1;

  428. }
  429. }
  430. return(0);
  431. }
  432. //+------------------------------------------------------------------+
  433. //+------------------------------------------------------------------+
复制代码


""
还没有人打赏,支持一下

评论|共 21 个

whxz

发表于 2018-11-14 00:43:43 | 显示全部楼层

谢谢 学习下

jeffyee

发表于 2018-12-4 08:46:47 | 显示全部楼层

谢谢,多多学习!!

小黄豆

发表于 2020-4-15 22:28:26 | 显示全部楼层

有竞争才有进步嘛

jprza

发表于 2020-4-24 20:37:55 | 显示全部楼层

不错,支持下楼主

萍顾运诸

发表于 2020-7-3 16:43:20 | 显示全部楼层

我是来刷分的,嘿嘿

依路有我

发表于 2020-7-11 18:49:44 | 显示全部楼层

谢谢楼主分享

d万佛阁

发表于 2020-8-13 17:23:16 | 显示全部楼层

学习了,不错

天魔心842

发表于 2020-8-19 11:19:18 | 显示全部楼层

帮你顶下哈!!

揭秘黑幕

发表于 2020-8-22 13:41:18 | 显示全部楼层

谢谢楼主分享

123下一页
您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则