Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 534

 
AlexeyVik:

Utilice este https://docs.mql4.com/ru/indicators/imaonarray

Por favor, mire el código, ¿es esto correcto?

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

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);
   }
 
AlexeyVik:
Ahora te empezarán a explicar que el ángulo depende del escalado de la gráfica y que no se puede hacer...
Pero si no tomas el ángulo, sino sólo la tangente del ángulo, puedes hacerlo.

Me pregunto si es posible averiguar qué es y cómo debe determinarse. Sé que en geometría en el colegio enseñaban las tangentes y las catangentes, pero por desgracia no lo recuerdo) Pregunté en el foro a Fresh, pero no he recibido una respuesta definitiva.
 

Si Yandex está prohibido, puedes usar Google.

En resumen, la tangente de un ángulo en un triángulo rectángulo es la relación entre el cateto opuesto y el cateto contiguo.

Trasladando esto a la situación del diagrama MT, obtenemos - el tramo opuesto será igual a los puntos (en pct.) y el contiguo en barras (también en pct.).

Ejemplo:

EURUSD apertura 6.03 1.3732 apertura 7:03 1.3860 total 128 pips. En M1 1440 bares tan = 128/1440=0,08889

Esta ecuación se utiliza básicamente en la función ObjectGetValueByShift()

 
¿Es posible utilizar un servidor de terceros? Sólo tengo este conectado http://buy.fineproxy.org/
 
Por favor, explique cómo encajar los datos de una tabla (*.csv) en un array estático tridimensional.
La primera columna de la tabla contiene el índice de la primera dimensión de la matriz,
. La segunda columna contiene el índice de la segunda dimensión de la matriz,
. La tercera y siguientes columnas contienen los valores propios de la tercera dimensión de la matriz.
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:
Por favor, explique cómo poner los datos de una tabla (*.csv) en un array estático tridimensional.
La primera columna de la tabla tiene un índice en la primera dimensión de la matriz,
La segunda columna es el índice de la segunda dimensión del array,
En la tercera y siguientes columnas - los propios valores según la tercera dimensión del array.



Si para el análisis en el propio Excel, la tabla de resumen.

Para mostrar algunos de los datos, parece que tendremos que tener matrices de cadenas auxiliares que coincidan con el valor del índice.

 
splxgf:


.... parece que tendremos que tener matrices de cadenas auxiliares que coincidan con el valor del índice.

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;                                                    // Выход из функции
   }
 

¿Cómo eliminar todos los objetos como OBJ_ARROW_RIGHT_PRICE?

El comando ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE) no borra ! incluso después de cambiar el marco temporal (para redibujar todo el gráfico a la fuerza)

Escribí un simple script, comenta lo que dice en la pantalla:

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

ObjectCreate("MiFlecha",OBJ_Flecha_Derecha_Precio,0,Tiempo[1],Apertura[1]) ; // creado OBJ_Flecha_Derecha_Precio

Alert("objectTipe=", ObjectType("MyArrow"), "ARROW CODE=",ObjectGet("MyArrow",OBJPROP_ARROWCODE) ) ; // pesadilla "objecType=" =22, no entendí por qué no 36 como en la primera línea ?

ResetLastError() ;

Alert("script delete arrow right price=",ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)," lastError=",GetLastError() ) ; // objetos eliminados =0, código de error =0

Continúo el experimento escribiendo: ObjectsDeleteAll(22) ; // objetos eliminados =0 de nuevo

 
VoDyaMon:

¿Cómo eliminar todos los objetos como OBJ_ARROW_RIGHT_PRICE?


Vuelve a leer la ayuda:

ObjectsDeleteAll

Elimina todos los objetos de un tipo especificado y en una subventana especificada.

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

Si los objetos están en la subventana del gráfico principal:

ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE);
 
isn-88:


Vuelve a leer la ayuda:

ObjectsDeleteAll

Elimina todos los objetos del tipo especificado y en la subventana especificada del gráfico.

Si los objetos están en la subventana del gráfico principal:

Pero no sugieras opciones tontas. Este comando eliminará todos los objetos del gráfico por completo.