![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
Indicatore grafico offline
Non c'è niente di speciale che devi codificare all'interno dell'indicatore. Basta trascinare l'indicatore da nagivator al grafico offline e funzionerà. Provalo prima con i normali dati disponibili con metatrader, per esempio eurusd. Se l'indicatore funziona su eurusd e non funziona su NYSE allora significa che l'indicatore conta qualcosa in modo sbagliato e deve essere corretto/adeguato (per esempio forse ha bisogno di arrotondamento o durante i calcoli genera un errore come lo zero divide).
Ciao Kalenzo,
Grazie per la tua risposta. Gli indicatori della piattaforma MT4 funzionano benissimo. È un indicatore personalizzato che un individuo ha codificato che non funziona. Ho notato nel codice i simboli delle valute. Mi chiedevo se ho bisogno di cambiare i simboli dalle coppie di valute GBPUSD al simbolo NYSE? Volevo anche sapere come funzionano gli indicatori. Quali dati in quale cartella fanno gli indicatori se gli indicatori che sono stati originariamente installati nella piattaforma o è si scarica un indicatore gratuito codificato personalizzato?
Grazie!
Ciao Kalenzo,
Grazie per la vostra risposta. Gli indicatori della piattaforma MT4 funzionano benissimo. È un indicatore personalizzato che un individuo ha codificato che non funziona. Ho notato nel codice i simboli delle valute. Mi chiedevo se devo cambiare i simboli dalle coppie di valute GBPUSD al simbolo NYSE? Volevo anche sapere come funzionano gli indicatori. Quali dati in quale cartella fanno gli indicatori se gli indicatori che sono stati originariamente installati nella piattaforma o è si scarica un indicatore gratuito codificato personalizzato?
Grazie!Ciao!
Sì, sicuramente è necessario controllare il codice dell'indicatore. Se il tuo indicatore non sta usando la funzione Symbol() (o il valore NULL al posto del simbolo dove è necessario) allora è il problema al 100%. Di solito l'indicatore trasforma i dati dal grafico a cui sono collegati, e questo è il motivo per cui gli indicatori MT4 originali funzionano. Tuttavia, negli indicatori personalizzati è possibile prendere i dati da altri simboli/timeframes e quindi è necessario specificare manualmente quali dati si desidera utilizzare. Per esempio si può usare EURUSD come base e usare anche GBPUSD e USDCHF come altri parametri per il calcolo.
È necessario controllare il codice dell'indicatore e cambiare i simboli in NYSE che si desidera calcolare. Poi funzionerà bene.
Grazie ancora per il vostro aiuto
Grazie ancora per il vostro aiuto.
Problema di debug
Scrivo un EA di base per capire il funzionamento degli indicatori, ma ho avuto qualche sorpresa. Prima con l'indy repainting e ora con l'indy molto semplice.
Per capire i numeri uso una funzione print() per stampare i valori nel log report durante un backtest. Ma la funzione di stampa sembra disturbare la stampa del log e perdo una grande parte del log. rimuovendo la stampa il log è completo con tutti gli ordini!
Qualche idea? Ecco un estratto del mio codice
//----+ DEFINIZIONE DEI SEGNALI PER LE COMPRAVENDITE
if (kline[1] < Level_Up) // sotto soglia
if (kline[0] > dline[0]) // principale segnale di over
if (kline[0] > kline[1]) // Il principale deve salire
if (dline[0] > 0 ) { //Segnale deve rimanere a livello zero < dline[1]) { // Principale precedente sotto il segnale quindi abbiamo attraversato in alto
BUY_Sign = true;
if (Debug) {
Print ("Longopen K0 ",DoubleToStr(kline[0],Digits)," K1 ",DoubleToStr(kline[1],Digits),
" K2 ",DoubleToStr(kline[2],Cifre), "K3 ",DoubleToStr(kline[3],Cifre));
Stampa (" D0 ",DoubleToStr(dline[0],Cifre)," D1 ",DoubleToStr(dline[1],Cifre)," D2 ",DoubleToStr(dline[2],Cifre),
" D3 ",DoubleToStr(dline[3],Cifre));
}
}
Grazie per l'aiuto
Marcel
Per favore aiutatemi! Non sono un codificatore, ma sto cercando di fare del mio meglio. Qualsiasi consiglio sul perché il mio indicatore non funziona sarebbe molto apprezzato!
Grazie in anticipo
#proprietà indicator_separate_window
#proprietà indicator_buffers 4
#proprietà indicator_color1 LimeGreen
#proprietà indicator_color2 FireBrick
#property indicator_color3 Green
#proprietà indicator_color4 Red
#proprietà indicator_width1 2
#property indicator_width2 2
#proprietà indicator_width3 2
#proprietà indicator_width4 2
//---------------------------------------------------------------------indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;;
extern int SignalSMA=9;
//---------------------------------------------------------------------indicator buffers
double OsmaBuffer[]
double Spm;
double Smm;
double Spmaks1;
doppio Spmaks2;
double Smmin1;
doppio Smmin2;
doppio nou[];
doppio ver[];
doppio OsMAUP[]
doppio OsMADOWN[];
//+------------------------------------------------------------------+
//|Funzione di inizializzazione dell'indicatore personalizzata |
//+------------------------------------------------------------------+
int init()
{
//--------------------------------------------------------------------2 buffer aggiuntivi sono utilizzati per il conteggio.
IndicatorBuffers(4);
//--------------------------------------------------------------------drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,OsMAUP);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,OsMADOWN);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,159);
SetIndexBuffer(2,Spmaks1);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(3,159);
SetIndexBuffer(3,Smmin1);
SetIndexDrawBegin(0,SignalSMA);
IndicatoreCifre(Cifre+2);
//-------------------------------------------------------------------name per DataWindow e l'etichetta della sottofinestra dell'indicatore
IndicatorShortName("OsMA Marius("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");
//-------------------------------------------------------------------initialization done
return(0);
}
//+------------------------------------------------------------------+
//|Media mobile dell'oscillatore |
//+------------------------------------------------------------------+
int start()
{
int limite;
int counted_bars=IndicatorCounted();
//-------------------------------------------------------------------l'ultima barra contata sarà ricontata
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//-------------------------------------------------------------------Main Loop
for(int i=0; i<limit; i++)
{
OsmaBuffer=iOsMA(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_WEIGHTED,i);
nou = OsmaBuffer;
ver = OsmaBuffer;
se(OsmaBuffer > 0)
{
OsMAUP = OsmaBuffer;
OsMADOWN = 0;
}
else
{
OsMADOWN = OsmaBuffer;
OsMAUP = 0;
}
//-------------------------------------------------------------------Cross Down
se ((nou0))
{
Spmaks1 = Spmaks2;
se(Spmaks2 > 0)
{
Spmaks2 = 0;
}
}
//-------------------------------------------------------------------Cross Up
if ((nou>0)&&(ver<0))
{
Smmin1 = Smmin2;
se(Smmin2 < 0)
{
Smmin2 = 0;
}
}
//-------------------------------------------------------------------During Swing
if(ver > 0)
{
Spm = ver;
if((nou > ver) || (nou == ver))
{
Spm = nou;
}
if((Spm > Spmaks2) || (Spm == Spmaks2))
{
Spmaks2 = Spm;
}
}
else
{
Smm = ver;
if((nou < ver) || (nou == ver))
{
Smm = nou;
}
if((Smm < Smmin2) || (Smm == Smmin2))
{
Smmin2 = Smm;
}
}
}
//--------------------------------------------------------------------done
return(0);
}
//+------------------------------------------------------------------+
Come tracciare la linea tra le ultime 20 barre
Ho una domanda!
Voglio avere un indicatore sulla media mobile.
Continua sempre a disegnare la linea tra le ultime 20 barre
Ma non so come scriverlo
Spero che tu possa aiutarmi e offrire un indicatore come questo.
Grazie mille!
Pace a tutti,
Spero che tutto vada bene a tutti.
La mia domanda è abbastanza semplice per chi è qualificato nel campo della programmazione:
Ho fatto creare professionalmente un e.a. per me, utilizzando 3 indicatori allo stato grezzo. Si tratta di un sistema di 4 strategie codificate in un e.a. dove i 3 indicatori sono scambiati in varie combinazioni. Solo un po' di storia, ma questa parte è in realtà irrilevante.
I 3 indicatori usano tutti due buffer ciascuno e l'unica variabile che avevano era "CountBars". Dato che erano in uno stato in cui non erano ottimizzabili, dato che l'unica opzione regolabile era "CountBars", ho avuto la brillante idea di usare l'algoritmo di Jurik come una sorta di pre-elaborazione. In questo modo avrei potuto mantenere l'indicatore grezzo, cioè che reagisce rapidamente ma con diversi "singhiozzi", aggiungendo un fattore di lisciatura che è ancora molto reattivo e contemporaneamente a basso ritardo. Così ho chiesto a un noto membro di questo forum di assistermi con quella parte del progetto, cosa che hanno fatto e in modo abbastanza impeccabile, potrei aggiungere. Tuttavia, poiché sono andati al di là della chiamata del dovere, non ho voluto chiedere loro di farmi altri favori, ad esempio scambiando le nuove versioni smussate di Jurik degli stessi indicatori al posto dei loro subordinati grezzi.
Detto questo, ho pensato: "Quanto può essere difficile", ho pensato di saperne abbastanza per farlo da solo. Basta cambiare i nomi che vengono chiamati nelle 3 istanze iCustom, aggiungere le nuove variabili nella parte "extern" e giù nella parte iCustoms, (Ora la versione smthd JRK degli indicatori usa ancora 2 buffer ma hanno una variabile extra, 2 in totale: "SmoothLength" e "SmoothPhase". "CountBars" è stato rimosso) e Voilà! Se solo fosse così facile. Ho fatto queste cose e l'ho compilato, senza errori/avvisi. Tuttavia quando provo a fare il backtest/forward test, niente trading.....![](https://c.mql5.com/forextsd/smiles/cry_smile.png)
Mi manca qualcosa? Qualsiasi consiglio sarà molto apprezzato.![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
Bizzzzzump!
Pace a tutti,
Spero che tutto vada bene per tutti.
La mia domanda è abbastanza semplice per chi è qualificato nel campo della programmazione:
Ho fatto creare professionalmente un e.a. per me, utilizzando 3 indicatori allo stato grezzo. Si tratta di un sistema di 4 strategie codificate in un e.a. dove i 3 indicatori sono scambiati in varie combinazioni. Solo un po' di storia, ma questa parte è in realtà irrilevante.
I 3 indicatori usano tutti due buffer ciascuno e l'unica variabile che avevano era "CountBars". Dato che erano in uno stato in cui non erano ottimizzabili, dato che l'unica opzione regolabile era "CountBars", ho avuto la brillante idea di usare l'algoritmo di Jurik come una sorta di pre-elaborazione. In questo modo avrei potuto mantenere l'indicatore grezzo, cioè che reagisce rapidamente ma con diversi "singhiozzi", aggiungendo un fattore di lisciatura che è ancora molto reattivo e contemporaneamente a basso ritardo. Così ho chiesto a un noto membro di questo forum di assistermi con quella parte del progetto, cosa che hanno fatto e in modo abbastanza impeccabile, potrei aggiungere. Tuttavia, poiché sono andati al di là della chiamata del dovere, non ho voluto chiedere loro di farmi altri favori, ad esempio scambiando le nuove versioni smussate di Jurik degli stessi indicatori al posto dei loro subordinati grezzi.
Detto questo, ho pensato: "Quanto può essere difficile", ho pensato di saperne abbastanza per farlo da solo. Basta cambiare i nomi che vengono chiamati nelle 3 istanze iCustom, aggiungere le nuove variabili nella parte "extern" e giù nella parte iCustoms, (Ora la versione smthd JRK degli indicatori usa ancora 2 buffer ma hanno una variabile extra, 2 in totale: "SmoothLength" e "SmoothPhase". "CountBars" è stato rimosso) e Voilà! Se solo fosse così facile. Ho fatto queste cose e l'ho compilato, senza errori/avvisi. Tuttavia quando provo a fare il backtest/forward test, niente trading.....![](https://c.mql5.com/forextsd/smiles/cry_smile.png)
Mi manca qualcosa? Qualsiasi consiglio sarà molto apprezzato.Ciao Ffl,
Prova iCustom(NULL,0," nome indicatore" SmoothLength,SmoothPhase,0,1) per comprare e iCustom(NULL,0," nome indicatore" SmoothLength,SmoothPhase,1,1), per vendere basta cambiare il "nome indicatore" all'indicatore che stai cercando di chiamare.
Ciao Ffl, prova iCustom(NULL,0," nome indicatore" SmoothLength,SmoothPhase,0,1) per comprare e iCustom(NULL,0," nome indicatore" SmoothLength,SmoothPhase,1,1), per vendere basta cambiare il "nome indicatore" all'indicatore che stai cercando di chiamare.
Pace Mr. T,
Grazie per la guida. Ho fatto queste modifiche in base al tuo suggerimento e E.A. continua a compilare senza errori/avvisi, ma non piazza ancora nessuna compravendita. Proverò un altro work-around a breve.....![](https://c.mql5.com/forextsd/smiles/embaressed_smile.png)