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

 
1Rakso >> :

perché il segnale non funziona?

Volevo impostare la zona del filtro in pip dal più alto e dal più basso... il segnale non funziona cosa sto facendo di sbagliato?

Non sono sicuro di cosa stai cercando qui...

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)); //поиск лоу наименьшего значения

Se ho un alto e un basso di N barre, lo cerco così

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

dove hibar e lobar sono il numero di barre su cui si cerca il massimo e il minimo.

tf_100 - TimeFrame in cui vengono ricercati max e min.

1 - la ricerca parte da 1 barra, se volete che cerchi su zero barre, dovete impostare 0.

 
Swan >> :


Ohhhh, sono così imbarazzato, sono così imbarazzato.
 
Dimi >> :

Ora ecco la domanda: come posso ottenere il valore 20 di questo array nelle variabili?

bind double Max_array[20]; fuori dalla funzione (globalmente), se necessario, anche statico

 
alsu >> :

Per prima cosa, mettete il codice in ordine logico.

ArraySetAsSeries(Max_array,true) - perché?

for(c=1; c <= total_c; c++) - gli array sono indicizzati da 0 a total_c-1.

Onestamente non capisco perché non ti piace la logica... Qui ArraySetAsSeries(Max_array,true) Imposta la direzione di indicizzazione nell'array. O c'è qualcosa che non va?

 
Dimi >> :

Ad essere onesti, non capisco perché non vi piaccia la logica. ArraySetAsSeries(Max_array,true) imposta qui la direzione di indicizzazione nell'array. O c'è qualcosa che non va?


Questo non è ovviamente un errore, solo una stringa logicamente inutile. ArraySetAsSeries ha senso quando l'array viene ulteriormente aumentato di dimensione (per esempio, su ogni nuova barra), allora il nuovo elemento avrà indice 0. Nel caso statico, tuttavia, non fa differenza in quale ordine gli elementi sono disposti nella memoria. Per quanto riguarda la seconda nota: in un array di dimensione N, l'ultimo elemento ha indice N-1. Codice corretto for(c=0; c < total_c; c++)

 
alsu >> :

Questo non è ovviamente un errore, solo una stringa logicamente inutile. ArraySetAsSeries ha senso quando l'array viene ulteriormente aumentato di dimensione (per esempio, su ogni nuova barra), allora il nuovo elemento avrà indice 0. Nel caso statico, tuttavia, non fa differenza in quale ordine gli elementi sono disposti nella memoria. Per quanto riguarda la seconda nota: in un array di dimensione N, l'ultimo elemento ha indice N-1. Codice corretto for(c=0; c < total_c; c++)

Grazie, ora capisco l'errore. Ma non posso ancora ottenerlo con il doppio Max_array[20];... Lasciatemi spiegare un po' diversamente. Questa funzione cerca il valore massimo di RSI nelle ultime 20 barre. Voglio che cerchi il valore massimo su quel numero di barre che sarà calcolato da un'altra funzione. Cioè, ad ogni nuova barra questo numero di barre calcolate cambierà. Può essere 10, può diventare 20 o 30.... Come implementarlo nel codice? La funzione di calcolo della barra è pronta, come inserirla ora al posto di questo numero 20 in questo array double Max_array[20]; ????

 
Dimi >> :

Grazie ora capisco l'errore. Ma questo doppio Max_array[20]; non mi arriva ancora... Lasciatemi spiegare in un modo leggermente diverso. Questa funzione cerca il valore massimo di RSI nelle ultime 20 barre. Voglio che cerchi il valore massimo su quel numero di barre che sarà calcolato da un'altra funzione. Cioè, ad ogni nuova barra questo numero di barre calcolate cambierà. Può essere 10, può diventare 20 o 30.... Come implementarlo nel codice? La funzione per calcolare le barre è pronta, come inserirla ora al posto di questo numero 20 in questo array double Max_array[20]; ????


molto semplice:

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

Non sono sicuro di cosa stai cercando qui...

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)); //поиск лоу наименьшего значения

se max e min per N barre, si cerca così

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

dove hibar e lobar sono il numero di barre in cui si cerca il massimo e il minimo.

tf_100 - TimeFrame, al quale vengono cercati max e min.

1 - la ricerca parte da 1 barra, se vuoi che cerchi su una barra zero, devi mettere 0.

Grazie proverò la tua variante, per quanto riguarda le barre stavo cercando un livello da 50 a 100 barre, ecco perché le ho messe in esterno per l'ottimizzazione.

Ho trovato l'errore, non ho inserito l'arrayf nelle variabili globali e ho messo il valoref nelle variabili esterne nell'ordine 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)];

Sono davvero stupido, roba di base come......

 
alsu >> :

molto semplicemente:

Grazie mille!!! Sembra funzionare!!!

Proprio come un orologio, grazie ancora!!! È stato davvero facile.
 

Amici, buon pomeriggio.


Se non vi dispiace, ditemi come risolvere queste difficoltà:


Sto scrivendo uno dei miei primi EA e ho incontrato queste difficoltà:


1) È possibile "distinguere gli ordini" per la stessa valuta, ma fatti su TF diversi?

(Per esempio, faccio trading con un EA sulla stessa coppia di valute, su H4 e M30... Ho fatto un trade su H4, e gli indicatori mostrano un movimento su questo TF, ma questo trade è stato chiuso a causa di un segnale di chiusura su M30... e nel mio Expert Advisor "usando dati da più TF" non è previsto...)

Cioè, potrei in qualche modo distinguere programmaticamente questi trade su H4 e M30?


2) Mentre scrivevo l'Expert Advisor, ho avuto un pensiero ovvio :) "I segnali per chiudere una posizione, e i segnali per aprire la posizione opposta invertendo" non sono sempre buoni....

Spesso si perdono molti profitti prima che si generi il segnale opposto...

Così ho deciso di usare un trailing stop e formare un target usando Fibonacci.


Potete per favore consigliarmi come impostare un target (in un EA) come punto di riferimento per un certo livello di Fibonacci quando si piazza un ordine per un trade?


3) C'è un indicatore: BrainTrend1StopN. Per favore consigliate come "tirare" gli stop al livello dei "punti" generati da questo indicatore.


Grazie mille in anticipo.
File:
Motivazione: