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

 
xruss >> :
Kennen Sie die Antwort auf meine Zusatzfrage?

Die unten stehende Bedingung ist in Ordnung, aber ich verwende die Aktualisierungsfunktion nicht, daher kann ich Ihnen nichts dazu sagen.

P.S. Ich bin auch ein Anfänger.

 
xruss писал(а) >>
aber weiß jemand, ob diese Reihenfolge der Auflistung von Bedingungen durch mehrere (&&) in einer Zeile des Operators if() akzeptabel ist?

Akzeptabel, obwohl ich mehr Klammern setzen würde - Operationen haben in verschiedenen Sprachen unterschiedliche Prioritäten -, um nicht an Trivialitäten zu denken - etwa so:

if ((Max_price_1>EMA20_Open) && (Min_price_1>EMA20_Open) && (Heiniken_Red>Heiniken_Blue))
   {
    Opn_B=true;
   }
 
zfs >> :

Sie suchen nach Höchstwerten unter den x nächsten Nachbarn des Indikators und vergleichen diese.

Wie sieht die Funktion der Suche nach den letzten 2 Maxima des RSI aus?

Kann mir jemand den Code zeigen?

 
xruss писал(а) >>

...(muss die Aktualisierung mit RefreshRates() erfolgen?)...

Was ist der Zweck von RefreshRates? Der Punkt ist, dass nach einem neuen Tick die eingebauten Variablen (wie Ask, Bid, etc.) gelesen und an die Funktion start() übergeben werden. Wenn der Start zu lange dauert, kann ein neuer Tick kommen, aber die Variablen werden nicht aktualisiert. Das ist der Fall, wenn Sie RefreshRates aufrufen.

Wenn der Start zu lange dauert? Normalerweise wird bei einem laufenden Handelsvorgang ein Netzwerkaustausch durchgeführt, die Erlaubnis des Servers für den Vorgang benötigt und eine Antwort erwartet. In der Regel wird RefreshRates also verwendet, wenn mehr als 1 Auftrag auf einen Tick geöffnet/geschlossen wird. Sie wird zwischen den Operationen verwendet.

 
amur писал(а) >>

Wie sieht die Suchfunktion für die letzten 2 Höchststände des RSI aus?

Kann mir jemand den Code zeigen?

So seltsam es klingen mag, die Aufgabe ist nicht einfach. Technisch gesehen müssen Sie zurückgehen und nach solchen Punkten suchen:

y(x-1)<y(x) und y(x)>y(x+1).

Dabei werden jedoch lokale Extrema gefunden, und das ist ein bisschen viel verlangt - Sie werden mit dem Ergebnis nicht zufrieden sein.

 
Itso >> :

So seltsam es klingen mag, die Aufgabe ist nicht einfach. Technisch gesehen, müssen Sie zurückgehen und nach solchen Punkten suchen:

y(x-1)<y(x) und y(x)>y(x+1).

Dabei werden jedoch lokale Extrema gefunden, und das ist ein bisschen daneben - Sie werden mit dem Ergebnis nicht zufrieden sein.

Ich denke in etwa dasselbe, bin aber durch einige Gedanken verwirrt: Wie wird das erste Maximum vom zweiten unterschieden?

weil diese Bedingung sowohl für das erste Maximum als auch für das zweite und dritte Maximum gilt....

 
amur писал(а) >>

Ich denke in dieselbe Richtung, aber einige Gedanken verwirren mich: Wie wird das 1. Maximum vom 2,

weil sowohl das erste Maximum als auch das 2. und 3. Maximum unter diese Bedingung passen....

Ich kann Ihnen empfehlen, nach ZigZag zu suchen und darüber zu lesen (es gibt viel Literatur). Ich würde den Rochev Zickzack - 'Zigzag R' empfehlen.

 
Itso >> :

Ich kann die Suche und Lektüre über den ZigZag empfehlen (es gibt reichlich Literatur). Ich würde den Rochev Zickzack - 'Zigzag R' empfehlen.

>>Danke, ich werde es mir ansehen.

Ich habe einen Blick auf.... geworfen((( Ich verstehe nichts richtig... Das Array wird ausgefüllt, und bei der Funktion shifft ist unklar, was sie genau tut.

 
amur писал(а) >>

Danke, ich werde es mir ansehen.

Ich habe mir....(((( angeschaut und verstehe nichts... Das Array ist gefüllt, und die shifft-Funktion versteht nicht, was genau sie tut.

Das ist die Sache - die Materie ist ziemlich komplex - aber dieser Zickzackkurs funktioniert ohne Fehler. Sie können es für RSI verwenden.

 
amur >> :

Wie sieht die Funktion zum Auffinden der letzten 2 Höchststände des RSI aus?

Kann jemand das in Codeform zeigen?

Es sieht so aus:

bool exit_for=false;
int max_1=0;int max_2=0;
for(int k=0; k<Bars; k++)
{
	if(	iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k)<iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)
		&& iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+1)>iRSI(Symbol(),0, rsi_period,PRICE_CLOSE, k+2) 	)
	{
		//Если это первый максимум:
		if( max_1==0)
			max_1= k+1;//Записываем номер бара экстремума
		else
		//Если первый найден, записываем второй
		{	
                        max_2= k+1;
                        exit_for=true;
                } 
	}
        //Выход из цикла, когда найдены оба максимума
        if( exit_for==true) k=Bars+1;  
}