[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 447

 
Yulia:
也许我解释错了,你只需要在m1 m5 m15 m30 h1 h4上标记第一根蜡烛,莫斯科时间16:00开始,指标标记(好比m15上的四根蜡烛)。

帮助和做是略有不同的事情。你不同意吗?
 
Vinin:

你不需要设置阵列的大小吗?


是的,我真的忘了,我被困住了。现在数组已经满了,但行数仍然没有显示。数组与缓冲区相连

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

void init()
        {
        SetIndexBuffer(0, HighMass);
        SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1);
        SetIndexBuffer(1, LowMass);
        SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);
        }
 
sss2019:


是的,我确实忘了,我已经很累了。现在阵列已经满了,但线条还是没有显示出来。数组与缓冲区相连


你应该给我整个代码。你不想猜测你清楚的东西。
 
Vinin:

帮助和行动是略有不同的事情。你不同意吗?

我完全同意你的观点,我请求帮助,我已经摸索了两个星期,没有结果,所以你的方案也不适合我,好吧,非常感谢,我自己会想办法。
 

下午好...关于ArrayGetAsSeries 函数的问题。为了了解ArrayGetAsSeries 函数是如何工作的 ,写了以下脚本。

//+------------------------------------------------------------------------------------------+
//|                                                                ArrayGetAsSeries_плюс.mq4 |
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
//------------------------------------ НАЧАЛО START -------------------------------------- 1 -
int start()                                           //функция start
  {                                                   //начало start
   double Timestart=GetTickCount();                   //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   double array1[];                                   //объявляем массив-приемник (массив, куда будут скопированы данные)
   int element=ArrayCopy(array1,Open,0,0,WHOLE_ARRAY);//копируем данные по ценам открытия в пользовательский массив (начиная с нулевого бара)
   int size=ArraySize(array1);                        //устанавливаем количество элементов массива array1
   for(int i=0;i<=4;i++)                              //цикл по просмотру скопированных значений (первых пяти)
       {                                              //начало for
        Alert("Значение цены открытия бара № ",i," равно ",array1[i],
              "\nВремя цены открытия бара № ",i,": ",TimeToStr(iTime(NULL,0,i),TIME_DATE|TIME_MINUTES));//cообщение на экран
       }                                                                 //конец for
//----------------------------------------------------------------------------------------- 2 -
   Comment("\nФункция ArrayCopy(array1[],Open,0,0,WHOLE_ARRAY) вернула: ",element,
           "\nФункция ArraySize(array1) вернула: ",size,
           "\nФункция ArrayGetAsSeries(array1) вернула: ",ArrayGetAsSeries(array1),
           "\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000),
           " секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать 
           //сообщения на экран
//----------------------------------------------------------------------------------------- 3 -
   return(0);                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 4 -

脚本复制了一个数组-时间序列的酒吧开盘价到一个自定义数组中。 很明显:这个自定义数组被组织成一个时间序列数组,因为数组元素的索引是从最后一个到第一个(这在截图中显示警报 函数 已经输出第四个酒吧的开盘时间和价格。这个条形图上有一条垂直线标记;我们还可以看到这个条形图的开盘价,在属性窗口中我们可以看到条形图的时间与警报 功能所显示的时间相同)。但是ArrayGetAsSeries 函数返回0,这意味着:用户数组没有被组织成一个时间序列数组(屏幕截图的左上角)。

问题:为什么ArrayGetAsSeries 函数返回0,即使用户数组被组织成一个时间序列数组?

P.S. 为了不给论坛添乱,提前感谢您的回答


 
7777877:
:为什么ArrayGetAsSeries 函数返回0,即使用户数组被组织成一个时间序列数组?
仅仅因为你按某种顺序复制了数据,并不意味着阵列被组织成一个时间序列
 
ilunga:
仅仅因为你按某种顺序复制了数据,并不意味着该阵列被组织成一个时间序列 。

但问题是,开盘价的数值是在for循环中从一个已经复制的条形图中复制出来的,其索引是从最后一个到第一个。但是,就我的理解,这意味着(即从最后一个到第一个的索引),数组被组织成一个时间序列?

P.S. 谢谢你回答我之前关于FileIsEnding 和FileIsLineEnding函数 的问题

 
7777877:

但问题是,开盘价的数值是在for循环中从一个已经复制的条形图中复制出来的,其索引是从最后一个到第一个。但是,据我所知,这意味着(即从最后一个到第一个的索引),数组被组织成一个时间序列?

P.S. 谢谢你回答我之前关于函数FileIsEnding和FileIsLineEnding的问题

不,它只意味着这些数据与一段历史相匹配。

比如说,你可以手动输入。或者从一个文本文件中写出来。或在计算中收到。


毕竟,即使输入了一些条件性数据 "1.25 1.16 1.73 1.35",我们也可能得到多年前某些货币的历史。但这并不意味着我们已经建立了一个数组时间序列

 

我很抱歉重复了一个问题,但在我解决这个问题之前,我不能做下面的例子。

请帮助我解决这个问题。

我写了一个简单的脚本来打开一个订单(来自MQL4教程)。

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

我对4位数的仪器进行了编码。

我有一个公司的账户,点后面有5位数字。

请告知如何纠正5位数的代码,为什么脚本运行时显示错误4109(不允许交易)?


 
Pacman:

我很抱歉重复了一个问题,但在我解决这个问题之前,我不能做下面的例子。

请帮助我解决这个问题。

我写了一个简单的脚本来打开一个订单(来自MQL4教程)。

我对4位数的仪器进行了编码。

我有一个公司的账户,点后面有5位数字。

能否请你修改代码,使之成为5位数,为什么运行脚本时出现4109错误(不允许交易)?

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-150*Point,Bid+150*Point);
   Alert (GetLastError());
   return;                                   // Выход из start()
  }

除了它根本不需要工作。你需要由你的经纪公司检查止损和取款规模是否有效。

不允许交易 4109 不允许交易。你需要在EA属性中启用 "允许EA进行交易 "选项。