¿Cómo puedo aprender a crear objetos gráficos? MQL4. - página 5

 

Intenté transferir el código del EA al script.

Las líneas se superponen en el script, no entiendo por qué no funcionan en el Expert Advisor?

¿Quién ha conseguido dibujar objetos en la subventana del gráfico al iniciar la visualización del Asesor Experto?


 
forexman77:

Intenté transferir el código del EA al script.

Las líneas se superponen en el script, no entiendo por qué no funcionan en el EA?

¿Quién ha conseguido dibujar objetos en la subventana del gráfico al iniciar la visualización del Asesor Experto?


Especifique el número de la subventana del indicador en la que va a dibujar.
 
Artyom Trishkin:
Especifique el número de subventana del indicador en el que va a dibujar.

De esta manera da -1 en el EA. En el guión, todo está bien, la imagen de arriba. He leído tu artículo sobre el indicador AD, muchas veces, no lo entiendo todavía. Como siempre la razón está en alguna pequeña cosa.

Por lo que entiendo, la ventana no se detecta en el EA por alguna razón, error 4206.

 
forexman77:

De esta manera da -1 en el EA. En el guión, todo está bien, la imagen de arriba. He leído tu artículo sobre el indicador AD, muchas veces, no lo entiendo todavía. Como siempre la razón está en alguna pequeña cosa.

Por lo que tengo entendido la ventana no se detecta en el EA por alguna razón, error 4206.

La ventana del indicador necesita tiempo para crearse. La ventana del indicador no puede dibujarse antes de la primera llamada de OnCalculate(). ¿Quieres dibujar todo en OnInit()?
 
Karputov Vladimir:
La ventana del indicador necesita tiempo para crearse. En la ventana del indicador, se puede dibujar no antes de la primera llamada de OnCalculate(). ¿Quieres dibujar todo en OnInit()?
No. Sólo después de la apertura de una operación, es decir, primero van las líneas de apertura de la posición, cuando se abre se inicia la renderización.

Aquí está el código en el 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); 

Hay una línea en el propio indicador:

IndicatorShortName("fraktalSDV");

 
forexman77:

De esta manera da -1 en el EA. En el guión, todo está bien, la imagen de arriba. He leído tu artículo sobre el indicador AD, muchas veces, no lo entiendo todavía. Como siempre la razón está en alguna pequeña cosa.

Por lo que tengo entendido la ventana no se detecta en el EA por alguna razón, error 4206.

No encuentra la subventana del indicador. Busque la ventana del indicador por el nombre corto del indicador - el que ve en la parte superior izquierda de la ventana del indicador. No debe haber introducido el nombre completo para buscarlo.
 
Artyom Trishkin:
No encuentra la subventana del indicador. Busque la subventana del indicador por el nombre corto del indicador - el que ve en la parte superior izquierda de la ventana del indicador. Probablemente no pongas el nombre completo para buscarlo.

string shortName="fraktalSDV";

Yo lo llamo así. Intenté llamar el nombre del indicador en el Asesor Experto y desarmarlo, no funcionó hasta ahora.

Aquí está el indicador propiamente dicho. Lo borraré más tarde.

 
forexman77:

string shortName="fraktalSDV";

Yo lo llamo así. Traté de llamar el nombre del indicador en el Asesor Experto, no funcionó hasta ahora.

Prueba en

int win_idx=ChartWindowFind(chart_ID,shortName);

No debo poner la búsqueda de la ventana del indicador, sino una (¿hay sólo una ventana en el gráfico?)

Si funciona, entonces devuelve la búsqueda de la ventana a

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

teclear

long   chart_ID=ChartID();
 
Artyom Trishkin:

Intenta

introducir uno en lugar de la búsqueda de la ventana del indicador (¿hay una ventana en el gráfico?)

En la parte superior del propio gráfico con cotizaciones y en la parte inferior en el separador del indicador.
 
forexman77:
En la parte superior está el propio gráfico con las cotizaciones y en la parte inferior en el separador está el indicador.
Así que haz lo que te digan ;) Tienes que buscar el error...
Razón de la queja: