[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 33

 
xruss >> :
Conosci la risposta alla mia domanda aggiuntiva?

La condizione qui sotto va bene, ma non uso la funzione di aggiornamento, quindi non so dirti.

P.S. Anche io sono un principiante.

 
xruss писал(а) >>
ma qualcuno sa se tale ordine di elencare condizioni attraverso diversi (&&) in una linea dell'operatore if() è accettabile?

Accettabile, anche se metterei più parentesi - le operazioni hanno priorità diverse in lingue diverse - per non pensare alle banalità - qualcosa come:

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

Si cercano i massimi tra i vicini x più vicini dell'indicatore e li si confronta.

Come si presenta la funzione di ricerca degli ultimi 2 massimi su RSI ?

Qualcuno può mostrarmi il codice?

 
xruss писал(а) >>

...(il refresh con RefreshRates() deve essere fatto?)...

Qual è lo scopo di RefreshRates? Il punto è che dopo un nuovo tick, le variabili incorporate (come Ask, Bid, ecc.) vengono lette e passate alla funzione start(). Se l'avvio richiede troppo tempo, può arrivare un nuovo tick, ma le variabili non vengono aggiornate. Questo è quando chiamate RefreshRates.

Quando l'inizio richiede troppo tempo? Di solito quando un'operazione commerciale è in corso - c'è uno scambio di rete, il permesso del server per l'operazione è richiesto, e ci si aspetta una risposta. Quindi di solito RefreshRates viene usato quando più di 1 ordine viene aperto/chiuso in un tick. Si usa tra un'operazione e l'altra.

 
amur писал(а) >>

Com'è la funzione di ricerca degli ultimi 2 massimi su RSI?

Qualcuno può mostrarmi il codice?

Per quanto strano possa sembrare, il compito non è facile. Tecnicamente bisogna tornare indietro e cercare punti come quello:

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

Ma questo troverà gli estremi locali, e questo è un po' una forzatura - non sarete felici del risultato.

 
Itso >> :

Per quanto strano possa sembrare, il compito non è facile. Tecnicamente, bisogna tornare indietro e cercare punti come quello:

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

Ma questo troverà gli estremi locali, e questo è un po' fuori luogo - non sarete felici del risultato.

Sto pensando più o meno lo stesso, ma confuso da alcuni pensieri: come si distinguerà il 1° massimo dal 2°,

perché questa condizione si adatta sia al primo massimo che al 2° e 3°....

 
amur писал(а) >>

Sto pensando sulla stessa linea, ma sono confuso da alcuni pensieri: come si differenzierà il 1° massimo dal 2° massimo,

perché sia il primo massimo che il 2° e il 3° massimo rientrano in questa condizione....

Posso consigliarti di cercare e leggere su ZigZag (c'è molta letteratura). Raccomanderei lo zigzag Rochev - 'Zigzag R'.

 
Itso >> :

Posso consigliare di cercare e leggere sullo ZigZag (c'è molta letteratura). Raccomanderei lo zigzag Rochev - 'Zigzag R'.

>>Grazie, darò un'occhiata.

Ho dato un'occhiata a ....(((( non capisco niente chiaramente... L'array viene riempito, poi la funzione shifft non è chiaro cosa faccia esattamente.

 
amur писал(а) >>

Grazie, darò un'occhiata.

Guardando....(((( non ci capisco niente... L'array viene riempito, poi la funzione shifft non è chiaro cosa faccia esattamente.

Questo è il punto - la questione è abbastanza complessa - ma questo zigzag funziona senza errori. Potete usarlo per la RSI.

 
amur >> :

come si presenta la funzione di ricerca degli ultimi 2 massimi sull'RSI?

qualcuno può mostrarlo in forma di codice?

Sembra così:

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;  
}