[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 21

 
forexnew:

在我的记忆中,可以写零除法。但这是由于某些参数没有被重新计算的事实。换句话说,EA根本无法正确启动,因为它是在工作会议开始之前启动的。

当然,这些复选框已被删除。

如果发生这种错误(除以零),专家顾问就会停止工作。寻找代码中出现除以0的地方--很可能是由于计算任何参数而得到的0。
 
唉,谢谢你。
 

你好,亲爱的mql人。我的第一个代码问题来了。

它是一个趋势指标。该任务是一个趋势指标,其坐标是第1条线=上一天和前一天的最大值,第2条线=上一天和前一天的最小值。

这将是确定的,但当你切换到较低的时间框架时,坐标是紧紧抓住一天的开始,虽然在相应的价格水平....而这句话的意义就完全消失了。

创建一个 趋势线对象 时,数据时间 参数要受到责备。我想不出怎么去找它。有必要计算出价格极值的形成时间。看来,这些信息

看来,这些信息被嵌入到1分钟的时间框架中。如何确定时间框架变化时的日期时间,以便重新绘制趋势,并将坐标附加到与极值对应的条形上。

不幸的是,在搜索中没有发现任何关于这个问题的结果。我很乐意征求意见。

 

我需要通过MA查看该工具整个历史上的价格行为,但在图表中插入该指标时却没有绘制。

问题是什么?

当编译=0和0时。

顺便说一句--MT4终端挂掉了!

//--------------------------------------------------------------------
// separatewindow.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
#property indicator_chart_window    // Индик. рисуется в основном окне
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_color2 Red      // Цвет второй линии

extern int History  =1000000;            // Колич.баров в расчётной истории
extern int Aver_Bars=1000000;             // Количество баров для расчёта

double Buf_0[];                     // Открытие индикаторного массива
//--------------------------------------------------------------------
int init()                          // Специальная функция init()
  {
   SetIndexBuffer(0,Buf_0);         // Назначение массива буферу
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
   return;                          // Выход из спец. ф-ии init()
  }
//--------------------------------------------------------------------
int start()                         // Специальная функция start()
  {
   int i,                           // Индекс бара
   n,                               // Формальный параметр
   Counted_bars;                    // Количество просчитанных баров 
   double
   Sum_H,                           // Сумма значений High за переиод
   Sum_L;                           // Сумма значений Low  за переиод
//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   if (i>History-1)                 // Если много баров то ..
      i=History-1;                  // ..рассчитывать заданное колич.
   while(i>=0)                      // Цикл по непосчитанным барам
     {
      Sum_H=0;                      // Обнуление в начале цикла
      Sum_L=0;                      // Обнуление в начале цикла
      for(n=i;n<=i+Aver_Bars-1;n++) // Цикл суммирования значений 
        {
         Sum_H=Sum_H + High[n];     // Накопление суммы макс.значений
         Sum_L=Sum_L + Low[n];      // Накопление суммы мин. значений
        }
      Buf_0[i]=(Sum_H-Sum_L)/Aver_Bars;// Знач. 0 буфера на i-ом баре
      i--;                          // Расчёт индекса следующего бара
     }
//--------------------------------------------------------------------
   return;                          // Выход из спец. ф-ии start()
  }
//--------------------------------------------------------------------
 

我正在编写一个EA,进一步将止损点转移到盈亏平衡点并增加盈亏平衡点。一切似乎都在工作,但只有一个问题。当价格移动到盈亏平衡点或突破点时,止损点已经跳了出来。我无法解决这个问题。

谁知道,请帮助我。

以下是代码。

int poz=OrdersTotal();
for (n=0;n<poz;n++){
            if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES)==true){
            if (OrderType()==OP_BUY){
            Prise2=Bid-OrderOpenPrice();
            if(Prise2>(25*Point)){
            OrderModify(OrderTicket(),0,OrderOpenPrice(),OrderTakeProfit(),0,Blue);}
            if(Prise>Prise3){
            Prise3=(OrderOpenPrice()+(35*Point));
            SL2=OrderOpenPrice()+(10*Point);
            OrderModify(OrderTicket(),0,SL2,OrderTakeProfit(),0,Blue);}}
 
Vodya:

我正在编写一个EA,进一步将止损点转移到盈亏平衡点并增加盈亏平衡点。一切似乎都在工作,但只有一个问题。当价格移动到盈亏平衡点或突破点时,止损点已经跳了出来。我无法解决这个问题。

谁知道,请帮助我。

以下是代码。

也许是托架的问题?
 
alex12:
也许是托架的问题?

哪些人?如果它是在为之后,那么它就不是全部的部分。我刚刚展示了购买的代码,但也有一个出售的代码。
 

请帮助,订单应在从高价到订单开价的4倍距离处关闭。

我哪里搞砸了?

所有的订单都在开盘后3个点内关闭

OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
if ((High[0]-OrderOpenPrice())*4<OrderOpenPrice()-Bid&&OrderType()==OP_BUY&&OrdersTotal()>0)
 {
 OrderClose(OrderTicket(),OrderLots(),Bid,3);
 }
 
LazarevDenis:

请帮助,订单应在从高价到订单开价的4倍距离处关闭。

我哪里搞砸了?

这里
(High[0]-OrderOpenPrice())*4<OrderOpenPrice()-Bid
 
sergeev:
这里


显而易见的船长......谁能给我一个提示?
原因: