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

 
Igor Makanu:

tutto deve essere aggiustato.

Il tuo codice cerca il primo ordine dalla cronologia degli ordini con il simbolo dato e il mago dato

poi contare il numero di ordini non redditizi trovati e moltiplicare alla potenza di 2 questo numero di ordini

cercate nel forum"funzioni utili da CMM" e fate qualcosa del genere

- trovare il biglietto dell'ultimo ordine per il nostro simbolo e la nostra magia

- ottenere OrderProfit( e OrderLots() dal biglietto trovato e moltiplicare per il proprio coefficiente di martingala, se necessario

ZS: ci può essere una soluzione pronta

Il problema è un po' diverso, ho un lotto fluttuante ad ogni apertura e devo moltiplicarlo per il coefficiente.
Il lotto del primo ginocchio per esempio 0,07, e il secondo può essere 0,04, dopo una perdita il lotto del terzo ginocchio 0,05 e qui è questo lotto e devono essere moltiplicati per il coefficiente 4.
La mia funzione calcola un lotto fluttuante, deve essere moltiplicato per LotSize() * 2,4,8,16 ecc.
 
Denis Pershin:
Il compito è un po' diverso, ho un lotto fluttuante ad ogni apertura e devo moltiplicarlo per un coefficiente.
Il lotto del primo ginocchio per esempio 0,07, e il secondo può essere 0,04, dopo una perdita il lotto del terzo ginocchio è 0,05 e questo lotto deve essere moltiplicato per il coefficiente 4.
La mia funzione calcola un lotto fluttuante, deve essere moltiplicato per LotSize() * 2,4,8,16 ecc.

tale

Se si conosce il lotto di partenza, si può usare l'ultimo ordine perdente per controllare il suo lotto e calcolare il numero di ginocchio, e se l'ordine è in profitto, si ricomincia con il lotto di partenza

impara a trovare l'ultimo ordine chiuso con il tuo mago

Se il sistema di calcolo del lotto è abbastanza complesso - l'opzione di un mago + il numero di un ginocchio per i nuovi ordini, è possibile utilizzare anche i commenti, ma non in modo affidabile, meglio usare diversi maghi


Il tuo codice passa solo attraverso gli ordini - non vede nulla, ecco perché ci ho fatto caso

 
Igor Makanu:

come questo

Se si conosce il lotto di partenza, allora si può usare l'ultimo ordine perdente per controllare il suo lotto e calcolare il numero di ginocchio, e se l'ordine è in profitto, si comincia di nuovo con il lotto di partenza

impara a trovare l'ultimo ordine chiuso con il tuo mago

Se il sistema di calcolo del lotto è abbastanza complesso - l'opzione di un mago + il numero di ginocchio per i nuovi ordini, è possibile utilizzare anche i commenti, ma non in modo affidabile, meglio usare diversi maghi


Il tuo codice passa solo attraverso gli ordini - non vede nulla, ecco perché ci ho fatto caso

Questa è la difficoltà: il lotto di partenza è sconosciuto e viene calcolato in base al n% del capitale.
Non vorrei usare il commento.
Ora il numero di perdite successive è calcolato nel codice ed è considerato correttamente ma non riesco a decidere come migliorarlo usando i coefficienti di moltiplicazione di 2,4,8,16.
 
Denis Pershin:
Il codice ora conta il numero di perdite consecutive e conta correttamente, ma come farlo con un fattore di moltiplicazione di 2,4,8,16 non riesco a capire.

sbagliato

Ma se ti sta bene, allora prova a sistemare il tuo codice in questo modo.

int c=1;
....
c*=2; // 1,2,4,8....
 
Igor Makanu:

sbagliato

ma se ti va bene allora prova a correggere il tuo codice in questo modo

Arriverà alla terza moltiplicazione: 3*2=6, e ha già bisogno di 8, e la quarta moltiplicazione sarà 8, e ha bisogno di 16.

 

k = {1,2,4,8,16,......}

cn = k[c]

 
Vitaly Muzichenko:

Alla terza moltiplicazione otterrà: 3*2=6, e ha già bisogno di 8, e alla quarta moltiplicazione otterrà 8, e ha bisogno di 16.


void OnStart()
{
   int c = 1;
   for(int i = 1; i <= 5; i++)
   {
      c *= 2;
      printf("i = %i, c = %i",i,c);
   }
}

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

dov'è il 6?

o cosa è?

 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

dov'è il 6?

o cosa è?

Sì, ho sbagliato.

 
MQ prevede di aggiungere indicatori personalizzati alla piattaforma mobile?
 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

dov'è il 6?

o cosa è necessario?

Grazie, molto utile)

Motivazione: