![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
ci sono mai state discrepanze tra i valori originali e quelli "successivamente distribuiti"? ancora doppio...)
non ancora.... tutti i problemi vengono dalla sciatteria :)
Costretto a dissuadere! La sfumatura chiave - "il limite di un'iterazione dell'EA". Bene, entro questi limiti l'indicatore viene calcolato UNA volta (alla sua prima chiamata)! Lo dichiaro con il 100% di fiducia. Tutte le chiamate successive non lo avviano affatto, ma prendono solo i valori necessari dai buffer necessari. La condizione è 100% se i parametri di ingresso rimangono invariati (tranne il buffer e l'offset). La regola è valida per i calcoli entro i limiti di uno strumento. Ma penso che il principio sia valido anche quando iCustom si riferisce ad altri TF e strumenti.
Uno dovrebbe essere "forzato" ..... tutto in una volta. Grazie per un'altra caratteristica non documentata :)
FSB__Bar_Opening_Bar_Closing.mql4 v0 .0.2 Beta
Ingresso al mercato all'apertura del bar;
Esci alla chiusura della barra (10 sec. fino alla chiusura o all'apertura successiva)
** Questa è solo una demo per testare i punti di entrata/uscita. **
Frammenti di codice:
1. Per quanto riguarda le prestazioni:
Per lo più non abbiamo bisogno di ricalcolare un indicatore per ogni tick. (Riferimento - "Usa il valore della barra precedente".) Un indicatore deve essere calcolato o all'"Apertura della barra" o alla "Chiusura della barra".
2. fMicron:
Io uso fMicron = Point/2 quando confronto i prezzi per le decisioni di trading. Ma questo non è applicabile agli indicatori. Eg. per USDJPY punto = 0,01; fMicron = 0,005.
0,000075 è il risultato di molti test nel corso degli anni. Ho iniziato a lavorare su FSB nel 2001 :) Naturalmente non significa nulla. Ho cambiato idea molte volte al riguardo.
**edit: MT dà questo nelle mani degli utenti. Probabilmente i guru degli EA possono dire cosa usano nei loro EA.
**edit2: Metterò questo parametro nel file di configurazione per gli esperimenti.
3. Inizierò a fornire il codice sorgente originale da scaricare per ogni versione di FSB. Non avrò bisogno di aggiornare il sito web per ogni piccolo cambiamento in questo caso.
Ho iniziato a cambiare il float con il doppio. Pubblicherò presto questa versione stasera o domani. Dopo di che dobbiamo testarlo a fondo. Dobbiamo passare per ogni indicatore per risolvere alcuni problemi / caratteristiche prima di scriverli in MQL.
1. Sì, nella maggior parte dei casi (dato l'approccio generale di FSB all'apertura/chiusura delle posizioni (all'apertura/chiusura del bar)) - Questo non è necessario. Ma, diciamo - le regole di buona educazione - sono obbligatorie. Calcolo dell'indicatore "da zero" ogni volta (anche una volta a Bar) - in generale (sono d'accordo) non critico nei limiti dei grandi periodi... Ma cosa succede se il periodo è di minuti? E se l'indicatore ha ancora bisogno (o vuole) di essere calcolato ogni barra (qualche punto sofisticato della posizione, che non può (o non può più, perché il prezzo di apertura è inferiore al livello degli stop) essere catturato da un ordine?)
La conversione non è complicata da molto, infatti - sì, c'è un po' di codice "nel wrapper" e il principio della camminata della barra è invertito. In realtà, questo è tutto, in linea di massima. La cosa principale è mantenere l'algoritmo (in modo che possa essere facilmente letto e identificato all'interno del codice sorgente) e mantenere la compatibilità parametrica con FSB. Creare un meccanismo conveniente per l'estrazione del segnale. E per renderlo utilizzabile per i puri visual designer (che non si preoccupano di EA). Secondo me.
2. Beh, non ho suggerito di usare la variante Point/2 per confrontare (ugualmente) i valori degli indicatori :). - Stavo solo suggerendo una costante. La questione è nel suo valore e dimensione (0,000075 - non male, non l'ho detto - non capisco perché proprio 75 e non "di solito" 50:)? L'esperienza "dal 2001" è abbastanza rivelatrice (argomento!) e sono abbastanza disposto ad accettare questo valore. Ma come ultima osservazione - per le citazioni con una dimensione di 0.12345 questo non sarà sufficiente (voglio dire - molto :))). Il numero dovrebbe essere spostato di almeno un fotogramma a destra (0,0000075). Nella mia società di intermediazione, per esempio, tali quotazioni sono già una pratica comune... Suggerirei di regolarlo per lo strumento e di usare "10", non "75" :):
fMicron = Punto * 0.1f
In breve, sì - propongo di renderlo parametricamente - impostato (penso che dopo qualche esperimento amichevole tutto andrà a posto (anche se... se il punto è cambiato molte volte ;)...). E aspettare le opinioni di altre persone...
3. Sono riuscito a scaricare i sorgenti postati :-P. Così ci sarà "qualcosa da confrontare" (in termini di codice risultante). E per quanto non voglia più disturbarti - buona fortuna con la conversione da float a doppio!
(com'è il test con RSI? ;), se riesci a farlo?)
Ho scoperto che il migliore è 100 > Micron > 50. Ecco perché ho preso 75. Era per il mio broker: Punto = 0,0001.
Ma hai ragione che i broker hanno iniziato a quotare a 0,00001.
Facciamo: Micron = Math.Min(Punto * 0.75, 0.000075)
Spero di finire la conversione tra 3 ore. Metto qui il programma per i test.
Caricherò anche i codici sorgente degli indicatori convertiti.
Tutti gli indicatori e i parametri sono numeri doppi .
Micron = 0,000075
Metti l'exe nella cartella insieme all'ultimo FSB v2.8.3.3 Beta. Entrambi i programmi condivideranno gli stessi dati e strategie. È conveniente per il confronto. Fate attenzione ai valori degli indicatori. Praticamente tutti gli indicatori e la metà degli altri file sono stati cambiati.
Per vedere la precisione completa, premere F12 nel grafico o usare Command Console (ind ####).
Si prega di segnalare qualsiasi problema. Ora è il momento di richiedere cambiamenti sugli indicatori. Dobbiamo fissarli prima di continuare il lavoro sull'integrazione di MT.
Buongiorno!
Miroslav, tempo molto limitato ora... quindi è veloce:
1. Grazie per la pronta traduzione (float to double)! Grande!
2. Finora tutto sembra funzionare (per quanto sono riuscito a controllare), potete vedere le differenze (al volo), sia nei valori degli indicatori che nei risultati della strategia :)
3. MA - le differenze non erano quelle che ci aspettavamo! (Ho fatto un esperimento interno ieri sera, e le mie "paure" sono state confermate - la conversione aumenterà la precisione del calcolo - MA non cambierà catastroficamente il risultato! Qualcosa dall'area delle differenze nella quarta-quinta cifra... ma abbiamo divergenze già dalla seconda cifra! (lo stesso RSI, per esempio))
LA RAGIONE È UN'ALTRA!!!
Cosa sono riuscito a controllare:
1. All'inizio ho pensato se c'erano dei link difficili sul tema delle cifre (ho degli strumenti con 5 cifre, attenzione)... Forzare la specificazione di 4 cifre nelle proprietà dello strumento - non ha aiutato (a proposito - ma funziona!)
2. Il codice degli indicatori stessi ... hmm... ... beh, non c'è niente di cui lamentarsi! Ora è doppio ovunque, il codice stesso (come lo vedo io) non è cambiato... Il codice è abbastanza semplice (molto spesso opera solo con l'addizione e la sottrazione) - un tale errore potrebbe NON essersi accumulato lì!!! (Non ne sono così sicuro... ma... ;))
3. Il mio ultimo pensiero (che non sarò in grado di controllare) - QUESTO È COSA :)!:
Valori di chiusura/apertura bar (???) (e altri, potenzialmente?)
Da dove vengono questi numeri? :))) (che tipo di "additivi" sono :D?)
Lo prendo da qualche parte qui (Bar Closing.cs):
Di conseguenza, la mia prima ipotesi di lavoro è che (forse) si tratta di questo? ("sbagliato" (o "giusto", ma perché proprio così?) dare via valori di citazione nella funzione?)
In parte, apparentemente, alla questione dei valori ottenuti (per riempire i buffer operati durante il calcolo dell'indicatore) dalla funzione protected static float[] Price(BasePrice price)
In generale, Miroslav - "la palla è nel tuo campo" :). Per ora ho notato il nuovo codice dei TUOI indicatori, che è perfettamente compatibile con gli indicatori MT (sono persistente :D, finirò l'argomento RSI):
Stessa barra, primo indicatore - conversione, secondo - nativo da MT.
Qualche pensiero, suggerimenti? (Sarò lì tra 6 ore)
Частично, видимо, заодно к вопросу получаемых значений (для заполнения оперируемых буферов при расчете индикатора) из искомой функции protected static float[] Price(BasePrice price)
Tutte le classi base, i metodi e le proprietà restituiscono ora valori doppi, così come tutte le funzioni di trading (ho cambiato le ultime 6 mesi fa).
Sembra che ci sia una differenza nella formula della RSI. Non può essere nel secondo segno "ma abbiamo già una differenza nel secondo segno! :) Cercherò di adottare la formula MT RSI esistente in FSB.
**Modifica:
Già risolto:
Parametri predefiniti: RSI(close, 14, smoothed) == MT RSI
Programma da scaricare presto.
Miroslav - non ci sono differenze nelle formule. Come ho detto all'inizio della discussione su RSI - hai solo un ALTRO ciclo di mediazione (che forzatamente fa Smoothed da qualsiasi risultato di funzioni MovingAverage correttamente funzionanti) :), ECCO il primo valore (che rimane dall'esecuzione di MovingAverage :).
Comunque, a giudicare dall'ultimo codice citato - tutto è andato a posto (e RSI ora leggerà altre modalità di mediazione normalmente) :)! Yahoo!
(il codice dell'indicatore, che ho salvato prima, contiene già questa modifica ;) - basta chiamare fsbRSI con i seguenti parametri per esserne sicuri:
indLogic = non importante
maMethod = 2 (! importante MODE_SMMA in termini di MT)
basePrice = 0 (PRICE_CLOSE in termini di MT)
iPeriodo = 14
fLevel = non importante
iPrvs = non importante
E ottenere una corrispondenza esatta dei risultati con il Relative Strength Index nativo (che viene fornito con MT)
Tranne che sia fsbRSI che iRSI NON sono uguali a FSB :(
Quindi torniamo al problema principale:
"Tutte le classi base, i metodi e le proprietà restituiscono ora valori doppi, così come tutte le funzioni di trading (ho cambiato le ultime 6 mesi fa)".
Beh, è fantastico! Non capisco proprio come questa tesi dovrebbe influenzare
Prezzo di apertura della barra e prezzo di chiusura della barra? Nell'esempio precedente.
Per ripetere la domanda: perché i prezzi richiesti sono DIVERSI dalle quotazioni? (Intendo 6,7,8, ... cifre)
Ildoppio non c'entra assolutamente nulla! I valori tra virgolette sono normalizzati e dovrebbero essere conservati (essere completamente identici) quando vengono semplicemente copiati tra le variabili.
Se valori simili cominciano ad apparire nel calcolo degli indicatori (quando i buffer per il calcolo sono riempiti sulla base dei valori delle quotazioni, il protected static float[] Price(BasePrice price)), allora siamo BELLI (per quanto strano possa sembrare), cioè è come un'altra fonte (oltre al precedente float), dati "leggermente" denormalizzati :)
Ho cambiato leggermente alcuni degli indicatori per assomigliare a quelli standard di MT.
Cambiati gli indicatori FSB:
RSI
Oscillatore di RSI
Oscillatore RSI MA
Bande di Bollinger
Deviazione standard
Stocastico
Ci sono differenze nei seguenti indicatori:
Momentum
Indice di facilitazione del mercato
Altro:
MT Moving Average Oscillator == FSB MACD Histogram
MT Momentum == FSB Rate of Change
Indice di vigore relativo - non incluso in FSB
Ora gli indicatori FSB e MT dovrebbero essere più o meno uguali.
TODO:
Stocastico - revisione dei segnali;
Market Facilitation Index - revisione della formula;
Una Momentum come quella della MT da includere nel FSB - chiamata "Momentum MT"
Incluso il "Relative Vigor Index" in FSB.