瑞士军刀:MarketInfo函数

2009年2月9日 11:31  |  分类:EA, MT4编程, 指标

MT4编程中,有几个函数非常重要,而MarketInfo就是其中的一个。
大家都知道,瑞士军刀以其功能繁多而著称于世,同样,MarketInfo在MT4编程中也担当着类似的角色。通过使用MarketInfo函数,可以获得很多非常有用的信息。我们先来看看MarketInfo函数的原型定义:

double MarketInfo(string symbol, int type);

我们可以看到,MarketInfo有两个参数,第一个顾名思义,就是货币对名称,指我们希望获得信息的货币对名称;第二个是一个叫做type的int类型参数,这个 参数就是关键了。举个例子,假如我们想获取GBPUSD的点差,可以这样获取:

MarketInfo(“GBPUSD”, MODE_SPREAD);

又如我们想确定某个货币对在MT4中是否允许被交易,可以这样写:

MarketInfo(“NZDJPY”, MODE_TRADEALLOWED);

假如返回值是1,表示允许,返回0则表示禁止交易此货币对。

很多朋友都知道,在编写指标的时候,新建一个空白数组,通过SetIndexBuffer把这个数组挂到mt4系统缓存中去,然后只需操作这个数组就能在图表上显示相应的东西了。不过可能经常会遇到这个问题:在切换图表周期时,会发现图表上本来显示得很好的东西忽然就变得混乱了,这是怎么回事呢?原来,因为数组在切换图表周期时,没有被重新初始化,所有原本保存的内容也会继续在新的周期图表上继续显示,这就造成了混乱。知道了问题,该如何解决呢?答案其实也很简单,就是在init函数中对数组赋一个缺省值,我们知道当切换图表周期的时候也是会调用init函数的,这样就能确保数组在任何时候都能保存正确的内容了。赋值例子如下:

...
int init()
{
    SetIndexBuffer(0, arrayName);
    SetIndexEmptyValue(0, 0.0);   //关键就是这句
    ...
}

第三期睿盈EA开发入门班预计二月中旬开班

2009年2月6日 14:56  |  分类:EA

第三期睿盈EA开发入门班预计在本月中旬开班,有兴趣参加的朋友请联系客服QQ:949636732。

MT4错误代码大全(修订中文翻译)

2009年2月6日 12:11  |  分类:MT4编程

虽然官方网站mql4.com已经提供了完全的mt4错误代码对照表,但很多朋友或者不知道、或者不懂英文;而官方的中文翻译错漏实在太多(一看就是机器翻译,牛头不对马嘴),所以制作了一份中文版的《MT4错误代码大全》,并根据实际情况修订了部分官方的中文翻译,有需要的朋友可下载使用,转载请注明出处,谢谢!

MT4错误代码大全

MetaQuotes公司的新产品:TeamWox

2009年2月6日 08:41  |  分类:其它

2009年2月1日,MetaQuotes公司在MT4的官方编程论坛:mql4.com上,公布了其开发的一个新产品:TeamWox。简单看了下说明,这就是个协同工作平台,包含了任务管理、公文流转、电子邮件等常见的功能;其最大特色就是提供了与MT4服务端进行集成的模块,比如IB可以在TeamWox中查看其客户的详细交易记录、报表等等。不过这些都不是免费的,看了下官网的报价,光是TeamWox有两个版本,1个是$10000,另外1个版本是$9000每年;与其相对应的MT4服务端集成模块也有两种版本,分别是$10000和$7500。有实力的IB可以考虑一下,呵呵。

fxsol解决问题的态度让人满意

2009年1月17日 17:42  |  分类:其它

自fxsol发生问题后,我即时联系了fxsol官方网站的在线客服,客服倒也很痛快,查看了一下帐号,然后给出了两个选择:1是将账户回复到下单前的状态,就等于没有下过这几张单;2是将被止损的几张单以原始的开仓价恢复。不过官方的公告邮件就慢了点,在第三天后才收到。

如何连续使用PlaySound函数

2009年1月17日 17:35  |  分类:MT4编程, 指标

前两天有个朋友在QQ群里问了个问题:如何在指标中连续使用两次PlaySound函数。感觉有点意思,遂结合帮助文档提供了一个解决方法,现在把这个方法和有需要的朋友一起分享一下。

可能很多朋友都知道,Sleep函数是不能在指标中使用的,而只能在ea和脚本中使用,这可能是MT4本身的设计问题,但问题就在这里:PlaySound函数是不能连续不间断的使用两次或多次的,这样就只能播放最后一次调用时指定的声音文件了,例如:

PlaySound("connect.wav");
PlaySound("ok.wav");

这样就只会播放ok.wav了。因此,我们可以转换一下思路,这样来写:

int cnt = GetTickCount();
 
PlaySound("connect.wav");
while (GetTickCount()<cnt+1000){};
PlaySound("ok.wav");

FXSOL昨晚发生大规模故障

2009年1月14日 12:02  |  分类:其它

昨晚FXSOL发生了大规模的故障,我临睡前留了4张单,都设置了止损和止赢,今天早上一看,4张都给止损了,而且止损的价位都远远超出了止损价位,其中3张都是在同一时间关闭的,另外一张则更厉害,超过了止损位150多个点。现在已经发邮件给fxsol交涉,看结果如何。浏览了一下国内的几大外汇论坛,不少在fxsol做的朋友都遇到了这个情况,看来需要重新对fxsol进行评估了。

第二期MT4编程学习班现在开始接受报名,预计12月17日开始上课。有兴趣的朋友请联系QQ: 949636732;或E-MAIL: yuki.young@163.com

关于MT4新版本中小数位的问题

2008年11月25日 16:44  |  分类:EA, MT4编程

随着MT4升级到最新的220版本,MT4中的报价也分别更改为5位或3位(日系货币对)了。这对我们ea的使用和开发产生了不小的影响。举个例子:一张EURUSD的多单,开仓价是1.2800,止损20点,就应该是1.2780;在升级到5位小数位后,开仓价就成了1.28000,这时候如果还是用20点止损的思路,止损就成了1.27920!在开发或使用ea的时候,往往会因为这样的原因,导致止损价格或止盈价格与现价相距太近而报错。如果你的EA是基于4位或2位小数位(日系货币对)来开发的,建议检查一遍代码,看看逻辑上会不会出现这样的错误。

Pages: Prev 1 2 3 4 5 6 7 8 ...11 12 13 Next