新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 799

 
Artyom Trishkin:
垃圾在缓冲区内。首先,你必须在所有要绘制的缓冲区中输入一个空白值(如果它们是箭头缓冲区),然后才能计算出指标。我在手机上看不到代码,我不能说清楚。

你是说先做ArrayInitialize?

 
Roman Sharanov:

你是说先做ArrayInitialize?

这一点已经到位。
在指示器循环中,你必须将缓冲区 分配给带有循环索引的缓冲区单元中的 "空值"。
 
Artyom Trishkin:
这一点已经到位。
在指标循环中,你需要给带有循环索引的缓冲单元分配一个"空值"。

好的,谢谢你。

 
Artyom Trishkin:

是的,研究一下这个例子。

谢谢你,我将去找知识的源泉 :-)


关于交易、自动交易系统和策略测试的论坛

关于MQL4的初学者的任何问题,对算法和代码的帮助和讨论

Artyom Trishkin, 2019.03.31 09:10

它已经在那里了。
在一个指示器循环中,你需要给带有循环索引的缓冲单元分配一个 缓冲值 "空值"。

是不是每个数组都需要明确地给一个空值?

这种垃圾可以通过PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0)来处理 ?

 
psyman:

谢谢,我去找知识来源 :-)



是否有必要明确地将每个数组设置为零值?

这个垃圾可以通过PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0)来处理吗?

将光标放在编辑器中的函数名称上,按F1键,会出现一个奇迹。
 
下载了机器人,这个错误可能与什么有关?
每个安装机器人的人都能工作,只有我有这种情况。重新安装了终端,以管理员身份打开,没有任何帮助

 
编译过程中没有错误或警告。但是仓位没有打开(只打开了1个买入的仓位,并在承接线上关闭)。

我还不知道问题出在哪里。

//+------------------------------------------------------------------+
//|                                    Test advisor on iDeMarker.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//------------------параметры советника -------------------------------
extern double lots=0.01; //
extern int Magic=1111678111;
extern int Slippage=1;
//double sell_level=0.7;
//double buy_level=0.3;

extern double StopLoss=50;
extern double TakeProfit=50;
extern double TrailingStop=30;
double SL,TP;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
   int ticket;
// int cnt,total;

// открытие продаж

   if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
            if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

   if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
            if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;
   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
Roman Sharanov:
我下载了机器人,这个错误可能与什么有关?
我不知道该如何处理它。我重新安装了终端,以管理员身份打开,没有任何帮助。

唯一要做的是重新安装操作系统,或改变...你知道吗?




你的想法是错误的。我是指专家顾问。

 
Alexey Viktorov:

唯一要做的是重新安装操作系统,或改变...你知道吗?




你的想法是错误的。我是指顾问。

原因是什么呢?
 
Roman Sharanov:
原因是什么呢?

在这种情况下,我并不试图去弄清楚或解决它。我总是无怨无悔地把它扔掉,忘掉它。

原因: