Come posso imparare a creare oggetti grafici? MQL4. - pagina 5

 

Ho provato a trasferire il codice EA allo script.

Le linee si sono sovrapposte nello script, non capisco perché non funzionano nell'Expert Advisor?

Chi è riuscito a disegnare oggetti nella sottofinestra del grafico quando si avvia la visualizzazione dell'Expert Advisor?


 
forexman77:

Ho provato a trasferire il codice EA allo script.

Le linee si sovrappongono nello script, non capisco perché non funzionano nell'EA?

Chi è riuscito a disegnare oggetti nella sottofinestra del grafico quando si avvia la visualizzazione dell'Expert Advisor?


Specificate il numero della sottofinestra dell'indicatore in cui disegnerete.
 
Artyom Trishkin:
Specificate il numero della sottofinestra dell'indicatore in cui disegnerete.

In questo modo dà -1 nell'EA. Nello script, tutto va bene, l'immagine sopra. Ho letto il tuo articolo sull'indicatore AD, un sacco di volte, non lo capisco ancora. Come sempre la ragione è in qualche piccola cosa.

Per quanto ho capito, la finestra non viene rilevata nell'EA per qualche motivo, errore 4206.

 
forexman77:

In questo modo dà -1 nell'EA. Nello script, tutto va bene, l'immagine sopra. Ho letto il tuo articolo sull'indicatore AD, molte volte, non lo capisco ancora. Come sempre la ragione è in qualche piccola cosa.

Per quanto ho capito la finestra non viene rilevata nell'EA per qualche motivo, errore 4206.

La finestra dell'indicatore ha bisogno di tempo per essere creata. La finestra dell'indicatore può essere disegnata non prima della prima chiamata di OnCalculate(). Volete disegnare tutto in OnInit()?
 
Karputov Vladimir:
La finestra dell'indicatore ha bisogno di tempo per essere creata. Nella finestra dell'indicatore, potete disegnare non prima della prima chiamata di OnCalculate(). Volete disegnare tutto in OnInit()?
No. Solo dopo l'apertura di un trade, cioè prima vanno le linee di apertura della posizione, quando è aperta inizia il rendering.

Ecco il codice nell'EA.

string   shortName="fraktalSDV"; 
long   chart_ID=0;        // ID графика
int win_idx=ChartWindowFind(chart_ID,shortName);
string nameobj=TimeToStr(Time[0]);       
            //--- сбросим значение ошибки
            ResetLastError();
            //--- создадим трендовую линию по заданным координатам
           if(!ObjectCreate(chart_ID,nameobj,OBJ_TREND,win_idx,Time[index],maximum1,Time[1],TRENDmax[1]))
            {
            Print(__FUNCTION__,
                  ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
            return(0);
            }
ObjectSet(nameobj,OBJPROP_RAY,false); 

C'è una linea nell'indicatore stesso:

IndicatorShortName("fraktalSDV");

 
forexman77:

In questo modo dà -1 nell'EA. Nello script, tutto va bene, l'immagine sopra. Ho letto il tuo articolo sull'indicatore AD, molte volte, non lo capisco ancora. Come sempre la ragione è in qualche piccola cosa.

Per quanto ho capito la finestra non viene rilevata nell'EA per qualche motivo, errore 4206.

Non trova la sottofinestra dell'indicatore. Cerca la finestra dell'indicatore con il nome dell'indicatore breve - quello che vedi in alto a sinistra della finestra dell'indicatore. Non devi aver inserito il nome intero per cercarlo.
 
Artyom Trishkin:
Non trova la sottofinestra dell'indicatore. Cerca la sottofinestra dell'indicatore con il nome dell'indicatore breve - quello che vedi in alto a sinistra della finestra dell'indicatore. Probabilmente non si mette tutto il nome per cercarlo.

stringa shortName="fraktalSDV";

Io lo chiamo così. Ho provato a chiamare il nome dell'indicatore nell'Expert Advisor e a disinserirlo, ma finora non ha funzionato.

Ecco l'indicatore stesso. Lo cancellerò più tardi.

 
forexman77:

stringa shortName="fraktalSDV";

Io lo chiamo così. Ho provato a chiamare il nome dell'indicatore nell'Expert Advisor, ma finora non ha funzionato.

Prova in

int win_idx=ChartWindowFind(chart_ID,shortName);

Non dovrei mettere la ricerca della finestra dell'indicatore, ma una (c'è solo una finestra sul grafico?)

Se funziona, allora restituite la ricerca della finestra a

long   chart_ID=0;        // ID графика

tipo in

long   chart_ID=ChartID();
 
Artyom Trishkin:

Prova a

inserirne uno al posto della ricerca della finestra dell'indicatore (c'è una finestra sul grafico?)

Nella parte superiore del grafico stesso con le virgolette e nella parte inferiore nel separatore dell'indicatore.
 
forexman77:
In alto c'è il grafico stesso con le quotazioni e in basso nel separatum c'è l'indicatore.
Quindi fai come ti dicono ;) Devi cercare l'errore...
Motivazione: