[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 270

 
1Rakso >> :

Warum funktioniert das Signal nicht?

Ich wollte die Filterzone in Pips vom höchsten Hoch und niedrigsten Tief festlegen... das Signal funktioniert nicht, was mache ich falsch?

Ich bin mir nicht ganz sicher, wonach Sie hier suchen...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

Wenn ich ein Hoch und ein Tief von N Balken habe, suche ich wie folgt

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

wobei hibar und lobar die Anzahl der Balken sind, auf denen das Hoch und das Tief gesucht werden.

tf_100 - Zeitrahmen, in dem nach Max und Min gesucht wird.

1 - die Suche beginnt bei 1 Balken, wenn Sie wollen, dass die Suche bei null Balken beginnt, sollten Sie 0 einstellen.

 
Swan >> :


Ohhhh, das ist mir so peinlich, das ist mir so peinlich.
 
Dimi >> :

Nun stellt sich die Frage: Wie kann ich den Wert 20 dieses Arrays in Variablen übertragen?

bind double Max_array[20]; außerhalb der Funktion (global), falls erforderlich, auch statisch

 
alsu >> :

Bringen Sie den Code zunächst in eine logische Reihenfolge.

ArraySetAsSeries(Max_array,true) - warum?

for(c=1; c <= total_c; c++) - Arrays werden von 0 bis total_c-1 indiziert.

Ich verstehe ehrlich gesagt nicht, warum Ihnen die Logik nicht gefällt... Hier ArraySetAsSeries(Max_array,true) Legt die Indizierungsrichtung im Array fest . Oder ist etwas nicht in Ordnung?

 
Dimi >> :

Um ehrlich zu sein, verstehe ich nicht, warum Ihnen die Logik nicht gefällt. ArraySetAsSeries(Max_array,true) legt hier die Indizierungsrichtung im Array fest . Oder ist etwas nicht in Ordnung?


Dies ist natürlich kein Fehler, sondern nur eine logisch unnötige Zeichenfolge. ArraySetAsSeries ist sinnvoll, wenn das Array weiter vergrößert wird (z.B. bei jedem neuen Balken), dann hat das neue Element den Index 0. Im statischen Fall macht es jedoch keinen Unterschied, in welcher Reihenfolge die Elemente im Speicher angeordnet sind. Zur zweiten Anmerkung: In einem Array der Größe N hat das letzte Element den Index N-1. Korrekter Code for(c=0; c < total_c; c++)

 
alsu >> :

Dies ist natürlich kein Fehler, sondern nur eine logisch unnötige Zeichenfolge. ArraySetAsSeries ist sinnvoll, wenn das Array weiter vergrößert wird (z.B. bei jedem neuen Balken), dann hat das neue Element den Index 0. Im statischen Fall macht es jedoch keinen Unterschied, in welcher Reihenfolge die Elemente im Speicher angeordnet sind. Zur zweiten Anmerkung: In einem Array der Größe N hat das letzte Element den Index N-1. Korrekter Code for(c=0; c < total_c; c++)

Danke, jetzt verstehe ich den Fehler. Aber ich kann immer noch nicht bekommen es mit double Max_array[20];... Lassen Sie mich das ein wenig anders erklären. Diese Funktion sucht nach dem Maximalwert des RSI in den letzten 20 Bars. Ich möchte, dass es nach dem Maximalwert auf dieser Anzahl von Balken sucht, der von einer anderen Funktion berechnet wird. Das heißt, bei jedem neuen Balken ändert sich die Anzahl der berechneten Balken. Es können 10 sein, es können 20 oder 30 werden.... Wie lässt sich das im Code umsetzen? Die Balkenberechnungsfunktion ist fertig, wie kann man sie nun anstelle dieser Zahl 20 in dieses Array einfügen double Max_array[20]; ????

 
Dimi >> :

Danke, jetzt verstehe ich den Fehler. Aber diese doppelte Max_array[20]; noch nicht zu mir kommen... Lassen Sie mich das auf eine etwas andere Weise erklären. Diese Funktion sucht nach dem Maximalwert des RSI in den letzten 20 Bars. Ich möchte, dass es nach dem Maximalwert auf dieser Anzahl von Balken sucht, der von einer anderen Funktion berechnet wird. Das heißt, bei jedem neuen Balken ändert sich die Anzahl der berechneten Balken. Es können 10 sein, es können 20 oder 30 werden.... Wie lässt sich das im Code umsetzen? Die Funktion zur Berechnung der Balken ist fertig, wie kann man sie nun anstelle der Zahl 20 in dieses Array einfügen double Max_array[20]; ????


sehr einfach:

double IsMaxRSI(int total_c) {
   ...
   double Max_array[];  
   ArrayResize( Max_array, total_c);
   ...
}
виноват, код куда-то выпал
 
Dimi >> :

Ich bin mir nicht ganz sicher, wonach Sie hier suchen...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

wenn max und min für N Balken, es wird wie folgt gesucht

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

wobei hibar und lobar die Anzahl der Takte sind, bei denen das Hoch und das Tief gesucht werden.

tf_100 - TimeFrame, bei dem nach Max und Min gesucht wird.

1 - die Suche beginnt mit einem Balken, wenn Sie wollen, dass die Suche bei null Balken beginnt, müssen Sie 0 eingeben.

Vielen Dank, ich werde versuchen, Ihre Variante, über die Balken war ich für 50 bis 100 Bars Ebene suchen, das ist, warum ich sie in externen für die Optimierung setzen.

ich habe den Fehler gefunden, ich habe dasf -Array nicht in die globalen Variablen eingefügt und ich habe denf -Wert in die externen Variablen in der Reihenfolge tf))))

extern int tf_100  =   3; //)))

int tf[10]={0,1,5,15,30,60,240,1440,10080,43200};//массив таймфрейма забыл его вставить)))

double hi_100 = High[iHighest(Symbol(), tf[ tf_100], MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf[ tf_100], MODE_LOW, lobar, 1)];

Ich bin wirklich dumm, grundlegende Dinge wie......

 
alsu >> :

sehr einfach:

Vielen Dank!!! Scheint zu funktionieren!!!

Wie am Schnürchen, danke nochmal!!! Es war wirklich einfach.
 

Freunde, guten Tag.


Ich würde mich freuen, wenn Sie mir sagen könnten, wie man solche Schwierigkeiten lösen kann:


Ich schreibe gerade einen meiner ersten EAs und bin auf diese Schwierigkeiten gestoßen:


1) Ist es möglich, Aufträge für dieselbe Währung zu unterscheiden, die jedoch auf verschiedenen TFs getätigt wurden?

(Zum Beispiel handle ich einen EA auf dem gleichen Währungspaar, auf H4 und M30... Ich habe einen Trade auf H4 gemacht, und die Indikatoren zeigen Bewegung auf dieser TF, aber dieser Trade wurde aufgrund eines Closing-Signals auf M30 geschlossen... und in meinem Expert Advisor ist "using data from multiple TFs" nicht vorgesehen...)

D.h., könnte ich irgendwie programmatisch zwischen diesen Geschäften auf H4 und M30 unterscheiden?


2) Während ich den Expert Advisor schrieb, hatte ich einen naheliegenden Gedanken:) "Signale zum Schließen einer Position und Signale zum Öffnen der entgegengesetzten Position durch Umkehrung" sind nicht immer gut....

Oft gehen viele Gewinne verloren, bevor sich das Gegensignal bildet...

Daher habe ich beschlossen, einen Trailing-Stop zu verwenden und ein Ziel nach Fibonacci zu bilden.


Können Sie mir bitte sagen, wie ich ein Ziel (in einem EA) als Referenzpunkt für ein bestimmtes Fibonacci-Level festlegen kann, wenn ich einen Auftrag für einen Handel erteile?


3) Es gibt einen Indikator: BrainTrend1StopN. Bitte teilen Sie mir mit, wie ich die Stops auf das Niveau der von diesem Indikator erzeugten "Punkte" ziehen kann.


Vielen Dank im Voraus.
Dateien:
Grund der Beschwerde: