[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 132
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
GRAZIE MILLE!
La tua versione dell'indicatore funziona!
Ho provato a risolverli con il tutorial MQL4 e gli esempi rivisti di indicatori, ma niente ha funzionato.
Se avete il desiderio, il tempo e la voglia di aiutarmi a capire perché:
1. Quando si installa la linea indicatore riceve un valore di 0 (zero) e solo con l'arrivo del primo tick prende il valore della variabile top, o dovrebbe aprire la finestra dei parametri e chiuderla immediatamente;
2. Il parametro top è calcolato al 4° segno, anche se c'è la seguente linea in init()
IndicatoreCifre(Cifre+1);
e la linea
top=WindowPriceMax(win_idx);
L'ho sostituito con
top=NormalizeDouble((WindowPriceMax(win_idx)),Digits+1);
Non aiuta! E i valori numerici della scala della finestra dell'indicatore sono 5 cifre.
3. Con la rimozione dell'indicatore Comment non viene rimosso dal grafico.
Codice
--------
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
double ExtMapBuffer1[],
ExtMapBuffer2[];
//--------------------------------
int init()
{
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
IndicatorShortName("MACD_max-min_v2");
IndicatorDigits(Digits+1);
return(0);
}
//--------------------------------
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),limit,win_idx;
double top;
if(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
win_idx=WindowFind("MACD_max-min_v2");
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
}
// top=WindowPriceMax(win_idx);
top=NormalizeDouble((WindowPriceMax(win_idx)),Digits+1);
Comment( "\n"," top = ",top);
ObjectDelete("max");
if(ObjectFind("max")!=win_idx)
{
ObjectCreate("max",OBJ_HLINE,win_idx,Time[0],top);
ObjectSet("max",OBJPROP_COLOR,Yellow);
ObjectSet("max",OBJPROP_WIDTH,0);
}
return(0);
}
//+------------------------------------------------------------------+
P.S.
per cancellare la linea di commento, inserire Comment(") in deinit();
Correzione tecnica - usa il pulsante SRC sul pannello superiore per inserire il codice, come fanno i tuoi consulenti. Sarà molto più facile da leggere.
P.S.
Per cancellare la linea di commento, inserite Comment(") in deinit();
Gli array non possono essere passati a Comment(). Gli array devono essere stampati elemento per elemento.
I dati di tipo doppio vengono stampati con 4 cifre decimali dopo il punto. Per produrre numeri con maggiore precisione, usate DoubleToStr().
I tipi bool, datetime e color saranno stampati come numeri.
Per emettere dati datetime come una stringa, usate la funzione TimeToStr().
Per dividere l'output in più righe, puoi usare il carattere di avanzamento di riga "\n" o "\r\n".
Vedere anche Alert() e Print().
Il prezzo ha attraversato la linea orizzontale verso l'alto....
E come dovrebbe essere descritta questa linea?
Salve,
Ecco il problema che ho.
Lavorare su PERIOD_H1.
Per chiudere alla fine dell'ora faccio così:
Per aprire una posizione all'inizio dell'ora faccio quanto segueMa per il test va così
Non riesco a capire dove sto sbagliando.
Non tutte le volte funziona così, ma ci sono questi momenti.
Grazie a chi risponderà :).
Non sto dicendo questo, sto dicendo che differenza fa dove è attaccato l'EA? Se è scritto correttamente, non importa dove è collocato - basta metterlo su un grafico del cambio mongolo, ma se è impostato per operare su EURUSD 1 minuto, lo farà. E non è difficile da programmare, basta cambiare un paio di righe.
Grazie mille per il chiarimento!
Sono solo preoccupato per il tester che simula barre da un minuto per le modifiche all'apertura di ogni barra da un minuto.
Proverò a cambiare Open[0] in iOpen(NULL,1,0) e ad aggiungere una funzione per controllare l'apertura della barra di un minuto.
Sono passati alcuni minuti, durante i quali ho messo a punto il codice e l'ho provato con il tester a M5 e ho fatto in modo che in questo caso il tester non apra barre di 1 minuto, anche se prescritto, e lo modifichi solo ogni 5 minuti, cosa che temevo. In modalità all ticks è un po' meglio, perché modifica più spesso. Ma su M1 solo all'apertura della barra funziona lo stesso, sia con Open[0] che con iOpen(NULL,1,0), di cui sono ancora grato!
Ora userò sempre iOpen verde, poiché vedo che posso fare a meno di Open rosso. Il profitto verde è più bello della perdita rossa. (:))
Salve,
Ecco il problema che ho.
Lavorare su PERIOD_H1.
Per chiudere alla fine dell'ora faccio così:
Per aprire una posizione all'inizio dell'ora, faccio cosìMa per il test va così
Non riesco a capire dove sto sbagliando.
Non tutte le volte funziona così, ma ci sono questi momenti.
Grazie, chi risponde :)
Un amico mi ha dato un consiglio:
Invece di TimeCurrent().
TimeSeconds(TimeCurrent())
E ha funzionato.