Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 534

 
AlexeyVik:

Verwenden Sie diese https://docs.mql4.com/ru/indicators/imaonarray

Bitte sehen Sie sich den Code an, ist dieser korrekt?

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

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:
Jetzt wird man Ihnen erklären, dass der Winkel von der Skalierung des Diagramms abhängt und dass das nicht möglich ist...
Aber wenn man nicht den Winkel, sondern nur den Tangens des Winkels nimmt, kann man es schaffen.

Ich frage mich, ob es möglich ist, herauszufinden, was es ist und wie es bestimmt werden sollte. Ich weiß, dass in der Geometrie in der Schule die Tangenten und die Katangenten gelehrt wurden, aber leider erinnere ich mich nicht) Ich habe Fresh im Forum gefragt, aber ich habe keine definitive Antwort erhalten.
 

Wenn Yandex gesperrt ist, können Sie Google verwenden.

Kurz gesagt, der Tangens eines Winkels in einem rechtwinkligen Dreieck ist das Verhältnis zwischen dem gegenüberliegenden Schenkel und dem angrenzenden Schenkel.

Überträgt man dies auf die Situation im MT-Diagramm, so ergibt sich, dass das gegenüberliegende Bein den Punkten (in Prozent) und das angrenzende Bein den Balken (ebenfalls in Prozent) entspricht.

Beispiel:

EURUSD Eröffnung 6.03 1.3732 Eröffnung 7:03 1.3860 insgesamt 128 pips. Bei M1 1440 bar tan = 128/1440=0,08889

Diese Gleichung wird hauptsächlich in der Funktion ObjectGetValueByShift() verwendet

 
Ist es möglich, einen Server eines Drittanbieters zu verwenden? Ich habe nur diesen einen angeschlossen http://buy.fineproxy.org/
 
Erläutern Sie bitte, wie man Daten aus einer Tabelle (*.csv) in ein dreidimensionales statisches Array einpasst.
Die erste Spalte der Tabelle enthält den Index für die erste Dimension des Arrays,
Die zweite Spalte enthält den Index für die zweite Dimension des Arrays,
Die dritte und weitere Spalten enthalten die Werte selbst für die dritte Dimension des Arrays.
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:
Bitte erklären Sie, wie man Daten aus einer Tabelle (*.csv) in ein dreidimensionales statisches Array einfügt.
Die erste Spalte der Tabelle hat einen Index auf der ersten Dimension des Arrays,
Die zweite Spalte ist der Index für die zweite Dimension des Arrays,
In der dritten und weiteren Spalten - die Werte selbst entsprechend der dritten Dimension des Arrays.



Wenn für die Analyse in Excel selbst, die Zusammenfassungstabelle.

Um einige der Daten anzuzeigen, müssen wir wohl zusätzliche String-Arrays haben, die mit dem Indexwert übereinstimmen.

 
splxgf:


.... sieht es so aus, als müssten wir zusätzliche String-Arrays haben, die mit dem Indexwert übereinstimmen.

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

Wie kann ich alle Objekte wie OBJ_ARROW_RIGHT_PRICE löschen?

Der Befehl ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE) löscht nicht ! auch nicht nach einem Wechsel des Zeitrahmens (um den gesamten Chart zwangsweise neu zu zeichnen)

Ich habe ein einfaches Skript geschrieben, das in den Kommentaren auf dem Bildschirm erscheint:

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

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

Alert("objectTipe=", ObjectType("MyArrow"), "ARROW CODE=",ObjectGet("MyArrow",OBJPROP_ARROWCODE) ) ; // Alptraum "objecType=" =22, habe nicht verstanden warum nicht 36 wie in der ersten Zeile ?

ResetLastError() ;

Alert("script delete arrow right price=",ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE)," lastError=",GetLastError() ) ; // gelöschte Objekte =0, Fehlercode =0

Ich setze das Experiment fort, indem ich schreibe: ObjectsDeleteAll(22) ; // gelöschte Objekte =0 wieder

 
VoDyaMon:

Wie kann man alle Objekte wie OBJ_ARROW_RIGHT_PRICE löschen?


Lesen Sie die Hilfe noch einmal:

ObjectsDeleteAll

Löscht alle Objekte eines bestimmten Typs und in einem bestimmten Unterfenster.

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

Wenn sich die Objekte im Hauptfenster des Diagramms befinden:

ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE);
 
isn-88:


Lesen Sie noch einmal die Hilfe:

ObjectsDeleteAll

Löscht alle Objekte des angegebenen Typs und im angegebenen Unterfenster des Diagramms.

Wenn sich Objekte im Unterfenster des Hauptdiagramms befinden:

Schlagen Sie einfach keine dummen Optionen vor. Mit diesem Befehl werden alle Objekte vollständig aus dem Diagramm entfernt.