[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 234

 
sergeev:

试过了,没有冻住。


在OrderClose上给出了错误129。

把RefreshRates放在它的前面。

无错误关闭


是的,我也这么做了,但有时它就是停止工作(不是终端本身,而是EA)。

 
doon:
你能解释一下为什么这段代码有时会冻结在一个地方,你必须重新启动终端才能恢复?


有人很直接地问你--它是在哪条线上冻结的?

你的代码打开并立即关闭了同一个订单,并且有很好的文档记录,所以在Alerts中应该可以立即看到代码到达哪一行。还是说这只是代码的一部分?

 
Roger:


有人很直接地问你--它是在哪条线上冻结的?

你的代码打开并立即关闭同一个订单,并且有很好的文件记录,所以你应该能够在警报中立即看到代码到达哪一行。还是说这只是代码的一部分?


不,这都是代码。而且它停在订单开仓和平仓的线上(但不一定)。

 
用MarketInfo(Symbol(),MODE_ASK)和MarketInfo(Symbol(),MODE_BID)替换代码中的卖价和买价,应该可以工作。
 

从这一点来看。

OrderSend(Symbol (), OP_BUY, 1, Ask, 10,0,0, "dsgdsf", 0, 0, CLR_NONE);

关于这一点。

OrderSend(Symbol (), OP_BUY, 1, MarketInfo(Symbol(),MODE_ASK), 10,0,0, "dsgdsf", 0, 0, CLR_NONE);
?
 

不,它仍然挂断。

经过4分钟的挂起,结果发现是错误128(交易等待时间已过)。

也许这个会有帮助?

 

亲爱的同事们, MQL编程方面 还是一个完全的 "傻瓜",我最近才开始研究这个话题。但我已经开始写我的第一个专家顾问,或者至少我试图这样做。

本主题的第182页 ,我已经列出了该EA应遵循的交易标准。请看它是怎么说的(页面上的最后一个帖子)。我已经挣扎了三个星期,我仍然不能在这里写出负责交易标准的那部分代码。我读过专门讨论这个问题教程章节,但在这个特定的案例中,它没有帮助我

在我的编程战斗中,我已经写了几十种这部分代码的变体,但没有一种能正常工作。显然我没有足够的知识, 不能那么快 掌握MQL 总之,这里是其中一个代码变体,它的工作原理,至少是近似于我希望的那样。

//+-------------------------------------------------------------------------------------+
//| Расчет значений технических индикаторов с формированием сигналов для позиций        |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
 Signal = 0;
// - 1 - == Получение значений индикаторов ==============================================
 double SAR = iSAR(Symbol(), 0, SARStep, SARMaximum, 0);
 double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_UPPER, 1);
 double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_LOWER, 1);
 double StochM = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала ===========================================================
 if (SAR < Low[1])
   {
    Signal = 3;                                                          // Закрытие SELL
    if (StochM > StochS && StochM >= 80 && StochS >= 80 && High[1] >= EnvUp && SAR < Open[1])
      Signal = 1;                                                         // Открытие BUY
   }   
 
 if (SAR > High[1])
   {
    Signal = 4;                                                           // Закрытие BUY
    if (StochM < StochS && StochM <= 20 && StochS <= 20 && Low[1] <= EnvDn && SAR > Open[1])
      Signal = 2;                                                        // Открытие SELL
   }   
// - 2 - == Окончание блока =============================================================
}


我知道代码都是歪歪斜斜的,一般来说 海湾位置 卖出的位置 是混在一起 但这是代码的唯一变体,当随机指数和包络线一起交易时,不会相互忽视。同时,由于某些原因,抛物线信号在交易中不被考虑。总之,请不要因为这样的 "屁股 "骂我太多,我很清楚代码是不正确的。

请帮助我,请修复我的专家顾问的代码。我对它感到很难受。我已经实施了更简单的策略(Mooving + Momentum;Mooving +RSI),但这个策略很有效请帮助。请重写所有错误的线条,使我的EA按照我在第182页上 描述的规则进行交易。我真的需要它。

P.S.: 我不能写所有的代码,因为我使用了现成的 MQL-模板

 
doon:

不,它仍然挂断。

在挂了4分钟后,结果发现是错误128(交易等待时间已过)。

也许这个会有帮助?


该死的,已经改变了交易中心--在没有任何提示的情况下,很明显,如果同一代码上的交易订单然后正常通过,然后挂起,这意味着服务器正在死亡。订单出去了,4分钟后没有回来。你真的要在这个服务器上进行真正的交易 吗?横下一条心,换几次不同的经纪公司。有人教你如何使用电脑吗?它不是打字机或游戏机--它需要知识。这是一项研究和艰苦的工作。如果你对命令行有基本的了解,对如何打开文件有基本的了解,至少对计算机网络的工作方式有基本的了解,你会提出不同的问题,你会很乐意得到帮助。现在你所需要的是ping你的经纪公司的服务器,并将响应时间与其他经纪公司的服务器响应时间进行比较。如果你花30分钟左右的时间,你会明白什么是什么。如果你曾试图概述专家顾问和服务器的互动,我们甚至可以用MQL4估计你的经纪公司的服务器执行交易订单的速度。

没有任何言语。你怎么能如此粗心地对待自己的工作过程呢?

 

daytrader19:

请重写错误的线条,使EA按照我在第182页 描述的规则进行交易。

请注意。

1) "line1[1]>line2[1]"的条件对于 "两行交叉 "的信号来说是不够的。Надо "линия1[1]>линия2[1]&&линия1[2]<линия2[2]"

2) 抛物线不应该与开盘价比较,而应该与高价和低价比较,注意你是在零条上计算的,并从第一条上取开盘价[1]。

 
doon:

不,它仍然挂断。

在挂了4分钟后,结果发现是错误128(交易等待时间已过)。

也许这个会有帮助?


在网络不好的情况下也会发生这种情况,例如在下载洪流过多的情况下。但你要到星期一才能检查。