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
Dovete evidenziare il blocco e premere shift+tab
Aggiungere al tutorial nella sezione
Guida di riferimento MQL5 / Indicatori tecnici / iMA esempio specifico dopo la descrizione:
prezzo applicato
[Prezzo da applicare. Può essere una qualsiasi delle costanti di prezzo ENUM_APPLIED_PRICE o un handle di un altro indicatore.
come utilizzare un handle di un altro indicatore? cosa farà? o solo i valori degli indicatori tecnici standard possono essere mediati? e se c'è la necessità di disegnare un indicatore personalizzato in indicator_separate_window e disegnare una media mobile di questo indicatore nella stessa finestra,iMA() può farlo? Ho un vago sospetto che iMA() possa ottenere il risultato di iMAOnArray(), ma non ho idea di come, forse mi sbaglio
ZS: Forse voglio molto da MT5, ma su MT4 la funzione built-in iMAOnArray() non era presente ora, non è difficile scrivere una funzione utente per il calcolo di una media, ma mi piacerebbe avere funzioni standard per lavorare con gli array, ho speso più tempo a cercare informazioni su iMAOnArray() che a scrivere la mia funzione
Aggiungere al tutorial nella sezione
Guida di riferimento MQL5 / Indicatori tecnici / iMA esempio specifico dopo la descrizione:
come usare l'handle di un altro indicatore? cosa farà? o è possibile fare la media solo dei valori degli indicatori tecnici standard? e se c'è bisogno di disegnare un indicatore personalizzato in indicator_separate_window e disegnare una media mobile per questo indicatore nella stessa finestra,iMA() può farlo? Ho il vago sospetto che iMA () possa raggiungere iMAOnArray() ma non ho idea di come, forse mi sbaglio
Cliccate sul link e arrivate alla sezione Costanti di prezzo dove sotto c'è un esempio:
Se un indicatore tecnico utilizza dati di prezzo il cui tipo è impostato dall'enumerazione ENUM_APPLIED_PRICE, un handle di qualsiasi indicatore (terminale integrato o scritto da un utente) può essere specificato come serie di prezzo in ingresso. In questo caso, i valori dell'indicatore zero buffer saranno utilizzati per i calcoli. Questo permette di costruire facilmente i valori di un indicatore sui valori di un altro. L'handle di un indicatore personalizzato viene creato chiamando la funzione iCustom().
Esempio:
#proprietàindicator_separate_window
#proprietàindicator_buffers 2
#proprietàindicator_plots 2
//--- parametri di ingresso
inputint RSIperiod=14;//periodo per il calcolo RSI
inputint Smooth=8;// periodo di smoothing RSI
inputENUM_MA_METHOD meth=MODE_SMMA;//metodo di lisciatura
//---- tracciare RSI
#propertyindicator_label1"RSI"
#proprietàindicator_type1DRAW_LINE
#propertyindicator_color1Red
#proprietà indicator_style1STYLE_SOLID
#proprietàindicator_width1 1
//---- grafico RSI_Smoothed
#property indicator_label2"RSI_Smoothed"
#proprietà indicator_type2DRAW_LINE
#proprietà indicatore_colore2Marina
#proprietà indicator_style2STYLE_SOLID
#proprietà indicator_width2 1
//--- buffer di indicatori
double RSIBuffer[];//qui memorizzeremo i valori RSI
double RSI_SmoothedBuffer[];// i valori RSI smussati saranno memorizzati qui
int RSIhandle;// handle dell'indicatore RSI
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzato
//+------------------------------------------------------------------+
voidOnInit()
{
//--- mappatura dei buffer degli indicatori
SetIndexBuffer(0,RSIBuffer,INDICATOR_DATA);
SetIndexBuffer(1,RSI_SmoothedBuffer,INDICATOR_DATA);
IndicatorSetString(INDICATOR_SHORTNAME,"iRSI");
IndicatorSetInteger(INDICATOR_DIGITS,2);
//---
RSIhandle=iRSI(NULL,0,RSIperiod,PRICE_CLOSE);
//---
}
//+------------------------------------------------------------------+
//| Funzione di iterazione dell'indicatore personalizzata|
//+------------------------------------------------------------------+
intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble&price[]
)
{
//--- azzera il valore dell'ultimo errore
ResetLastError();
//--- ottenere i dati dell'indicatore RSI nell'array RSIBuffer[]
int copied=CopyBuffer(RSIhandle,0,0,rates_total,RSIBuffer);
se(copiato<=0)
{
Print("Impossibile copiare i valori dell'indicatore RSI. Errore = ",
GetLastError(),", copiato = ",copiato);
ritorno(0);
}
//--- creare un indicatore della media in base ai valori dell'indicatore RSI
int RSI_MA_handle=iMA(NULL,0,Smooth,0,meth,RSIhandle);
copied=CopyBuffer(RSI_MA_handle,0,0,rates_total,RSI_SmoothedBuffer);
se(copiato<=0)
{
Print("Impossibile copiare l'indicatore lisciato RSI. Errore = ",
GetLastError(),",copied =",copied);
ritorno(0);
}
//--- restituire il valore di prev_calculato per la prossima chiamata
return(rates_total);
}
Non hai finito un solo paragrafo.
Uso ampiamente il trailing stop standard. Un paio di richieste a questo proposito.
1) Aggiungere la possibilità di selezionare "Trailing Stop Level" nel menu Colonne. Questo, per quanto ho capito, non è difficile.
2) Aggiungere il valore TS come proprietà della posizione con la possibilità (a scelta dell'utente) di trasmettere/non trasmettere al terminale il livello TS per una particolare posizione. Capisco che è molto più grave del punto 1), e l'implementazione di TS completamente sul lato server aumenta seriamente il carico sul server.
Per quello che personalmente vorrei usare il punto 2):
- diversi terminali sono collegati allo stesso account (idealmente attraverso server e provider diversi, ad esempio a casa e al lavoro);
- uno dei terminali apre manualmente una posizione e imposta il livello TS;
- Quando il livello di TS è impostato su un altro terminale, TS sul primo terminale rimane invariato, perché ora il trailing stop è implementato sul lato client. Questo è ciò che vorrei cambiare, se il cliente lo desidera.
Cliccate sul link e sarete portati alla sezione Costanti di prezzo con un esempio qui sotto:
Non hai finito un solo paragrafo
Cliccate sul link e arriverete alla sezione Price constants, dove sotto c'è un esempio:
Semplicemente non hai letto l'intero paragrafo
Ho finito il paragrafo, ma l'esempio usa solo indicatori tecnici standard, la domanda riguarda gli indicatori personalizzati e la funzione iMAOnArray()
-Voglio vedere se è possibile utilizzare le medie mobili per lisciare i dati dell'indicatore personalizzato
- Penso che sarebbe utile avere dei link alle funzioni f obsolete, non bisogna cercare nel forum.
Riferimento MQL4 - Funzioni obsolete
Ci sono effettivamente degli esempi, ma spesso non si riesce a trovarli intuitivamente, forse si potrebbe semplicemente fare un link "esempio" in questi casi - sarebbe molto utile, IMHO naturalmente.
Ho letto il paragrafo, ma l'esempio usa solo indicatori tecnici standard, la domanda riguarda gli indicatori personalizzati e la funzione iMAOnArray()
-Voglio vedere se le medie mobili possono essere usate per lisciare i dati degli indicatori personalizzati
Ho dato sopra:
Se un indicatore tecnico per i suoi calcoli utilizza dati di prezzo il cui tipo è definito dall'enumerazione ENUM_APPLIED_PRICE, allora qualsiasi manico di indicatore (incorporato al terminale oscritto da un utente) può essere specificato come serie di prezzo in ingresso.
Leggi anche gli articoli:
Se la comunità è interessata, si potrebbe considerare una modifica dell'opzione di test e ottimizzazione esistente. Per esempio, ho bisogno di ottenere dati di test/ottimizzazione non su un periodo storico, ma su diversi periodi contemporaneamente (per esempio, per valutare l'uniformità delle prestazioni di un Expert Advisor). Naturalmente, possiamo alternarci nei test/ottimizzazione per tutti i periodi. Ma se un periodo dura da 0,5 a 1 ora, e ne hai bisogno di 10, è molto più conveniente eseguire tutti e 10 i periodi in una volta (per esempio, durante la notte) e ottenere tutti i risultati più tardi. Attualmente specifico "Date From", "Date To" come parametro di input nell'Expert Advisor e specifico il periodo di ottimizzazione totale nella scheda esterna del tester (Date From/To è uno dei parametri di ottimizzazione). Ma in questo caso il tempo di ottimizzazione di ogni corsa è effettivamente uguale al tempo del periodo di ottimizzazione generale (nella scheda del tester - i tick sono sempre in movimento - l'ho controllato virtualmente). Se fosse possibile specificare 2 periodi contemporaneamente nel tester: un periodo grande generale e uno piccolo al suo interno, il problema sarebbe risolto.
C'è la funzione ChartIndicatorAdd() per aggiungere un indicatore al grafico. Si prega di fare la funzione di rimozione dell'indicatore dal grafico. È come con la bomba nucleare: la bomba è stata inventata, ma non esiste un anti-bomba.