为什么代码库中没有完整的EA? - 页 4

 

有些东西可以作为EA的选项加入。

- 独特的魔法数字计算,当经纪人改变符号名称(例如从 "EURUSD "到 "EURUSD.m")时,也许能确保给出相同的结果

- 订单管理选项(追踪止损,收支平衡(以点或其他数值为单位,如psar,x条高/低,ma,等等),订单关闭)

- 通过订单票 进行广泛的订单信息处理(文本(或csv)文件似乎是最简单的合适方式)。GV是有限的,OrderComment()可以由经纪人改变。

 
建立在IsNYOnDst之上
datetime TimeSrvToNY(datetime timeSrv=EMPTY){      // Server time to NY time
   if(timeSrv == EMPTY) timeSrv = timeCur_srv;
      #define NY_TZ_STD -5                   // NY is UTC-5 (STD) or UTC-4 (DST)
   int utcToNY = NY_TZ_STD + IsNYonDST(timeSrv);
   return(TimeSrvToUTC(timeSrv) + utcToNY * 3600);  // Previous called TimeGMT
}
datetime TimeNyToSrv(datetime timeNY){
   int utcToNY = NY_TZ_STD + IsNYonDST(timeNY);
   return( TimeUtcToSrv(timeNY - utcToNY * 3600) ); // Previous called TimeServer
}
 
WHRoeder,你是在更新下载链接,还是我们需要用你在这个主题中提供的所有更新来手动 "修补 "WHRea源?
 
一旦帖子变成几天前的内容,你就不能更新。
 
我明白了。那你能不能再把最新的版本贴在这里?
 
mbirrell:

我对分享我的自定义指标和EA有点担心,因为如果我这样做,每个人都开始使用它们,它们就不会再工作了......还有人同意吗?

我知道这听起来有点自私......但当我达到500万时,我将会分享;-)

事实上,如果每个人都使用你的Ea,市场价格将是零或无限的。每个人都会想在同一时间购买或出售。
 

大家好,如果我们只想得到简单和一般的解决方案,MQL4教程中的例子就足够了吗?

我的EA交易是按条计算,而不是按点计算。


int Fun_Error(int Error) // 处理错误的功能
{
switch(Error)
{// 不是关键的错误
case 4: Alert("Trade server is busy. Trying once again.");
Sleep(3000);// 简单的解决方案
return(1);// 退出函数
case 135:Alert("Price changed. Trying once again...");
RefreshRates();// 刷新利率
return(1);// 退出函数
case 136:Alert("No prices. Waiting for a new tick...");
while(RefreshRates()==false) // 等待一个新的刻度线
Sleep(1);// 在循环中暂停
return(1);// 退出函数
case 137:Alert("Broker is busy. Trying once again.");
Sleep(3000);// 简单的解决方案
return(1);// 退出函数
case 146:Alert("Trading subsystem is busy. Trying once again...");
Sleep(500);// 简单的解决方案
return(1);// 退出函数
// 严重错误
case 2: Alert("普通错误。")。
return(0);// 退出函数
case 5: Alert("Old terminal version.");
工作=false。// 终止操作
return(0);// 退出函数
case 64:Alert("账户被封锁。")。
Work=false;// 终止操作
return(0);// 退出函数
case 133:Alert("Trading forbidden.");
return(0);// 退出函数
case 134:Alert("没有足够的钱 来执行操作。");
return(0);// 退出该函数
默认情况下。Alert("Error occurred: ",Error); // Other variants
return(0);// 退出该函数
}
}

 

这可能是一个真正好的EA外壳/模板的基础。WHR是一位经验丰富的MT编码员。

它的初衷是作为有用的EA代码的来源,它不是一个 "即插即用 "的外壳。

我已经以几种方式更新了这个EA。

1.我修改了语法和变量名称,使其能够在当前版本的MQL4中编译。
我还增加了一些非常小的改动,以便它能够编译,并以 "Big Be "作为注释。

2.2.纳入了WHR放在线程中的所有额外代码部分。
我把它留在原地,但注释了被替换的部分。
在添加这些部分时可能会出现错误,尽管我已经尽可能地小心了。
缺乏与EA其他部分的完全整合也是可能的。

3.3.我还通过一个程序运行了它,该程序清理了文本格式以保证可读性。

它将开始在策略测试器中 运行。
它不会进行交易,因为进入规则的设置是留给你的。
我还没有进一步研究,因为我的时间还有其他要求。

需要的工作。
虽然整个过程中有评论,但许多需要澄清。如果不存在,也可以写出来。每个部分或功能是做什么的?
一个例子。CallAgain()说 "跳过无用的刻度",其方法或逻辑是什么?如果是追踪止损,它可能只取足够远的点位和/或在交易方向上的点位,但这需要一些研究来验证。

这样做将使它更好地发挥其作为思想来源的作用,并进一步实现作为EA外壳/模板的工作能力。

进一步测试。
添加一些进入规则,并测试每个部分是否在做它应该做的事。这需要在策略测试器中进行大量的研究。可能还要在这里和那里进行一些编码,以使它做它应该做的事。当它在那里工作时,再在模拟账户上进行大量测试。

警告。
至少有一个功能是不完整的,而且这段代码中可能有错误,或者在写完whrea后Metatrader发生了不允许的变化。

在不了解EA的情况下编写/使用它,有点像在不了解所有控制和如何使用它们的情况下试图驾驶飞机。
但是,按照你的意愿去做:这是你的钱。

请求
如果你有必要的广泛知识和一点时间,请帮忙。


大贝 (BigBe)

附加的文件:
whrea_v1.2.mq4  188 kb
 
William Roeder:

请你解释一下pips2dbl是什么?

 
Pooya Khamooshi: 请您解释一下pips2dbl是什么?

要将PIPs转换为tick。

一个PIP不是一个点或Tick。
什么是TICK?-MQL4编程论坛

使用点数 意味着在4位数的经纪商、异类(例如,点差超过500点的USDZAR)和金属上的代码中断。计算PIP是什么并使用它,而不是点数。
如何用参数管理日元对?-MQL4编程论坛
以指数点定义的滑点 - 货币对 - 专家顾问和自动交易 - MQL5编程论坛