Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1207

Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
perché questo ciclo non finisce quando ... (Ho aggiunto la seconda condizione per i < 2000 quando ho capito che il ciclo è infinito) MQL4
cv * tvp * (double)stop < ml
perché questo ciclo non finisce quando ... (Ho aggiunto la seconda condizione per i < 2000 quando ho capito che il ciclo è infinito)
Il ciclo non terminerà fino a quando
cv * tvp * (double)stop < ml
Per far terminare il ciclo quando questa condizione è soddisfatta, possiamo scrivere quanto segue nel corpo del ciclo
o
In MQL4 solo in questo modo:
Risultato:
Grazie ancora per il vostro aiuto. Vi sarei molto grato se poteste anche dirmi come fare quanto segue...
Quale funzione o costrutto di linguaggio può essere usato per calcolare il valore dell'indice di un elemento della matrice che aveva l'indice prima dell'ordinamento.
Qui, ho l'array A[] prima dell'ordinamento (la linea superiore) e lo stesso array dopo l'ordinamento. Un elemento con valore 5 prima dell'ordinamento era all'indice 9
, e un elemento con valore 5 dopo l'ordinamento è all'indice 3.
La funzione trova una cella con valore 5 nella matrice ordinata e salva il numero di indice di questa cella nella matrice ordinata in W, che è uguale all'indice 3
ArraySort(А,10,0,MODE_ASCEND);
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND);
DOMANDA: Dopo ArrayBsearch(), come si può memorizzare il valore dell'indice di una cella con valore 5 in una variabile che ha un array non ordinato.
Cioè, salva il valore di 9.
Grazie per il vostro aiuto.
Alexey Viktorov
Mihail Matkovskij
Grazie!
Ciao a tutti. Chi sa come impostare un valore negativo in un indicatore personalizzato e farlo funzionare, cioè "spostare l'indicatore rispetto al grafico del prezzo".
Esempio: se metti un valore -4 nell'indicatore della media mobile, si sposta rispetto al grafico a sinistra - e funziona.
Ma se metti questo valore nel codice dell'indicatore - allora l'indicatore smette di funzionare. e mostra tutti i valori TF in rosso.
Grazie ancora per il vostro aiuto. Vi sarei molto grato se poteste anche dirmi come fare quanto segue...
Quale funzione o costrutto di linguaggio può essere usato per calcolare il valore dell'indice di un elemento della matrice, che questo elemento aveva prima dell'ordinamento.
Qui, ho l'array A[] prima dell'ordinamento (la linea superiore) e lo stesso array dopo l'ordinamento. Un elemento con valore 5 prima dell'ordinamento era all'indice 9
, e un elemento con valore 5 dopo l'ordinamento è all'indice 3.
La funzione trova una cella con valore 5 nella matrice ordinata e salva il numero di indice di questa cella nella matrice ordinata in W, che è uguale all'indice 3
ArraySort(А,10,0,MODE_ASCEND);
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND);
DOMANDA: Dopo ArrayBsearch(), come si può memorizzare il valore dell'indice di una cella con valore 5 in una variabile che ha un array non ordinato.
Cioè, salva il valore di 9.
Grazie per il tuo aiuto.
ma non ordinare i dati a caso e senza uno scopo globale.
Dal progetto attuale: prendete un array (corto), l'output saranno gli indici degli elementi nel giusto ordine:
{
for(int i=0;i<5;i++)
index[i]=i;
for(int i=0;i<4;i++) {
for(int j=1;j<5;j++) {
if (data[index[i]]>data[index[j]]) {
int tmp=index[i];
index[i]=index[j];
index[j]=tmp;
}
}
}
}
per gli array più grandi dobbiamo cambiare l'algoritmo di ordinamento (bubble non va bene per gli array grandi) - cambiatelo.
Il messaggio principale è: non toccare i dati di origine. Operare sia con riferimenti che, ancora meglio, con indici di array. Altrimenti si perdono informazioni che saranno molto necessarie in seguito.
Grazie ancora per il vostro aiuto. Vi sarei molto grato se poteste anche dirmi come fare quanto segue...
Quale funzione o costrutto di linguaggio può essere usato per calcolare il valore dell'indice di un elemento della matrice, che questo elemento aveva prima dell'ordinamento.
Qui, ho l'array A[] prima dell'ordinamento (la linea superiore) e lo stesso array dopo l'ordinamento. Un elemento con valore 5 prima dell'ordinamento era all'indice 9
, e un elemento con valore 5 dopo l'ordinamento è all'indice 3.
Trovo una cella con valore 5 nella matrice ordinata e la funzione salva il numero di indice di questa cella nella matrice ordinata in W, che è uguale all'indice 3
ArraySort(А,10,0,MODE_ASCEND);
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND);
DOMANDA: Dopo ArrayBsearch(), come si può memorizzare il valore dell'indice di una cella con valore 5 in una variabile che ha un array non ordinato.
Questo è per salvare il valore di 9.
Grazie per il vostro aiuto.
Per questo dovete rispondere a due domande:cosa farete se:
1. Ci saranno più valori di 5, in diverse celle della matrice.
2. Non ci sarà nessun valore 5 nell'array.
Perché la funzioneArrayBsearch (per dati ordinati), nel primo caso, darà il primo indice trovato dove il valore della cella è 5, nel secondo caso, darà un elemento vicino al valore 5. Come vorresti trattare un array non ordinato non mi è chiaro.
Ciao a tutti. Chi sa come impostare un valore negativo in un indicatore personalizzato e farlo funzionare, cioè "spostare l'indicatore rispetto al grafico del prezzo".
Esempio: se metti un valore -4 nell'indicatore della media mobile, si sposta rispetto al grafico a sinistra - e funziona.
Ma se metti questo valore nel codice dell'indicatore, l'indicatore smette di funzionare e mostra valori rossi per tutti i TF.
SetIndexShift.
Lo spostamento è anche specificato in iMA:
iMA
Restituisce il valore dell'indicatore tecnico della media mobile.
doppioiMA(
simbolo stringa,// nome del simbolo
inttimeframe,// timeframe
intma_period,// periodo
intma_shift,// sposta la media
intma_method,// metodo di mediazione
intapplied_price,//tipo di prezzo
intshift// shift
);
Parametri
simbolo
[Nome del simbolo i cui dati saranno usati per calcolare l'indicatore.NULL significa simbolo corrente.
timeframe
[Periodo. Può essere uno dei valori dell'enumerazioneENUM_TIMEFRAMES. 0 significa periodo del grafico corrente.
ma_periodo
[Periodo di mediazione per il calcolo dell'indicatore.
ma_turno
[Spostamento dell'indicatore rispetto al grafico del prezzo.
ma_metodo
[Metodo di mediazione. Può essere uno qualsiasi dei valori dell'enumerazioneENUM_MA_METHOD.
prezzo applicato
[Prezzo applicato. Può essere qualsiasi valore dell'enumerazioneENUM_APPLIED_PRICE.
turno
[Indice del valore ottenuto dal buffer dell'indicatore (spostamento relativo alla barra corrente di un determinato numero di periodi indietro).
Valore restituito
Valoredell'indicatore tecnico Moving Average.
Esempio:
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
https://docs.mql4.com/ru/indicators/ima
Ecco un esempio già pronto, ma in MQL5: https://www.mql5.com/ru/docs/indicators/ima ,
che può essere facilmente tradotto in MQL4.
Non c'è alcuno spostamento nelle impostazioni dell'indicatore. Sono andato nel codice e ho messo shift -4 nel codice e l'indicatore ha smesso di funzionare - mostra che tutti i TF sono rossi. Sono seduto qui a chiedermi perché.
Per fare questo, dovete rispondere a due domande:cosa farete se
1. Ci saranno diversi valori di 5, in diverse celle della matrice.
2. Il valore 5 non sarà nell'array.
Perché la funzioneArrayBsearch (per dati ordinati), nel primo caso, darà il primo indice trovato dove il valore della cella è 5, nel secondo caso, darà un elemento vicino al valore 5. Come vorresti trattare un array non ordinato non mi è chiaro.
Grazie mille per la vostra risposta rapida. Nel mio caso ogni valore di un elemento dell'array è unico ed esiste in una sola istanza. Cioè, il valore 5, come gli altri valori, non si ripete.
Nel mio caso il valore 5 potrebbe non esistere in un array non ordinato. Significa che alcune celle nell'array non ordinato possono essere vuote.
Ma se il valore 5 non è nell'array non ordinato, allora non posso specificare il valore 5 come secondo parametro nella funzione ArrayBsearch(). Solo i valori che necessariamente esistono nell'array non ordinato entrano in questa funzione.
Grazie per il vostro aiuto