Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 534

 
AlexeyVik:

Usa questo https://docs.mql4.com/ru/indicators/imaonarray

Guardate il codice, è corretto?

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

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:
Ora cominceranno a spiegarti che l'angolo dipende dalla scala del grafico e non si può fare...
Ma se si prende non l'angolo, ma solo la tangente dell'angolo, si può fare.

So che in geometria a scuola si insegnavano le tangenti e le catangenti, ma ahimè non ricordo) ho chiesto a Fresh sul forum, ma non ho ottenuto una risposta specifica.
 

Se Yandex è vietato, puoi usare Google.

In breve, la tangente di un angolo in un triangolo rettangolo è il rapporto tra la gamba opposta e quella adiacente.

Traducendo questo alla situazione nel diagramma MT, otteniamo - la gamba opposta sarà uguale ai punti (in pct.) e quella adiacente in barre (anche in pct.).

Esempio:

EURUSD apertura 6.03 1.3732 apertura 7:03 1.3860 totale 128 pips. A M1 1440 bar tan = 128/1440=0.08889

Questa equazione è fondamentalmente usata nella funzione ObjectGetValueByShift()

 
È possibile utilizzare un server di terze parti? Ho solo questo collegato http://buy.fineproxy.org/
 
Per favore, spiega come inserire i dati di una tabella (*.csv) in una matrice statica tridimensionale.
La prima colonna della tabella contiene l'indice per la prima dimensione dell'array,
La seconda colonna contiene l'indice per la seconda dimensione dell'array,
La terza e l'ulteriore colonna contengono i valori stessi per la terza dimensione dell'array.
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:
Per favore, spiega come mettere i dati di una tabella (*.csv) in un array statico tridimensionale.
La prima colonna della tabella ha un indice sulla prima dimensione dell'array,
La seconda colonna è l'indice della seconda dimensione dell'array,
Nella terza e ulteriore colonna - i valori stessi secondo la terza dimensione dell'array.



Se per l'analisi in Excel stesso, la tabella riassuntiva.

O mostrare alcuni dati, sembra che dovremo avere degli array di stringhe ausiliari che corrisponderanno all'indice-valore.

 
splxgf:


.... sembra che dovremo avere degli array di stringhe ausiliari che corrisponderanno al valore dell'indice.

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

Come cancellare tutti gli oggetti come OBJ_ARROW_RIGHT_PRICE?

Il comando ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE) non cancella anche dopo aver cambiato timeframe (per ridisegnare forzatamente l'intero grafico)

Ho scritto un semplice script, commenta quello che dice sullo schermo:

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

ObjectCreate("MyArrow",OBJ_ARROW_RIGHT_PRICE,0,Time[1],Open[1]) ; // creato OBJ_ARROW_RIGHT_PRICE

Alert("objectTipe=", ObjectType("MyArrow"), "ARROW CODE=",ObjectGet("MyArrow",OBJPROP_ARROWCODE) ) ; // incubo "objecType=" =22, non ho capito perché non 36 come nella prima linea ?

ResetLastError() ;

Alert("script delete arrow right price=",ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)," lastError=",GetLastError() ) ; // oggetti cancellati =0, codice errore =0

Continuo l'esperimento scrivendo: ObjectsDeleteAll(22) ; // oggetti cancellati =0 di nuovo

 
VoDyaMon:

Come cancellare tutti gli oggetti come OBJ_ARROW_RIGHT_PRICE?


Leggete ancora una volta l'aiuto:

ObjectsDeleteAll

Cancella tutti gli oggetti di un tipo specificato e in una sottofinestra specificata.

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

Se gli oggetti sono nella sottofinestra del grafico principale:

ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE);
 
isn-88:


Leggete di nuovo l'aiuto:

ObjectsDeleteAll

Cancella tutti gli oggetti del tipo specificato e nella sottofinestra specificata del grafico.

Se gli oggetti sono nella sottofinestra del grafico principale:

Basta non suggerire opzioni stupide. Questo comando rimuoverà tutti gli oggetti dal grafico.
Motivazione: