Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 456

 
E_Ghazaryan:
Ja, richtig =D )))) Bereits angebracht.)))

Alle diese Parameter sollten nach dem Komma in iCustom() nach dem Indikatornamen aufgeführt werden, und danach zwei weitere Parameter: Puffernummer und Taktnummer, aus der die Daten entnommen werden. D.h:

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

Alle aufgelisteten Werte können durch externe Variablen des EA gesetzt werden und die Namen dieser Variablen können in iCustom() anstelle der hart kodierten Werte geschrieben werden.

 

Können Sie mir sagen, warum?

doppelt d = 0,07;

d = NormalizeDouble(d,2);

in beiden Fällen d== 0,07000000000000001

Wie lasse ich 2 Dezimalstellen stehen?

 
pusheax:

Können Sie mir sagen, warum?

doppelt d = 0,07;

d = NormalizeDouble(d,2);

in beiden Fällen d== 0,07000000000000001

Wie kann man 2 Dezimalstellen lassen?


Beachten Sie, dass eine normalisierte Zahl bei der Ausgabe in Journal mit Print() eine größere Anzahl von Dezimalstellen enthalten kann, als Sie erwarten. Zum Beispiel,

   double a=76.671;             // нормализованное число с 3 знаками после запятой
   Print("Print(76.671)=",a);   // выведем его как есть
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // выведем с заданной точностью

wird im Terminal ausgegeben:

  DoubleToString(a,8)=76.67100000

  Print(76.671)=76.67100000000001


Das heißt, für den Druck ist die Ausgabe von zusätzlichen Werten kein Problem.

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Karputov Vladimir:


Beachten Sie, dass eine normalisierte Zahl bei der Ausgabe in das Journal mit Print() mehr Dezimalstellen enthalten kann, als Sie erwarten. Zum Beispiel,

wird im Terminal ausgegeben:


Beim Drucken ist die Ausgabe zusätzlicher Werte also kein Problem.

Danke, es ist nur, wenn ich versuche, eine Position mit 0,07 viel es erzeugt Fehler (ich dachte, es ist die Sache), es kann etwas anderes sein, ich werde versuchen, mehr herauszufinden.
 
pusheax:
Danke, es ist nur so, dass, wenn ich versuche, eine Position mit 0,07 Lot zu eröffnen, eine Fehlermeldung erscheint (ich dachte, das sei das Problem), es muss etwas anderes sein, ich werde es weiter untersuchen.
Als erstes sollten Sie sich die Beschreibung der Fehlernummer ansehen. Dadurch wird der Suchpfad verkürzt.
 

Guten Abend

Ich habe ein dynamisches Array deklariert

double all_order[][10];

Ich habe in OnInit neu definiert

ArrayResize(all_order, 20);

Ich gebe Daten in die Funktion

void OR_spisok(double a0, double a1, double a2, double a3, double a4, double a5)

{

int a10=int(a0);

all_order[a10][0]=a0;

all_order[a10][1]=a1;

all_order[a10][2]=a2;

all_order[a10][3]=a3;

all_order[a10][4]=a4;

all_order[a10][5]=a5;

}

drei Zeilen funktionieren gut, bei 4 wird es eng

2015.10.09 20:13:47.908 3102 EURUSD,H1: array out of range in '3102.mq4' (393,10)

393,10 ist es:

all_order[a10][0]=a0;

Was ist los?

Entfernte Zeile#property strict

Das Skript funktioniert, kann ich ohne diese Zeile fortfahren?

 
pr0gre5:

Guten Abend

ein dynamisches Array deklariert


Die Zeile#property strict wurde entfernt

Das Skript funktioniert, kann ich ohne diese Zeile fortfahren?

Ja
 
Artyom Trishkin:

Alle diese Parameter sollten nach dem Komma in iCustom() nach dem Indikatornamen aufgeführt werden, und danach zwei weitere Parameter: Puffernummer und Taktnummer, aus der die Daten entnommen werden. D.h:

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

Alle aufgelisteten Werte können durch externe EA-Variablen gesetzt werden. Schreiben Sie die Namen dieser Variablen in iCustom() anstelle von hart kodierten Werten.

Ich danke Ihnen für Ihre Antwort. Aber Tatsache ist, dass ich dies zunächst tat, aber als ich falsche Werte erhielt, beschloss ich, die Parameter aus iCustom zu entfernen, damit der Expert Advisor die Standardparameter des Indikators verwendet. In beiden Fällen erhält EA jedoch falsche Werte. Alert gibt zum Beispiel 30,32362 für die blaue Linie an, aber wenn ich mir das Indikatorchart ansehe, steht dort 22,3320 an derselben Stelle. Und das Gleiche gilt für andere Linien.
 
E_Ghazaryan:
Vielen Dank für die Antwort. Aber die Sache ist, habe ich so auf den ersten, aber wenn ich falsche Werte, entschied ich mich, die Parameter von iCustom zu entfernen, so dass der EA würde die Standard-Indikator-Parameter verwenden. In beiden Fällen erhält der Expert Advisor jedoch falsche Werte. Alert gibt zum Beispiel 30,32362 für die blaue Linie an, aber wenn ich mir das Indikatorchart anschaue, steht dort 22,3320 an derselben Stelle. Und das Gleiche gilt für die anderen Zeilen.
Zeigen Sie mir den Code, in dem Sie die Daten aus dem Indikator übernehmen.
 
Artyom Trishkin:
Zeigen Sie mir den Code, in dem Sie Daten aus dem Indikator übernehmen.

Der Code war groß. Aber um herauszufinden, was das Problem ist, der Expert Advisor funktioniert nicht nach den Regeln, habe ich diesen Teil in einen separaten geschnitten und begann, es zu testen.

double Ind_Blue=iCustom(NULL, 0, "_MTF_ADX3",1,0);

double Ind_Red=iCustom(NULL, 0, "_MTF_ADX3",2,0);

Alert(" Ind_Blue= " , Ind_Blue , " Ind_Red= " , Ind_Red);

Ich hänge auch die Expert Advisor-Datei an. Ich möchte Ihre Zeit nicht vergeuden, aber ich kann das Problem nicht finden.

Und es gibt einen ähnlichen Indikator mit dem gleichen Problem (Adx mtf). Ich habe eine mq4-Datei für sie. Aber es scheint kein Problem im Code zu geben.

Dateien:
_MTF_ADX3.ex4  5 kb
Adx_mtf.ex4  21 kb
Adx_mtf.mq4  6 kb