[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 183

 

Hallo.

Können Sie mir bitte sagen, ob es möglich ist, den Abstand zwischen zwei Maischen in Punkten zu berechnen?

Meine Variante ist unten angegeben, aber sie funktioniert nicht wie ursprünglich vorgesehen.

Ich danke Ihnen im Voraus.

  int g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = maHX_slow - maHX_fast;
  Alert (g);
 
nemo811:

Meine Variante steht unten, aber sie funktioniert nicht so, wie sie ursprünglich gedacht war.

Ich habe einen Fehler gefunden. Hier ist eine funktionierende Version:

  double g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = (maHX_slow - maHX_fast)/Point;
  Alert (g);
 

Nachmittag....

Wie kann man den Schlusskurs einer Order von einem Terminal zu einem anderen übertragen, wenn man mit demselben Währungspaar handelt?

 
TANKER:

Guten Tag....

Wie kann man den Schlusskurs einer Order von einem Terminal zu einem anderen übertragen, wenn man mit demselben Währungspaar handelt?


Wenn Sie eine solche Frage stellen, dann glaube ich nicht, dass Sie es selbst tun können.
 

Guten Abend zusammen!

Es stellt sich die folgende Frage zu Arrays.

Angenommen, wir müssen n Balken auf eine bestimmte Fluktuation hin analysieren, sie auswählen, in ein Array stellen und mit diesem arbeiten...

Nachfolgend finden Sie etwas Code; ich denke, die Kommentare werden alles erklären.

Die Logik ist wie folgt:

1. Wir legen die erforderliche Anzahl von Balken fest.

2. Gehen Sie das Ganze in der Schleife durch.

Suche nach der Erfüllung der angegebenen Bedingung(close_1>close_2&close_2<close_3).

4. Wenn die Bedingung erfüllt ist, berechnen wir die Differenz zwischen dem Schlusskurs close_1 und close_2.

Und dann die Fragen selbst:

1. Wie bildet man korrekt ein Array und schreibt dort die Werte von diff hinein (natürlich hängt die Dimensionalität des Arrays von der Anzahl der erhaltenen Werte ab)?

2. Berechnen und Anzeigen der Anzahl der Elemente im Array ???

3. Wähle z.B. 3, 6, 7 Elemente und berechne ihre Summe ???

4. und schließlich z.B. direkt zu drucken/zu melden, um das gesamte Array anstelle einzelner Elemente auszugeben.

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   //определяем переменные
   int i, bars;
   double close_1, close_2, close_3;//цена закрытия
   double diff;//вычисление разности close_1 и close_2
   double Mas[];//массив куда надо заносить данные
   
   
   //устанавливаем значения переменных
   bars=60;//количество баров для анализа
   
   for(i=1;i<=bars;i++)
   {
      close_1=iClose(NULL,PERIOD_M1,i);
      close_2=iClose(NULL,PERIOD_M1,i+1);
      close_3=iClose(NULL,PERIOD_M1,i+2);
      
      //условие для отбора в массив
      if(close_1>close_2&&close_2<close_3)//если выполняется это условие, тогда
      {
         diff=close_1-close_2; //считаем разность и записываем это дело в массив 
         
         /*
         Собственно вопросы:
         1. Как правильно сформировать массив и записать туда полученные значения diff ???
         2. Посчитать и вывести количество элементов в массиве ???
         3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???
         4. И последнее, непосредственно вывести например в Print/Alert весь полученный массив, а не только отдельно взятый элемент ???
         */
         
         //Это просто вывод, чтобы удостовериться что наше условие работает, можно потереть... 
         Alert("i ",i," diff: ",DoubleToStr(diff,5));
         
      }
   }


   return(0);
  }
//+------------------------------------------------------------------+
Und hier ist ein Bild, um zu verdeutlichen, welchen Zustand wir bearbeiten. : ))

Vielen Dank im Voraus an alle!

 
NickXXX:

Guten Abend zusammen!

Es stellt sich die folgende Frage zu Arrays.

Angenommen, wir wollen n Balken für eine bestimmte Schwingung analysieren, sie auswählen, in einem Array speichern und mit diesem arbeiten...

Lachen Sie nach dem Wort Indikator.

Es ist einfacher, einen Indikator zu erstellen, der bereits acht Pufferfelder hat, die gesamte Logik darauf zu legen und dann die erforderlichen Elemente über iCustom zu adressieren

In print/alert ist das gesamte Array etwas unleserlich, aber durch Aufzählung und Erstellung einer langen Zeichenkette in der Schleife ist es durchaus möglich.

3. Wähle z.B. 3, 6, 7 Elemente und berechne ihre Summe ???

Entweder machen Sie keine Witze darüber oder lesen Sie die Dokumentation.

double Summa=Mas[3]+Mas[6]+Mas[7];

Empfohlene Lektüre https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

 
splxgf:

Lachen Sie nach dem Wort Indikator.

Es ist einfacher, einen Indikator zu erstellen, der bereits über acht Pufferfelder verfügt, die gesamte Logik dorthin zu übertragen und dann die erforderlichen Elemente über iCustom

In print/alert ist das ganze Array etwas unleserlich, aber durch Aufzählung und Erstellung einer langen Zeichenkette in der Schleife ist es durchaus möglich.

Entweder Sie lassen die Finger davon, oder Sie lesen die Dokumentation.

double Summa=Mas[3]+Mas[6]+Mas[7];

Empfohlene Lektüre https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

Ja, Sie brauchen nicht nach dem Summa zu fragen). Und es geht hier nicht um den Indikator. Es ist eher ein Beispiel, damit ich Arrays richtig verstehen kann.

Ich habe den empfohlenen Artikel bereits gelesen, aber er hat mir nicht geholfen, diese Frage zu beantworten.

Meine Frage ist also immer noch aktuell... Wie wird ein Array in diesem Beispiel aufgebaut? Ich wäre Ihnen sehr dankbar, wenn Sie mir den Code zur Verdeutlichung geben könnten. So ist es einfacher zu verstehen, worüber wir sprechen.

 

Im Gegensatz zu den Rauchindikatoren sind alle Berechnungen mit Balken verknüpft, und die Nummerierung der Balken beginnt bei Null und das Feld wird bei jedem neuen Balken verschoben. Die Verwendung eines Indikators ermöglicht es Ihnen, die Logik der Arbeit mit Arrays auf das System zu übertragen, und bietet darüber hinaus visuelle Möglichkeiten sowie eine einfache Nutzung von einem EA aus.

Erstellen Sie einen Indikator, da es sonst sehr schwierig ist, die berechneten Elemente des Arrays mit den Balken im Diagramm zu verknüpfen.

 
splxgf:

Im Gegensatz zu den Rauchindikatoren sind alle Berechnungen mit Balken verknüpft, und die Nummerierung der Balken beginnt bei Null und das Feld wird bei jedem neuen Balken verschoben. Die Verwendung eines Indikators ermöglicht es Ihnen, die Logik der Arbeit mit Arrays auf das System zu übertragen, und fügt visuelle Fähigkeiten hinzu, die von einem EA aus leicht zu verwenden sind.

Erstellen Sie den Indikator, da es sonst sehr schwierig sein wird, die berechneten Elemente des Arrays mit den Balken im Diagramm zu verbinden.

Ok, ich verstehe, es ist besser, alles im Indikator zu lesen und Werte an den Expert Advisor zu senden.

Aber das Problem hier ist ein wenig anders, ich kann das Array nicht mit Daten füllen, es zeigt Nullen an. Ich möchte es verstehen.

Wiederum anhand dieses Beispiels. Bindung an Bars, die ich habe, gehen Sie einfach sequentiell zu i und arbeiten Sie die richtige Bedingung close_1>close_2&close_2<close_3 (nur als Beispiel).

Und das Interessanteste ist nun, dass wir diff=close_1-close_2 berechnet haben. Wie kann man diesen Wert von diff in ein Array einfügen?

Ich denke, wir können eine zusätzliche Variable int n erstellen und sie in der if-Bedingung um 1 (n++) erhöhen, so erhalten wir, wie oft die Bedingung funktioniert hat, und nehmen diese Zahl als Dimension.

Aber wie kann man den Differenzwert in ein Array einfügen?

 
NickXXX:

Ich verstehe, es ist besser, alles im Indikator zu lesen und die Werte an den Expert Advisor zu senden.

Aber die Frage ist ein bisschen anders, ich kann das Array nicht mit Daten füllen, es gibt mir Nullen aus. Ich möchte es verstehen.

Wiederum anhand dieses Beispiels. Bindung an Bars, die ich habe, gehen Sie einfach sequentiell zu i und arbeiten Sie die richtige Bedingung close_1>close_2&close_2<close_3 (nur als Beispiel).

Und nun das Interessanteste: Wir haben diff=close_1-close_2 berechnet. Wie kann man diesen Wert von diff in ein Array einfügen?

Ich denke, mit Größe können wir zusätzliche Variable int n und erhöhen Sie es um 1 (n +) in wenn Bedingung, werden wir erhalten, wie oft die Bedingung gearbeitet und nehmen diese Zahl als Größe.

Aber wie kann man trotzdem einen Differenzwert in ein Array einfügen?

Wahrscheinlich bin ich gerade eine Witzfigur, aber ich nehme an, Sie sind verblüfft, dass ich in diesem Beispiel ein Skript verwende. Haben Sie das ernst gemeint, als Sie über den Indikator geschrieben haben? Wenn ja, dann mache ich alle dynamischen Berechnungen in einem Indikator oder in einem Expert Advisor direkt. Ich habe es nur einmal gestartet, es mir angesehen und dann den Code korrigiert))).

Die vorherige Frage ist nach wie vor aktuell. Das Thema des Arrays ist nicht gelöst).

Grund der Beschwerde: