任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 534

 
AlexeyVik:

使用这个https://docs.mql4.com/ru/indicators/imaonarray

请看一下代码,这是否正确?

//+------------------------------------------------------------------+
//|Определяем, можно ли торговать исходя из волатильности            |
//+------------------------------------------------------------------+

bool Volatilnost(int ATRTimeframe, int ATRPeriod, int PerShortMA, int PerLongMA, int ma_method)
   {
   bool  res = false;
   double   atr_curr[101];
   double   iatr_curr;
   
   ArraySetAsSeries(atr_curr,true);
   
   for(int i=100; i>=0; i--)  
   {
   atr_curr[i]=iATR( NULL, ATRTimeframe, ATRPeriod, i) ;
   if(i==1){iatr_curr=atr_curr[i];}
   }
   double   ShortMA=iMAOnArray( atr_curr, 0, PerShortMA, 0, ma_method, 1); 
   double   LongMA =iMAOnArray( atr_curr, 0, PerLongMA, 0, ma_method,  1); 

   if (ShortMA < LongMA)res = false;// Не работаем
         else res = true;
       
   return(res);
   }
[Deleted]  
AlexeyVik:
现在他们会开始向你解释,这个角度取决于图形的缩放比例,无法做到......
但如果你不取角度,而只取角度的正切,你就可以做到这一点。

我想知道是否有可能找出它是什么,以及它应该如何确定。 我知道在学校的几何学中,他们教切线和切线,但可惜我不记得了)我在论坛上问过Fresh,但我没有得到明确的答案。
 

如果Yandex被禁止,你可以使用谷歌。

简而言之,直角三角形中一个角的切线是对角的腿与邻角的腿的比率。

将此转化为MT图中的情况,我们得到--对立的腿将等于点(以百分数计),相邻的腿等于条(也以百分数计)。

例子。

欧元兑美元开盘6.03 1.3732 开盘7:03 1.3860 总计128点。在M1,1440条tan=128/1440=0.08889

这个方程式基本上用于ObjectGetValueByShift()函数中

[Deleted]  
是否可以使用第三方服务器? 我只是将这个服务器连接到http://buy.fineproxy.org/
 
请解释如何将表格(*.csv)中的数据装入一个三维静态数组
表格的第一列包含数组第一维的索引,
第二列包含数组第二维的索引,
第三列和更多列包含数组第三维的数值本身。
void AAA()
   {
    int       Handle;                                          // Файловый описатель
    string    File_Name = "AAA.csv";                           // Имя открываемого файла

    string    str_1 = "";                                      //  1 Номер индекса по первому измерению
    string    str_2 = "";                                      //  2 Номер индекса по второму измерению
    string    str_3 = "";                                      //  3 Значение
    string    str_4 = "";                                      //  4 Значение
    string    str_5 = "";                                      //  5 Значение

    Handle=FileOpen(File_Name, FILE_READ, ";");                // Открытие файла
    
    while(FileIsEnding(Handle)==false)                         // До тех пор, пока файловый...
        {                                                      // ...указатель не в конце файла
         // Чтение данных из строки до файлового разделителя
         str_1 = FileReadString(Handle);                       //  1 Номер индекса по первому измерению
         str_2 = FileReadString(Handle);                       //  2 Номер индекса по второму измерению
         str_3 = FileReadString(Handle);                       //  3 Значение
         str_4 = FileReadString(Handle);                       //  4 Значение
         str_5 = FileReadString(Handle);                       //  5 Значение
         
         if(FileIsEnding(Handle)==true)                        // Файловый указатель в конце файла
              break;                                           // Выход из цикла чтения

         ????????????????????????????????????????????????????
        }
    FileClose(Handle);                                         // Закрываем файл
    return;                                                    // Выход из функции
   }
 
Leo59:
请解释一下如何将表(*.csv)中的数据放入一个三维静态数组中。
表的第一列在数组的第一维上有一个索引。
第二列是数组第二维的索引。
在第三列和更多的列中--根据数组的第三维度,数值本身。



如果用于在Excel本身的分析,则为汇总表。

或者显示一些数据,看来我们必须要有辅助的字符串数组来匹配索引-值。

 
splxgf:


....看来我们必须要有辅助的字符串数组来匹配索引值。

void AAA()
   {
    int       Handle;                                          // Файловый описатель
    string    File_Name = "AAA.csv";                           // Имя открываемого файла

    string    str_1 = "";                                      //  1 Номер индекса по первому измерению
    string    str_2 = "";                                      //  2 Номер индекса по второму измерению
    string    str_3 = "";                                      //  3 Значение
    string    str_4 = "";                                      //  4 Значение
    string    str_5 = "";                                      //  5 Значение

    Handle=FileOpen(File_Name, FILE_READ, ";");                // Открытие файла
    
    while(FileIsEnding(Handle)==false)                         // До тех пор, пока файловый...
        {                                                      // ...указатель не в конце файла
         // Чтение данных из строки до файлового разделителя
         str_1 = FileReadString(Handle);                       //  1 Номер индекса по первому измерению
         str_2 = FileReadString(Handle);                       //  2 Номер индекса по второму измерению
         str_3 = FileReadString(Handle);                       //  3 Значение
         str_4 = FileReadString(Handle);                       //  4 Значение
         str_5 = FileReadString(Handle);                       //  5 Значение
         
         if(FileIsEnding(Handle)==true)                        // Файловый указатель в конце файла
              break;                                           // Выход из цикла чтения

// Завели строковый массив

         // Преобразование типов данных и запись в масссив
         ArrayResize(Mas1, SizeMas1+1);                        // Увеличили размер массива Mas1

         Mas1[SizeMas1][0] = StrToInteger(str_1);              //  0 Номер индекса по первому измерению
         Mas1[SizeMas1][1] = StrToInteger(str_2);              //  1 Номер индекса по второму измерению
         Mas1[SizeMas1][2] = StrToDouble(str_3);               //  2 Значение
         Mas1[SizeMas1][3] = StrToDouble(str_4);               //  3 Значение
         Mas1[SizeMas1][4] = StrToDouble(str_5);               //  4 Значение
         SizeMas1++;                                           // Новый размер массива Mas1

// Что дальше  ????????????????????????????????????????????????????

        }
    FileClose(Handle);                                         // Закрываем файл
    return;                                                    // Выход из функции
   }
[Deleted]  

如何删除所有像OBJ_ARROW_RIGHT_PRICE 的对象?

命令ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)并没有删除!即使在改变时间框架后(强行重绘整个图表)。

我写了一个简单的脚本,它注释了屏幕上的内容。

Alert("obj_arrow_right_price=",OBJ_ARROW_RIGHT_PRICE) ; // =36

ObjectCreate("MyArrow",OBJ_ARROW_RIGHT_PRICE,0,Time[1],Open[1]) ; //创建了OBJ_ARROW_RIGHT_PRICE

Alert("objectTipe=", ObjectType("MyArrow"), "ARROW CODE=",ObjectGet("MyArrow",OBJPROP_ARROWCODE) ) ; // nightmare "objecType=" =22, 不明白为什么不是像第一行中的36?

ResetLastError()。

Alert("脚本删除箭头右价=",ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)," lastError=",GetLastError() ) ; //删除对象=0,错误代码=0

我继续实验,写道:ObjectsDeleteAll(22); //被删除的对象=0了

 
VoDyaMon:

如何删除所有像 OBJ_ARROW_RIGHT_PRICE 这样的对象?


再读一次帮助。

对象删除所有

删除指定类型和指定子窗口中的所有对象。

int  ObjectsDeleteAll(
   int   window=EMPTY,      // индекс окна
   int   type=EMPTY         // тип объекта для удаления
   );

如果对象是在主图表子窗口中。

ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE);
 
isn-88:


再次阅读帮助。

对象删除所有

删除图表中指定类型和指定子窗口的所有对象。

如果对象在主图形子窗口中。

只是不要建议愚蠢的选择。这个命令将把所有对象从图中完全删除。