RogozaIV: Perdón por la pregunta tan simple, ¿cómo cierro una posición abierta? mql4 tiene la función OrderClose(), pero ¿cómo lo hago aquí?
En mql5, hay que abrir una posición contraria. Se puede ver claramente en la pestaña del historial del terminal. La forma más sencilla es utilizar la clase CTrade de la biblioteca estándar.
Estoy preparando un indicador para ser llamado en el EA.
Quiero enviar un buffer desde el indicador.
El resultado es el valor int ligado a la barra.
La tarea consiste en pasar un array bidimensional del indicador a un Asesor Experto, no consigo averiguar cómo hacerlo.
Lo llamo en el EA
1. Recuerde que en el INDICADOR la memoria intermedia del indicador por defecto con índice "0" corresponde a la barra más a la izquierda del gráfico.
2. El Asesor Experto no tiene el comando "SetIndexBuffer".
3. iCustom está creando un indicador personalizado, no una solicitud de buffer (por lo tanto, todo debe ser escrito explícitamente, no ",0,1"). En su caso, puede utilizar este formulario
//--- create handle of the indicator TopqwResetLastError();
handle_Topqw=iCustom(Symbol(),Period(),"Topqw",PRICE_CLOSE);
//--- if the handle is not created if(handle_Topqw==INVALID_HANDLE)
{
//--- tell about the failure and output the error code PrintFormat("Failed to create handle of the Topqw indicator for the symbol %s/%s, error code %d",
Symbol(),
EnumToString(Period()),
GetLastError());
//--- the indicator is stopped early return(INIT_FAILED);
}
4. CopyBuffer parece estar escrito correctamente.
5. No se puede pasar un array bidimensional - haz dos buffers de indicadores de array.
1. Recuerde que en el INDICADOR, por defecto, el buffer del indicador con índice "0" corresponde a la barra más a la izquierda del gráfico.
2. No hay ningún comando "SetIndexBuffer" en el EA.
3. iCustom está creando un indicador personalizado, no una solicitud de buffer (por lo tanto todo debe ser escrito explícitamente, no ",0,1"). En su caso, puede utilizar este formulario
4. CopyBuffer parece estar escrito correctamente.
5. No puedes pasar un array bidimensional - haz dos buffers indicadores de array.
Gracias por la corrección, pero no entiendo, si pongo explícitamente transferir arrays, ¿cómo se formaliza? ¿Dónde especifico que tengo que extraer dos arrays?
MA_handle=iCustom(Symbol(),Period(),"TopFidCounselor",per,bar); per,bar - же массивы, а данные должны быть imput,
в индикаторе записываю в массивы
SetIndexBuffer(0,per,INDICATOR_CALCULATIONS);
SetIndexBuffer(1,bar,INDICATOR_CALCULATIONS);
если я сделаю такую запись
intOnCalculate(
...
{
//--------------------------------------------------------------
for ( int i = 0; i < rates_total; i ++ ) per[i] = price[i]; -
//--------------------------------------------------------------
ТО СОВЕТНИК РАБОТАЕТ БЕЗ ОШИБКИ
а если такую
//----------------------------------------------------------------
for(int b=1; b<200; b++) //отбор по х-
{-
for(int p=1; p<200; p++) // отбор по у-
{-
if(arrayZ[6][p][b]>0||arrayZ[6][p][b]<0)-
{-
per[b]=p;-
bar[b]=b;-
}-
}-
}-
//----------------------------------------------------------------
ТО ОШИБКА код 4002
He mirado a través deIndicatorCreate(), podrías por favor decirme cómo, si no tardaré semanas en averiguarlo, y me queda tan poco para terminar el bloque de ideas. Tengo que ir pronto a la taiga para pasar el verano con las abejas forrajeando, así que quiero comprobar la idea antes de partir, para no hacerme ilusiones.
sólo que no está claro dónde escribir el array a extraer?
El arrayper se declara en el EA, en el procedimiento en el que se realiza la copia. Debe ser un array dinámico (declarado como [] - sin especificar la dimensionalidad).
Perdón por la pregunta tan simple, ¿cómo cierro una posición abierta? mql4 tiene la función OrderClose(), pero ¿cómo lo hago aquí?
En mql5, hay que abrir una posición contraria. Se puede ver claramente en la pestaña del historial del terminal. La forma más sencilla es utilizar la clase CTrade de la biblioteca estándar.
Señores, por favor, díganme dónde está el error.
Estoy preparando un indicador para ser llamado en el EA.
Quiero enviar un buffer desde el indicador.
El resultado es el valor int que se adjunta a la barra.
La tarea consiste en pasar un array bidimensional del indicador a un Asesor Experto, no consigo averiguar cómo hacerlo.
Así que lo llamo en el EA
Señores, por favor, díganme dónde está el error.
Estoy preparando un indicador para ser llamado en el EA.
Quiero enviar un buffer desde el indicador.
El resultado es el valor int ligado a la barra.
La tarea consiste en pasar un array bidimensional del indicador a un Asesor Experto, no consigo averiguar cómo hacerlo.
Lo llamo en el EA
1. Recuerde que en el INDICADOR la memoria intermedia del indicador por defecto con índice "0" corresponde a la barra más a la izquierda del gráfico.
2. El Asesor Experto no tiene el comando "SetIndexBuffer".
3. iCustom está creando un indicador personalizado, no una solicitud de buffer (por lo tanto, todo debe ser escrito explícitamente, no ",0,1"). En su caso, puede utilizar este formulario
4. CopyBuffer parece estar escrito correctamente.
5. No se puede pasar un array bidimensional - haz dos buffers de indicadores de array.
1. Recuerde que en el INDICADOR, por defecto, el buffer del indicador con índice "0" corresponde a la barra más a la izquierda del gráfico.
2. No hay ningún comando "SetIndexBuffer" en el EA.
3. iCustom está creando un indicador personalizado, no una solicitud de buffer (por lo tanto todo debe ser escrito explícitamente, no ",0,1"). En su caso, puede utilizar este formulario
4. CopyBuffer parece estar escrito correctamente.
5. No puedes pasar un array bidimensional - haz dos buffers indicadores de array.
He mirado a través deIndicatorCreate(), podrías por favor decirme cómo, si no tardaré semanas en averiguarlo, y me queda tan poco para terminar el bloque de ideas. Tengo que ir pronto a la taiga para pasar el verano con las abejas forrajeando, así que quiero comprobar la idea antes de partir, para no hacerme ilusiones.Gracias por la corrección, pero no entiendo, si pongo explícitamente transferir arrays, ¿cómo se formaliza? ¿Dónde especifico que tengo que extraer dos arrays?
¿Es correcto lo que utilizo en el indicadorINDICATOR_CALCULATIONS?
El error 4002 está resuelto.
sólo que no está claro dónde escribir el array a extraer?
El error 4002 está resuelto.
sólo que no está claro dónde escribir el array a extraer?
El arrayper se declara en el EA, en el procedimiento en el que se realiza la copia. Debe ser un array dinámico (declarado como [] - sin especificar la dimensionalidad).