[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 99
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
Capito... Se un altro modo con un ridisegno?
Per favore, aiutatemi con la funzione ArrayMo (restituisce il massimo della curva di densità).
Sono sorte le seguenti domande:
1.Qual è lo scopo di creare un array temporaneo
2. Non è chiaro da cosa saranno presi i valori dell'array temporaneo, e quindi non è chiaro come questo array possa essere cercato:
3. E poi generalmente per me la verità è profondamente nascosta))))) Una volta accertato che non c'è nessun valore, cominciamo a determinare la dimensione dell'array di "valori non chiari".
Sarei molto grato per un raggio di luce in questa storia))))Non credo che la funzione sia scritta in modo corretto, dopo tutto. La ragione principale è che dopo l'annuncio.
è necessario
altrimenti(cito)
!!!Nota: un array dichiarato localmente in qualsiasi funzione, che è stato ridimensionato, rimarrà invariato dopo l'esecuzione della funzione. Quando la funzione viene richiamata, tale array avrà una dimensione diversa da quella dichiarata!!!!
E quindi con più chiamate la funzione "cadrà nel passato")
Su come funziona l'algoritmo. L'array m[][2] stesso è una rappresentazione diretta della distribuzione empirica del numero di hit della variabile x[i] dai suoi diversi valori. Cioè, ogni elemento dell'array consiste di due numeri - il numero di riscontri su qualche valore (il primo campo) e il valore stesso. Il ciclo cerca lo stesso valore nell'array m per ogni x[i], e se lo trova, viene aggiunto il campo numerico, altrimenti viene creato un nuovo elemento usando ArrayResize() e il nostro x[i] viene scritto lì.
Poi, una volta che l'array è popolato, dobbiamo solo trovare l'elemento con il massimo numero di hit, cioè, per definizione, il modulo della distribuzione x.
Questo è fatto dalle stringhe
Anche se mi sembra (non sono sicuro dell'array multidimensionale), si potrebbe avere solo
Tutto sommato posso dire (con tutto il rispetto per l'autore del codice) che anche quando si correggono tutti i difetti, questo algoritmo è estremamente inefficiente e spesso può dare risultati sbagliati. La ragione è che stiamo lavorando con il tipo double, il che significa che la probabilità che i valori di x[i] siano vicini ma ancora distinguibili è abbastanza alta. Questo potrebbe non essere così evidente quando la dimensione del campione è molto più grande (centinaia di volte o più) del numero totale di intervalli in cui x[i] è definito. Tuttavia, nei molti casi in cui questo vincolo non è rispettato, ci saranno molti calcoli sbagliati.
Il modo più corretto di calcolare il modo è questo: si costruisce una funzione di distribuzione empirica (da non confondere con la distribuzione di frequenza), poi la si interpola da piecewise linear a smooth, e infine si cerca il punto di massima derivazione. Un tale algoritmo è privo degli svantaggi elencati sopra e funziona abbastanza efficacemente anche con campioni di piccole dimensioni. Almeno, ho dovuto risolvere solo il compito di trovare una modalità per campioni di 50-100 elementi con un numero comparabile di intervalli usando MQL - e tutto era OK. L'unico svantaggio è che l'interpolazione di solito porta a un calo significativo della velocità di calcolo, se, naturalmente, vogliamo smussarla qualitativamente.
qui: https://www.mql5.com/ru/job
Grazie. Forse ci sono più opzioni.
Grazie. Forse ci sono più opzioni.
Provate a digitare "martingala" in una ricerca su un sito web e sarete sorpresi
Già guardato! Ma quello che voglio non c'è (
Date un'occhiata qui
https://www.mql5.com/ru/forum/136747
Salve. Ho appena iniziato in MQL4.
Per favore, date un consiglio sulla funzione OrderModify. I manuali e gli esempi mostrano che questa funzione è usata per la pesca a strascico, cioè il cambiamento dello stop loss. Ho bisogno di cambiare solo il take profit su un ordine aperto. Lo stop loss non è impostato quando l'ordine è aperto e deve anche rimanere a 0 durante la modifica .
Come dovrebbe essere il calcolo e la selezione degli ordini?
L'obiettivo finale dovrebbe assomigliare a questo
if (OrderType()==OP_BUY && OrderOpenPrice()-Bid>kof*Point) // c'è un acquisto, ma è sceso di kof
{
OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderOpenPrice()+tpnew*Point,0,CLR_NONE);// spostiamo TP più in basso di quello precedentemente piazzato
Lo stesso per la vendita.
Grazie per qualsiasi risposta.
Ciao di nuovo :)
Come pensavo, sono sorti dei problemi. Ecco il codice. Il punto è che gli ordini sul tester sono chiusi da TP, e per funzione TP viene rimosso quando l'ordine viene modificato durante il Trailing Stop.
Il che significa che il trailing stop non viene eseguito, e non ci sono stati errori con TP e SL sbagliati nel log del tester. Allora cosa c'è che non va?