[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 368 1...361362363364365366367368369370371372373374375...652 新评论 [Deleted] 2011.11.26 12:56 #3671 下午好! 我有一个任务,乍一看很容易,但它并不奏效。有一个数组,其中的值总是 在一行中(在某些情况下,值可能以升序排列,在其他情况下--以降序排列)。有一些水平(图片中的红色)。你需要找到最接近红线水平的两个 阵列值。在图a中,这些将是索引为0和1的数组值;在图b中,这些将是索引为2和1的数组值;在图c)和f)中,这些将是索引为0和0的数组值;在图d)和e)中,这些将是索引为2和2的数组值。 请告诉我如何解决这个问题。预先感谢你。 noobys 2011.11.26 12:56 #3672 Roman.: 那就不用麻烦了--只要把指标的代码移到专家顾问上,因为它要满足交易条件,就可以了--然后在棋盘上使用这个指标的这些转移的交易条件,通过专家顾问开仓,就可以了...... 谢谢,我正在努力 :) Роман 2011.11.26 13:01 #3673 skyjet: 谢谢,我正在整理 :) 不客气...每个人都经历过这种情况。:-) ivan2k2 2011.11.26 13:07 #3674 drknn: 今天是星期六--休息一天。你启动了EA,初始化发生了,但由于它是关闭的,没有刻度,所以启动功能没有启动(即Trade()没有被调用)。为了检查它是否正常工作,你需要把这个函数的调用粘在初始化块中,或者在测试器中测试。 在Init()中替换了这个函数,并添加了检查代码Print(DayOfWeek()),结果发现时间是从服务器上取的,而服务器的时间是星期五......。 替换了 if(DayOfWeek()==0 || DayOfWeek()==6) 至 if(TimeDayOfWeek(TimeLocal())==0 || TimeDayOfWeek(TimeLocal())==6) 并按计划进行了工作。 谢谢你。 [Deleted] 2011.11.26 15:33 #3675 同志们,你们好! 面临一个意想不到的问题。 前天,测试器还在正常工作。从昨天晚上开始,测试器中的任何版本的策略开了一笔交易,一秒钟后,或几分钟/几小时的历史,测试器就停止工作了。没有错误,什么都没有。 有人对它有意见吗?请告知 [Deleted] 2011.11.26 17:05 #3676 你好。 请帮助我找到这个错误。 以下是有问题的部分的全部内容,摘自EA。 extern int MAGIC= 1; int start() { //---- int tt = 0; double SchBuyLots = SchBuyLots_b(MAGIC); double SchSellLots = SchSellLots_b(MAGIC); double SchBuyLots100 = SchBuyLots100_b(); double SchSellLots100 = SchSellLots100_b(); double SchBuyLimitLots = SchBuyLimitLots_b(MAGIC); double SchSellLimitLots = SchSellLimitLots_b(MAGIC); double SchBuyStopLots100 = SchBuyStopLots100_b(); double SchSellStopLots100 = SchSellStopLots100_b(); double dy=0; double dx=SchBuyLots+SchBuyLots100-SchSellLots-SchSellLots100; if (dx!=0) dy=MathAbs(dx); double zx=SchBuyLimitLots-SchSellLimitLots; if (dx>0 && dy+zx!=SchSellStopLots100)tt=1; else tt=2; Alert (dy+zx,"---",SchSellStopLots100,"---",tt); //---- return(0); } //+------------------------------------------------------------------+ // ----------------- SchBuyLots() --------------------------------------------- // Функция возвращает суммарный лот Бай-ордеров для Магика //---------------------------------------------------------------- double SchBuyLots_b(int MAGIC) { double SchBuyLots=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()== MAGIC){ if(OrderType()==OP_BUY) { SchBuyLots=SchBuyLots+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchBuyLots); } // ---------------------------------------------------------------------------- // ----------------- SchSellLots() --------------------------------------------- // Функция возвращает суммарный лот Сейл-ордеров для Магика //----------------------------------------------------------------- double SchSellLots_b(int MAGIC) { double SchSellLots=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()== MAGIC) { if(OrderType()==OP_SELL) { SchSellLots=SchSellLots+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchSellLots); } // ------------------------------------------------------------------------------- // ----------------- SchBuyLots100() --------------------------------------------- // Функция возвращает суммарный лот Бай-ордеров для Магика 100 //-------------------------------------------------------------------------------- double SchBuyLots100_b() { double SchBuyLots100=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()==100) { if(OrderType()==OP_BUY) { SchBuyLots100=SchBuyLots100+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchBuyLots100); } // -------------------------------------------------------------------------------- // ----------------- SchSellLots100() --------------------------------------------- // Функция возвращает суммарный лот Сейл-ордеров для Магика 100 //--------------------------------------------------------------------------------- double SchSellLots100_b() { double SchSellLots100=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()==100) { if(OrderType()==OP_SELL) { SchSellLots100=SchSellLots100+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchSellLots100); } // ---------------------------------------------------------------------------- // ----------------- SchBuyLimitLots() ------------------------------------------ // Функция возвращает суммарный лот BuyLimit-ордеров для Магика //------------------------------------------------------------------------------ double SchBuyLimitLots_b(int MAGIC) { double SchBuyLimitLots=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()== MAGIC){ if(OrderType()==OP_BUYLIMIT) { SchBuyLimitLots=SchBuyLimitLots+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchBuyLimitLots); } // ---------------------------------------------------------------------------- // ----------------- SchSellLimitLots() ---------------------------------------- // Функция возвращает суммарный лот SellLimit-ордеров для Магика //----------------------------------------------------------------------------- double SchSellLimitLots_b(int MAGIC) { double SchSellLimitLots=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()== MAGIC) { if(OrderType()==OP_SELLLIMIT) { SchSellLimitLots=SchSellLimitLots+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchSellLimitLots); } // ------------------------------------------------------------------------------- // ----------------- SchBuyStopLots100() ----------------------------------------- // Функция возвращает суммарный лот BuyStop-ордеров для Магика 100 //-------------------------------------------------------------------------------- double SchBuyStopLots100_b() { double SchBuyStopLots100=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()==100) { if(OrderType()==OP_BUYSTOP) { SchBuyStopLots100=SchBuyStopLots100+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchBuyStopLots100); } // -------------------------------------------------------------------------------- // ----------------- SchSellStopLots100() ----------------------------------------- // Функция возвращает суммарный лот SellStop-ордеров для Магика 100 //--------------------------------------------------------------------------------- double SchSellStopLots100_b() { double SchSellStopLots100=0; int i; string SMB=Symbol(); for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {} else{//начало работы с выбранным ордером if(OrderSymbol()== SMB && OrderMagicNumber()==100) { if(OrderType()==OP_SELLSTOP) { SchSellStopLots100=SchSellStopLots100+OrderLots(); } } }//конец работы с выбранным ордером }//Конец цикла return(SchSellStopLots100); } // -------------------------------------------------------------------------------- 请注意这句话(几乎在最开始)。 if (dx>0 && dy+zx!=SchSellStopLots100)tt=1; else tt=2; 由于某些原因,当 dy+zx和SchSellStopLots100的值在这个表达式中 分别 相等时(我用allerts检查过),它们不再相互相等,变量tt的值是1而不是2。 我请你帮助我找到这个缺陷。 预先感谢你。 Всеволод 2011.11.26 17:11 #3677 来自服务器的交易条件在周末发生了变化...你应该在一个没有连接到经纪人/网络的独立终端上进行测试,使用一个特殊的工具来设置正确的点差。最好搜索一下关于测试EA 和如何正确进行测试的文章。 Всеволод 2011.11.26 17:47 #3678 nemo811: (用Allerts检查) 最好是通过ND或modulo差值小于某个delta来检查。 [Deleted] 2011.11.26 18:28 #3679 splxgf: 最好是通过ND或差异模数小于一些德尔塔来检查。由于某些原因,将dy和zx相加得到的数字是0.3(在我对当前市场情况的特别测试中),当与这个数字相比,并不相等。也就是说,我将dy+zx相加,得到0.3。我将dy+zx与0.3进行比较--它们不相等。 将dy和zx与它们返回的数字进行比较--等价物的工作是应该的。 谜语。 请帮助。 Yury Reshetov 2011.11.26 18:46 #3680 ramirez17:同志们,你们好!面临一个意想不到的问题。 前天,测试器还在正常工作。从昨天晚上开始,测试器中的任何版本的策略开了一笔交易,一秒钟后,或几分钟/几小时的历史,测试器就停止工作了。没有错误,什么都没有。有人对它有意见吗?请告知 测试仪有一个杂志。一切都写在那里。这里没有心灵感应者,可以从远处读取 你的测试员的日志。 1...361362363364365366367368369370371372373374375...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好!
我有一个任务,乍一看很容易,但它并不奏效。有一个数组,其中的值总是 在一行中(在某些情况下,值可能以升序排列,在其他情况下--以降序排列)。有一些水平(图片中的红色)。你需要找到最接近红线水平的两个 阵列值。在图a中,这些将是索引为0和1的数组值;在图b中,这些将是索引为2和1的数组值;在图c)和f)中,这些将是索引为0和0的数组值;在图d)和e)中,这些将是索引为2和2的数组值。
请告诉我如何解决这个问题。预先感谢你。
那就不用麻烦了--只要把指标的代码移到专家顾问上,因为它要满足交易条件,就可以了--然后在棋盘上使用这个指标的这些转移的交易条件,通过专家顾问开仓,就可以了......
谢谢,我正在整理 :)
不客气...每个人都经历过这种情况。:-)
今天是星期六--休息一天。你启动了EA,初始化发生了,但由于它是关闭的,没有刻度,所以启动功能没有启动(即Trade()没有被调用)。为了检查它是否正常工作,你需要把这个函数的调用粘在初始化块中,或者在测试器中测试。
在Init()中替换了这个函数,并添加了检查代码Print(DayOfWeek()),结果发现时间是从服务器上取的,而服务器的时间是星期五......。
替换了
至
并按计划进行了工作。
谢谢你。
同志们,你们好!
面临一个意想不到的问题。
前天,测试器还在正常工作。从昨天晚上开始,测试器中的任何版本的策略开了一笔交易,一秒钟后,或几分钟/几小时的历史,测试器就停止工作了。没有错误,什么都没有。
有人对它有意见吗?请告知
你好。
请帮助我找到这个错误。
以下是有问题的部分的全部内容,摘自EA。
请注意这句话(几乎在最开始)。
由于某些原因,当 dy+zx和SchSellStopLots100的值在这个表达式中 分别 相等时(我用allerts检查过),它们不再相互相等,变量tt的值是1而不是2。
我请你帮助我找到这个缺陷。
预先感谢你。
(用Allerts检查)
最好是通过ND或差异模数小于一些德尔塔来检查。
由于某些原因,将dy和zx相加得到的数字是0.3(在我对当前市场情况的特别测试中),当与这个数字相比,并不相等。也就是说,我将dy+zx相加,得到0.3。我将dy+zx与0.3进行比较--它们不相等。
将dy和zx与它们返回的数字进行比较--等价物的工作是应该的。
谜语。
请帮助。
同志们,你们好!
面临一个意想不到的问题。
前天,测试器还在正常工作。从昨天晚上开始,测试器中的任何版本的策略开了一笔交易,一秒钟后,或几分钟/几小时的历史,测试器就停止工作了。没有错误,什么都没有。
有人对它有意见吗?请告知