[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 502

 
hoz:

Ora sono un po' confuso. Ecco 3 funzioni, ognuna delle quali riceve un segnale specifico per un indicatore specifico.

Questa funzione riceve il segnale generale da tutti gli indici e prende la decisione di COMPRARE o VENDERE.

Questa è la funzione principale che riceve il segnale generale; qui otteniamo i valori degli indici attraverso il ciclo per passare attraverso tutte le barre, naturalmente... E poi i valori ottenuti vengono passati per riferimento alle funzioni appropriate dove questi valori sono necessari, cioè alle funzioni:

int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2)

int GetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2)

void GetMomentumSignal() , in linea di principio, può anche essere messo lì.

Così, tutti i calcoli degli indici saranno in una funzione principale di ottenere il segnale. Tutto è logico in questo caso...

Victor! Avete logica, ma non abbastanza conoscenza. Il primo, se non ci rinunci, ti aiuterà ad andare più lontano di un libro di testo, e per "vincere" il secondo, devi partire da esso (da un libro di testo). Non sei pronto (ancora) a costruire la tua struttura logica del codice, torna alla versione alfabetica.
P.S. Cosa "cattura l'occhio" nel tuo codice:

Nella funzione GetSignal() per la ricerca dell'incrocio di due linee si può usare il ciclo for, ma è meglio usare il ciclo while, anche se questa è una preferenza personale. Per cominciare, dovete spostare una parentesi come in "Execution cannot be pardoned" per far eseguire al vostro codice ciò che avete appena detto. Per qualche ragione, questa funzione (risultato) manca dei risultati di due funzioni: GetStochSignal() e GetMomentumSignal(), - questo è leggermente irrilevante.

nelle funzioni GetCrossingMa() e GetStochSignal() non ha senso passare i parametri per riferimenti, perché avrebbe senso, se queste variabili all'interno della funzione CAMBIANO i loro valori.

La funzione void GetMomentumSignal() non restituisce nulla.

Anche se ammetto che è "peggio da vedere" dall'esterno... :)))

 
laveosa:

Buongiorno a tutti. per favore aiutatemi, ho una combinazione di candele e vorrei che lavorassero su diverse scale temporali. A titolo di esempio

se(iHigh("EURUSD",PERIOD_M5,1)>iLow("EURUSD",PERIOD_M5,1)+8*kio*Point)

{

go_s=true;

}

Pensavo di poter legare la mia combinazione usando iHigh, iLow, iOpen, ecc. Ma quando viene testato su M5 mostra un risultato ma su altri timeframes un altro. Per favore aiutatemi a capire cosa sto facendo di sbagliato. Grazie!

Prova questo:

if(iHigh("EURUSD",PERIOD_M5,1)> (iLow("EURUSD",PERIOD_M5,1)+8*kio*Point()) )

Per incollare bene il codice sul forum premete SRC e poi il codice.


 
Ho un conto in cent (non un cent light) e 100 Ue in un veshchet e la leva di 1:500 come faccio a calcolare quale sia il lotto massimo che posso mettere? Aiuto! So che sul prezzo è possibile mettere un lotto massimo di 100, voglio sapere quando metto un lotto e mi dice non abbastanza soldi qualcosa del genere)))
 
Beowulf:
Ho un conto in cent (non un cent light) e 100 Ue in un veshchet e la leva di 1:500 come faccio a calcolare quale sia il lotto massimo che posso mettere? Aiuto! So che sul prezzo è possibile mettere un lotto massimo di 100, voglio sapere quando metto un lotto e mi dice non abbastanza soldi qualcosa del genere)))
double maxvolume = MathMax(MarketInfo(Symbol(), MODE_MAXLOT), AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED));
 
Non capisco questi codici, pensavo che mi dicessero 20,0 al massimo... Dove devo leggere per capire quello che hai scritto?
 

ciao !!! dopo aver aggiornato il termenal mt4 l'advisor inizia a lavorare come vuole ----- forse c'è un modo per risolvere il problema ??? grazie in anticipo per la risposta!

 
eduard9898:

ciao !!! dopo aver aggiornato il termenal mt4 l'advisor inizia a lavorare come vuole ----- forse c'è un modo per risolvere il problema ??? grazie in anticipo per la risposta!


Certo che c'è.

Ci sono casi come questoqui.

 

Per favore, consigliatemi il modo migliore per troncare l'array, in modo che i valori rimangano.

Supponiamo di avere una matrice di 16 elementi, abbiamo bisogno di ridurla di 13 elementi, in modo che gli elementi rimanenti 14, 15, 16 con valori conservati in essi, ma la dimensione della matrice era 3, non 16, e quindi gli indici erano 14 è diventato 0, 15 è diventato 1, 16-2.

 
Skydiver:

Per favore, consigliatemi il modo migliore per troncare l'array, in modo che i valori rimangano.

Supponiamo di avere una matrice di 16 elementi, abbiamo bisogno di ridurla di 13 elementi, in modo che gli elementi rimanenti 14, 15, 16 con valori conservati in essi, ma la dimensione della matrice era 3, non 16, e quindi gli indici erano 14 diventati 0, 15-rimasti 1, 16-2.

Potete fare quanto segue:

    for (int li_IND = 0; li_IND < 3; li_IND++)
    {Array[li_IND] = Arrray[li_IND+14];}
    ArrayResize (Array, 3);
 
eduard9898:

ciao !!! dopo aver aggiornato il termenal mt4 l'advisor inizia a lavorare come vuole ----- forse c'è un modo per risolvere il problema ??? grazie in anticipo per la risposta!

Potete dare un'occhiata qui.
Motivazione: