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

 
Alexey Viktorov:

Beh, in questo caso, a cosa servono queste funzioni auto-scritte?

Ho ottenuto i prezzi massimi e minimi di ieri e da questi valori determinare il centro.

Non so... non stavo pensando... Lo riscriverò ora... È più facile così... Grazie!

 
Igor Makanu:

Gestione del denaro

per quanto riguarda le entrate casuali gli ordini pendenti seguono il prezzo, nell'ottimizzatore la selezione viene effettuata secondo la formula y=kx+b , più tardi userò polinomio ed esponente, ma l'ottimizzatore cerca solo i fattori e i valori degli ordini, in generale per non mettere una nebbia sopra - è una griglia, beh, quasi, ma gli obiettivi non sono ancora stati raggiunti

Quando guardo i mercati li ho trattati (anche se non molto attivamente) da quando mi sono registrato al Forum, il livello di programmazione in MQL ha richiesto molto tempo, ma in generale l'idea è stata sviluppata attraverso l'anno di scrittura correlata di Expert Advisors in base alle richieste delle persone che lavorano )))

Nessun problema, vai avanti.

Capisco, lo capisco molto bene, perché ci sono già passato.
Si tratta comunque di trovare alcuni parametri (in questo caso almeno i coefficienti k e b nella lineare y=kx+b o a,k,x nell'esponenziale y=ax²+kx+b). Questi coefficienti dovrebbero preferibilmente cambiare adogni tick, ecco perché ho detto che l'ottimizzazione dovrebbe stare nel programma stesso e avvenire automaticamente e costantemente, ma non in un tester esterno in modalità manuale di tanto in tanto (una volta al giorno o alla settimana o al mese...). Inoltre si dovrebbe controllare il periodo, in cui la regressione lineare o parabolica (esponenziale) osservata si verifica. Anche questo periodo dovrebbe cambiare ad ogni spunta. Anche se trovare una linea o una parabola è lo stesso che trovare il periodo ottimale della regressione lineare o parabolica al momento.
Ma un tester esterno può sempre trovare tali parametri statici costanti, che saranno universalmente garantiti per adattarsi solo a quell'insieme di dati storici, su cui viene eseguito il test, e su questo, il periodo storico passato, naturalmente, si osserverà un profitto stabile e belle linee di profitto, ma abbiamo bisogno del presente e del futuro.

Tutto si riduce al controllo della larghezza del canale, della lunghezza del canale, della ripartizione del canale, del ritorno alla linea di ripartizione di un grado lineare o superiore di canali. E questo è un problema di riconoscimento del modello e dovrebbe essere risolto solo internamente, non esternamente.

 
Nikolai Semko:

Capisco, molto bene, perché ci sono già passato.

Anch'io, e più di una volta.

Nikolai Semko:

Ma il tester esterno sarà sempre in grado di selezionare tali parametri statici costanti, che saranno universalmente garantiti per adattarsi solo a quella serie di dati storici, su cui il test è in esecuzione, e su questo, già passato periodo storico, naturalmente, un profitto stabile e belle linee di profitto saranno disegnate, ma abbiamo bisogno del presente e futuro.

Questo è il problema - no, è lo stesso del test del libro e in avanti, i grafici sono diversi, ma la tendenza è lì, per quanto ho capito il mio EA non sta colpendo il prezzo futuro stesso, ma le traiettorie dei prezzi futuri.

 
Ragazzi, ecco una domanda. Guardate, c'è un prefisso di incremento ++q e un postfisso q++, usando le loro caratteristiche si possono ottenere effetti abbastanza diversi e interessanti, per esempio la priorità di questo incremento q++ esegue l'addizione in ritardo/indietro cioè dopo e non immediatamente, come può essere fatto con i numeri primi ed è possibile, per esempio voglio tale addizione q+5, prima devo usare q e poi aggiungere 5?
 
Seric29:
Ragazzi, ecco una domanda. Guarda, c'è un prefisso di incremento ++q e un postfisso q++, usando le loro caratteristiche possiamo ottenere effetti abbastanza diversi e interessanti, per esempio la priorità di questo incremento q++ esegue l'addizione in ritardo/indietro cioè dopo e non immediatamente, come può essere fatto con i numeri primi ed è possibile, per esempio voglio tale addizione q+5, prima devo usare q e poi aggiungere 5?

Bene, se questo deve essere usato come contatore di loop, allora semplicemente

for(int q = 0; q <= 25; q+=5)
 
Alexey Viktorov:

Beh, se lo si usa come contatore di loop, è facile

E se passate un'espressione q+5 in una funzione e prima eseguite q e poi aggiungete 5, non potete farlo, giusto?

int q
void Funk(int pr){}
вызвов Funk(...q+5...) сначала используем q а после прибавляем 5
как здесь например Funk(q++) сначала используем q а после прибавляем 1
 
I commenti non pertinenti a questo argomento sono stati spostati in"OOP, modelli e macro in mql5, consigli e trucchi del mestiere".
 
Seric29:

E se passate un'espressione q+5 in una funzione e prima eseguite q e poi aggiungete 5, non potete farlo, vero?

Il 5 è una costante o una variabile? Se è una costante, nessun problema: passate q nella funzione e aggiungete 5 dopo averlo usato. Se è una variabile, passate due variabili e aggiungete la seconda variabile dopo aver usato q. Un'altra opzione è quella di dichiarare le variabili globalmente. Allora non c'è bisogno di passare nulla.
 

Ciao, voglio chiudere le posizioni diversamente dirette quando il profitto =0 Diverso numero di posizioni di acquisto e vendita, diverse dimensioni del lotto.

Cosa c'è di sbagliato nella funzione di ricerca del prezzo medio, cioè il punto di profitto zero?

 double AveroProf(string sy="", int op=-1, int mn1=-1) 
   {
   int i=0;
   int kol=0;
   double lots=0;
   double sum=0;
   double sum1=0;
   double zeroprice=0;
   double tick_value;
   for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=mn1) continue;
      if (OrderType()==OP_BUY)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ; 
      }
      if (OrderType()==OP_SELL)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ;
       kol=kol+1;
      }
   
   }
   if (lots>0)
   { 
   zeroprice=sum/lots;
   zeroprice=NormalizeDouble(zeroprice,_Digits);
   zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);
    }   
   return( zeroprice);
   }
 
Per favore qualcuno può aiutarmi con questo problema: https://www.mql5.com/ru/forum/322133
Как использовать WinApi для преобразования времени в StrategyTester MT5?
Как использовать WinApi для преобразования времени в StrategyTester MT5?
  • 2019.09.12
  • www.mql5.com
Я успешно создал CustomSymbol в MT5, и я получаю эту таблицу в приложении...