int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) la funzione ottiene il segnale di attraversamento.
intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) la funzione riceve il segnale dalla stocastica.
La funzione void GetMomentumSignal() ottiene il valore della quantità di moto.
L'int GetSignal() otterrà il segnale generale basato sulle 3 funzioni precedenti e non solo su di esse. La domanda è questa. Poiché la funzioneint GetSignal() è la principale, per così dire, e ottiene il segnale principale, ottengo tutti i valori dei flap(i_maFast1,i_maFast2, i_maSlow1 ei_maSlow2) e gli stocastici(stochD1,stochD2,stochK1,stochK2)
Non mi piace curiosare nel codice di sinistra, ma mi è subito saltato all'occhio perché c'è un & (!) dopo il doppio nelle funzioni. Questo è ciò che causa gli errori!
borilunad: Non mi piace scavare nel codice personalizzato, ma ho subito notato perché c'è & (!) dopo il doppio nelle funzioni. Questo è ciò che causa gli errori!
Per evitare di spiegare il codice nei dettagli, lo spiegherò brevemente.
Ci sono 3 funzioni:(int GetCrossingMa, int GetStochSignal e intGetSignal())
La funzione int GetSignal() ottiene i valori dei flap e di altri indicatori che vengono passati per riferimentoalle funzioninon-core(int GetCrossingMa eint GetStochSignal) per ottenere i segnali corrispondenti in esse. Voglio farlo per evitare di ottenere gli stessi dati in diverse funzioni. Non credo sia saggio calcolare le stesse maschere in 2 o più funzioni. È più facile calcolarlo solo una volta e basta. Perché sprecare ulteriori risorse per questo?
Quindi ha senso. Significa trasferire parametri tramite link.
Per evitare di spiegare il codice nei dettagli, lo spiegherò brevemente.
Ci sono 3 funzioni:(int GetCrossingMa, int GetStochSignal e intGetSignal())
La funzione int GetSignal() ottiene i valori dei flap e di altri indicatori che vengono passati per riferimentoalle funzioninon-core(int GetCrossingMa eint GetStochSignal) per ottenere i segnali corrispondenti in esse. Voglio farlo per evitare di ottenere gli stessi dati in diverse funzioni. Non credo sia saggio calcolare le stesse maschere in 2 o più funzioni. È più facile calcolarlo solo una volta e basta. Perché sprecare ulteriori risorse per questo?
int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) la funzione ottiene il segnale di attraversamento.
intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) la funzione riceve il segnale dalla stocastica.
La funzione void GetMomentumSignal() ottiene il valore della quantità di moto.
L'int GetSignal() otterrà il segnale generale basato sulle 3 funzioni precedenti e non solo su di esse. La domanda è questa. Poiché la funzioneint GetSignal() è la principale, per così dire, e ottiene il segnale principale, ottengo tutti i valori dei flap(i_maFast1,i_maFast2, i_maSlow1 ei_maSlow2) e gli stocastici(stochD1,stochD2,stochK1,stochK2)
Ho fatto bene a ottimizzare il codice?
Naturalmente, tutti i parametri ottenuti nella funzioneGetSignal() sono passati per riferimento alle funzioni corrispondenti.
Ma qui questo frammento
apparirà un errore durante la compilazione:
Perché?
Questa può essere una variante della ricerca del segnale sulla barra di cui abbiamo bisogno:
//+---------------------------------------------------------------------------------------+//| Проверка пересечения скользящих средних |//+---------------------------------------------------------------------------------------+int GetCrossingMa (int fi_Bar = 1)
{
double i_maFast1 = iMA (Symbol(), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0, fi_Bar), // Вычисляем быстрые скользящие..
i_maFast2 = iMA (Symbol(), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0, fi_Bar + 1), //..средние
i_maSlow1 = iMA (Symbol(), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0, fi_Bar), // Вычисляем медленные скользящие..
i_maSlow2 = iMA (Symbol(), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0, fi_Bar + 1); //..средние//----if (i_maFast2 < i_maSlow2) if (i_maFast1 > i_maSlow1) // Если быстрая скользящая пересекла медленную снизу вверх..return (CROSSINGTOUP); //.. значит, - пересечение вверхif (i_maFast2 > i_maSlow2) if (i_maFast1 < i_maSlow1) // Если быстрая скользящая средняя пересекла медленную сверху вниз..return (CROSSINGTODOWN); //..значит, - пересечение вниз//----return (CROSSINGWAIT); // Ожидаем пересечения
}
//+---------------------------------------------------------------------------------------+//| Получение сигнала от Стохастика |//+---------------------------------------------------------------------------------------+int GetStochSignal (int fi_Bar = 1)
{
double stochD1 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 1, fi_Bar), // Вычисляем значения сигнальной линии..
stochD2 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 1, fi_Bar + 1), //..стохастика
stochK1 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 0, fi_Bar), // Вычисляем значения главной линии..
stochK2 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 0, fi_Bar + 1); //..стохастика//----if (stochD2 < stochK2) if (stochD1 > stochK1) // Если сигнальная линия пересекла главную снизу вверх..return (CROSSINGTOUP); //..значит, - пересечение вверхif (stochD2 > stochK2) if (stochD1 < stochK1) // Если сигнальная линия пересекла главную сверху вниз..return (CROSSINGTODOWN); // ..значит, - пересечение вниз
}
//----return (CROSSINGWAIT); // Ожидаем пересечения
}
//+---------------------------------------------------------------------------------------+//| Получение сигнала от Моментума |//+---------------------------------------------------------------------------------------+double GetMomentumSignal (int fi_Bar = 0)
{return (iMomentum (Symbol(), i_TF, i_momPeriod, 0, fi_Bar));}
//+---------------------------------------------------------------------------------------+//| Получение общего сигнала для входа в рынок |//+---------------------------------------------------------------------------------------+int GetSignal (int fi_Bar = 1)
{
int li_Signal;
//----double ld_SignalMomentum = GetMomentumSignal (fi_Bar);
int li_SignalStoch = GetStochSignal (fi_Bar),
li_CrossingMA = GetCrossingMa (fi_Bar);
//----return (li_Signal);
}
E nell'ultima funzione GetSignal() si fa una "somma" di tutti i segnali (da soli).
P.S. C'è un momento "delicato" nel ricevere il segnale dall'indicatore. Per esempio, si può fissare il fatto che maSlow sia sopra/sotto maFast, o si può "catturare" il momento della loro intersezione. L'approccio e il codice sono diversi.
Quindi ha senso. Significa trasferire i parametri tramite link.
Per evitare di spiegare il codice nei dettagli, lo spiegherò brevemente.
Ci sono 3 funzioni:(int GetCrossingMa, int GetStochSignal e intGetSignal())
La funzione int GetSignal() ottiene i valori dei flap e di altri indicatori che vengono passati per riferimentoalle funzioninon-core(int GetCrossingMa eint GetStochSignal) per ottenere i segnali corrispondenti in esse. Voglio farlo per evitare di ottenere gli stessi dati in diverse funzioni. Non credo sia saggio calcolare la stessa maschera in 2 o più funzioni. È più facile calcolarlo solo una volta e basta. Perché sprecare ulteriori risorse per questo?
Le spiegazioni sono chiare, ma le azioni no. Questi sono questi: Le azioni "Lafunzione int GetSignal() ottiene i valori delle scale e di altri indicatori" nella tua variante sono "discutibili", per usare un eufemismo, perché non c'è bisogno di tali azioni.
completo P.... Vi rendete conto di cosa sta "succedendo" qui? - Tutta la "fila di barre" viene cercata invano, e alla fine del ciclo, le variabili rimangono con dei valori... Indovina cosa succede dopo.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Potete cercare su Google "Windows Task Scheduler". Potete controllare qui.
È necessario creare programmi separati (compiti) per disabilitare i terminali abilitati?
Ecco il mio tutorial sul gufo grezzo di prova:
int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) la funzione ottiene il segnale di attraversamento.
intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) la funzione riceve il segnale dalla stocastica.
La funzione void GetMomentumSignal() ottiene il valore della quantità di moto.
L'int GetSignal() otterrà il segnale generale basato sulle 3 funzioni precedenti e non solo su di esse. La domanda è questa. Poiché la funzioneint GetSignal() è la principale, per così dire, e ottiene il segnale principale, ottengo tutti i valori dei flap(i_maFast1,i_maFast2, i_maSlow1 ei_maSlow2) e gli stocastici(stochD1,stochD2,stochK1,stochK2)
Ho fatto bene a ottimizzare il codice?
Naturalmente, tutti i parametri ottenuti nella funzioneGetSignal() sono passati per riferimento alle funzioni corrispondenti.
Ma qui questo frammento
c'è un errore nella compilazione:
Ecco il mio tutorial sul gufo grezzo di prova:
appare un errore durante la compilazione:
Perché:
Non mi piace scavare nel codice personalizzato, ma ho subito notato perché c'è & (!) dopo il doppio nelle funzioni. Questo è ciò che causa gli errori!
Quindi ha senso. Significa trasferire parametri tramite link.
Per evitare di spiegare il codice nei dettagli, lo spiegherò brevemente.
Ci sono 3 funzioni:(int GetCrossingMa, int GetStochSignal e int GetSignal())
La funzione int GetSignal() ottiene i valori dei flap e di altri indicatori che vengono passati per riferimentoalle funzioninon-core(int GetCrossingMa eint GetStochSignal) per ottenere i segnali corrispondenti in esse. Voglio farlo per evitare di ottenere gli stessi dati in diverse funzioni. Non credo sia saggio calcolare le stesse maschere in 2 o più funzioni. È più facile calcolarlo solo una volta e basta. Perché sprecare ulteriori risorse per questo?
Quindi ha senso. Significa trasferire parametri tramite link.
Per evitare di spiegare il codice nei dettagli, lo spiegherò brevemente.
Ci sono 3 funzioni:(int GetCrossingMa, int GetStochSignal e int GetSignal())
La funzione int GetSignal() ottiene i valori dei flap e di altri indicatori che vengono passati per riferimentoalle funzioninon-core(int GetCrossingMa eint GetStochSignal) per ottenere i segnali corrispondenti in esse. Voglio farlo per evitare di ottenere gli stessi dati in diverse funzioni. Non credo sia saggio calcolare le stesse maschere in 2 o più funzioni. È più facile calcolarlo solo una volta e basta. Perché sprecare ulteriori risorse per questo?
Hai programmato in un linguaggio diverso da µl4?
Ecco il mio tutorial sul gufo grezzo di prova:
int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) la funzione ottiene il segnale di attraversamento.
intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) la funzione riceve il segnale dalla stocastica.
La funzione void GetMomentumSignal() ottiene il valore della quantità di moto.
L'int GetSignal() otterrà il segnale generale basato sulle 3 funzioni precedenti e non solo su di esse. La domanda è questa. Poiché la funzioneint GetSignal() è la principale, per così dire, e ottiene il segnale principale, ottengo tutti i valori dei flap(i_maFast1,i_maFast2, i_maSlow1 ei_maSlow2) e gli stocastici(stochD1,stochD2,stochK1,stochK2)
Ho fatto bene a ottimizzare il codice?
Naturalmente, tutti i parametri ottenuti nella funzioneGetSignal() sono passati per riferimento alle funzioni corrispondenti.
Ma qui questo frammento
apparirà un errore durante la compilazione:
Questa può essere una variante della ricerca del segnale sulla barra di cui abbiamo bisogno:
E nell'ultima funzione GetSignal() si fa una "somma" di tutti i segnali (da soli).
P.S. C'è un momento "delicato" nel ricevere il segnale dall'indicatore. Per esempio, si può fissare il fatto che maSlow sia sopra/sotto maFast, o si può "catturare" il momento della loro intersezione. L'approccio e il codice sono diversi.
Hai programmato in un linguaggio diverso da µl4?
Quindi ha senso. Significa trasferire i parametri tramite link.
Per evitare di spiegare il codice nei dettagli, lo spiegherò brevemente.
Ci sono 3 funzioni:(int GetCrossingMa, int GetStochSignal e int GetSignal())
La funzione int GetSignal() ottiene i valori dei flap e di altri indicatori che vengono passati per riferimentoalle funzioninon-core(int GetCrossingMa eint GetStochSignal) per ottenere i segnali corrispondenti in esse. Voglio farlo per evitare di ottenere gli stessi dati in diverse funzioni. Non credo sia saggio calcolare la stessa maschera in 2 o più funzioni. È più facile calcolarlo solo una volta e basta. Perché sprecare ulteriori risorse per questo?
Le spiegazioni sono chiare, ma le azioni no.
Questi sono questi: Le azioni "Lafunzione int GetSignal() ottiene i valori delle scale e di altri indicatori" nella tua variante sono "discutibili", per usare un eufemismo, perché non c'è bisogno di tali azioni.
Questo codice:
completo P.... Vi rendete conto di cosa sta "succedendo" qui? - Tutta la "fila di barre" viene cercata invano, e alla fine del ciclo, le variabili rimangono con dei valori... Indovina cosa succede dopo.