开启辅助访问 切换到宽版

财富投资论坛

 找回密码
 立即注册

1.【邀请好友】可获赠好友入金额的10%! 2.【交易有奖】每月返现高达每手4美元! 3.【代理升级】新增二级代理制度,佣金更多!

MT4电脑版下载 手机版: [苹果] [安卓] MetaTrader 4简介 - MT4中文使用手册 MetaTrader MultiTerminal多账户终端

交易时间:周一06:00开盘~周六04:00停盘 咨询电话|客服邮箱|官网|微博|微信 在线客服: (8:00-24:00)

查看: 2939|回复: 13

请教几个ea语句,望高人不吝赐教

[复制链接]
发表于 2012-9-28 17:33:10 来自手机 | 显示全部楼层 |阅读模式
想表达的意思:
1.开一个买单,以2ATR止损。
2.当服务器时间为12点时,如果收盘价高于30日均线就卖出一单。
3.当macd信号线是上升就买进一单。
4.星期一不交易。
5.一天只交易一单。
谢谢
 楼主| 发表于 2012-9-28 21:48:42 来自手机 | 显示全部楼层
顶一下,顶一下,沙发是我的!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-29 17:56:01 来自手机 | 显示全部楼层
看来大家都对ea不感兴趣啊,嘿嘿
回复 支持 反对

使用道具 举报

发表于 2012-9-30 08:28:18 | 显示全部楼层
double atr2,sl,tp;
int Period2,l_digits,Lots;
Period2=12;//atr平均周期
l_digits=4;//四舍五入小数点位数
atr2=iATR(NULL,0,Period2,0)
sl=NormalizeDouble(atr2*2, l_digits);
tp=0;
Lots=0.1;
OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, sl,tp, "Op", 20120930, 0, Aqua);
回复 支持 反对

使用道具 举报

发表于 2012-9-30 08:39:52 | 显示全部楼层
int gi_388=12;
double ma30;
int ma_period=30;//均线周期30
int ma_shift=0
ma30=iMA(NULL,0,ma_period,ma_shift,MODE_EMA,PRICE_CLOSE,0);

if ((Hour() == gi_388 && Close[0]>ma30)) {
         print("卖!");
         OrderClose(g_ticket,Lots,Bid,3,Red);
         return(0);

      }


   return(0);
  }
回复 支持 反对

使用道具 举报

发表于 2012-9-30 08:44:58 | 显示全部楼层
错漏百出,
4楼纠正ordersend()里面的sl需要加上Bid或者Ask,我不太确定是哪个。
5楼纠正,把最后的两行:"   return(0);  }  "去掉,被复制多了一个
没空了,82-7=几?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-30 08:58:48 来自手机 | 显示全部楼层
f[无法无天] 发表于 2012-9-30 08:44 错漏百出, 4楼纠正ordersend()里面的sl需要加上Bid或者Ask,我不太确定是哪个。 5楼纠正,把 ...

别人写的代码是加ask,82-7=75,谢谢前辈回复,我打算写个ea测试一个策略,就是编程语言没学好。
回复 支持 反对

使用道具 举报

发表于 2012-9-30 19:44:46 | 显示全部楼层
蓝色光芒 发表于 2012-9-30 08:58
别人写的代码是加ask,82-7=75,谢谢前辈回复,我打算写个ea测试一个策略,就是编程语言没学好。 ...

前辈不敢当,话说山外有山,天外有天,还有张江后浪推前浪,前浪死在沙滩上,后生更是可畏
81-3.。。。。
回复 支持 反对

使用道具 举报

发表于 2012-9-30 19:54:42 | 显示全部楼层
4楼 ordersend()里面的sl应该是改成Ask-sl ,tp应该改成Ask+tp
回复 支持 反对

使用道具 举报

发表于 2012-9-30 20:14:35 | 显示全部楼层
第四、五条,星期一不交易,把这句加到4楼的代码里面,大致这样子:
....
tp=0;
Lots=0.1;
double SignalPrevious,SignalCurrent;
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
if (!(DayOfWeek() == 1) && g_ticket>0 && SignalCurrent>SignalPrevious) {
//如果不是周一,并且单号不为0,就开单
g_ticket=OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Ask-sl,Ask+tp, "Op", 20120930, 0, Aqua);
//这里可以加入判断是否成功开单,一般高手们使用选定订单的方法OrderSelect(),个人觉得加不加都不重要的吧
}
....
把五楼的改一下
...
      print("卖!");
         if (OrderClose(g_ticket,Lots,Bid,3,Red)) g_ticket=0;
         //在没平单成功之前,不把g_ticket归零,g_ticket不归零就不会再开新订单
         return(0);
...
第三条:
double SignalPrevious,SignalCurrent;
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
if (SignalCurrent>SignalPrevious){
//开单。这个可以加在四楼的OrderSend()之前
g_ticket=OrderSend(...);
}
回复 支持 反对

使用道具 举报

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

本版积分规则



QQ|Archiver|手机版|财富投资论坛  

GMT+8, 2021-7-29 03:00 , Processed in 15.026888 second(s), 9 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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