Sí, es necesario tener un código abierto o una implementación ya hecha.
Cuando pongo el color clrNONE en el probador, ¡el color sigue apareciendo! ¿Entonces clrNONE no funciona en el probador? No puedo comprobarlo en la vida real, es fin de semana...
Si pongo cualquier color en lugar de clrNONE, este color se muestra, pero el valor vacío = no funciona... extraño...
Respuesta: también recargar repetidamente la macro)
Pero es mejor usar el operador + para cadenas y convertir todo en cadenas, entonces no necesitas una versión de función (y macro) con muchos parámetros
Gracias. No sabía que la macro puede ser recargada.
en otro servidor, después de analizar los códigos de error de la solicitud de comercio, descubrí que el problema está en el llenado del campo MqlTradeResult :
request.type_filling = ORDER_FILLING_IOC;
en una búsqueda en el foro no se encontró una solución inequívoca: cómo determinar la configuración del servidor para el campo MqlTradeResult mediante programación
ENUM_ORDER_TYPE_FILLING type_filling; // Тип ордера по исполнению
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---long chart_id=ChartID();
datetime time1=ChartTimeOnDropped();
double price1=ChartPriceOnDropped();
if(ObjectFind(chart_id,InpFiboName)<0)
FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpColor);
else
{
ObjectDelete(chart_id,InpFiboName);
ChartRedraw(chart_id);
FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpLevelsColor);
}
//---int levels = 6; // number of level linesdouble values[6]= {1.0,0.0,2.0,3.0,4.0,5.0}; // values of level linescolor colors[6]; // color of level linesfor(int i=0; i<6; i++)
colors[i]=InpLevelsColor;
ENUM_LINE_STYLE styles[6]; // style of level linesfor(int i=0; i<6; i++)
styles[i]=InpLevelsStyles;
int widths[6]= {2.0,2.0,2.0,2.0,2.0,2.0}; // width of level linesstring texts[6] = {"BREAK EVEN","STOP LOSS","TP1 1.1","TP2 2.1","TP3 3.1","TP4 4.1"}; // text of level lines//---
FiboLevelsSet(levels,values,colors,styles,widths,texts,chart_id,InpFiboName);
}
se puede establecer para los niveles: número de líneas, valor de la línea, color de la línea, estilo de la línea, ancho de la línea, texto de la línea.
intOnInit()
{
//---ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
}
//+------------------------------------------------------------------+/***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
if(id == CHARTEVENT_OBJECT_CREATE)
{
I++;
string result[]; // массив для получения строкStringSplit(sparam, ' ', result); // получим из имени созданного объекта подстрокиulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объектаstring newName = result[0]+" "+result[1]+" "+string(I); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объект//----------------------------------------------------------------------------------------double Level_0= ObjectGetDouble(
0, // идентификатор графика
newName, // имя объектаOBJPROP_PRICE, // идентификатор свойства0// модификатор свойства
);
double Level_1= ObjectGetDouble(
0, // идентификатор графика
newName, // имя объектаOBJPROP_PRICE, // идентификатор свойства1// модификатор свойства
);
//------------------------------------------------------------------------------------------------------if(Level_0 > Level_1)
{
ObjectSetInteger(0,newName,OBJPROP_COLOR,clrDeepSkyBlue);
}
else
{
ObjectSetInteger(0,newName,OBJPROP_COLOR,clrYellow);
}
}/******************************************************************/
}
Hola, podrías decirme por qué al depurar el código, yendo paso a paso las líneas se recolorean en ambos colores dependiendo de los valores de las coordenadas. Y lanzando el EA en el gráfico, la condición de las líneas if(Level_0 > Level_1) nunca es verdadera ?
Hola, podrías decirme por qué en la depuración, al pasar el código paso a paso, las líneas se repintan en ambos colores dependiendo de los valores de las coordenadas. Y lanzando EA en un gráfico, la condición de línea if(Level_0 > Level_1) nunca es verdadera ?
Es muy probable que después de renombrar un objeto, éste no esté disponible para ser accedido. Puedes probar a poner ChartRedraw después de cambiar el nombre. Si no funciona, hay que construir la secuencia de otra manera.
ps; Otra opción: primero repintar con el nombre de sparam y luego renombrarlo.
Un indicador para esto debe tener un parámetro de color de entrada. Es decir, debe ser un indicador personalizado.
GRACIAS! pero si no tengo acceso al código fuente, no es factible?
¿pero si no tengo acceso al código fuente, no se puede implementar?
Sí, hay que tener un código abierto o una implementación ya hecha.
Sí, es necesario tener un código abierto o una implementación ya hecha.
Cuando pongo el color clrNONE en el probador, ¡el color sigue apareciendo! ¿Entonces clrNONE no funciona en el probador? No puedo comprobarlo en la vida real, es fin de semana...
Si pongo cualquier color en lugar de clrNONE, este color se muestra, pero el valor vacío = no funciona... extraño...Respuesta: también recargar repetidamente la macro)
Pero es mejor usar el operador + para cadenas y convertir todo en cadenas, entonces no necesitas una versión de función (y macro) con muchos parámetros
Gracias. No sabía que la macro puede ser recargada.
Gracias. No sabía que la macro se podía recargar.
error tipográfico - reload, no reload)
ordenó los ejemplos al final de esta sección de ayudahttps://www.mql5.com/ru/docs/constants/structures/mqltraderequest
en el servidor Metacquot, todo está bien
en otro servidor, después de analizar los códigos de error de la solicitud de comercio, descubrí que el problema está en el llenado del campo MqlTradeResult :
request.type_filling = ORDER_FILLING_IOC;en una búsqueda en el foro no se encontró una solución inequívoca: cómo determinar la configuración del servidor para el campo MqlTradeResult mediante programación
UPD: encontrado una solución que funcionahttps://www.mql5.com/ru/forum/168912/page2#comment_4062864
¡@fxsaber gracias!
Por favor, dígame cómo establecer los niveles de Fibo para la autoconstrucción
Ejemplo en el códigoFibonaci RR-
se puede establecer para los niveles: número de líneas, valor de la línea, color de la línea, estilo de la línea, ancho de la línea, texto de la línea.
Hola, podrías decirme por qué al depurar el código, yendo paso a paso las líneas se recolorean en ambos colores dependiendo de los valores de las coordenadas. Y lanzando el EA en el gráfico, la condición de las líneas if(Level_0 > Level_1) nunca es verdadera ?
Hola, podrías decirme por qué en la depuración, al pasar el código paso a paso, las líneas se repintan en ambos colores dependiendo de los valores de las coordenadas. Y lanzando EA en un gráfico, la condición de línea if(Level_0 > Level_1) nunca es verdadera ?
Es muy probable que después de renombrar un objeto, éste no esté disponible para ser accedido. Puedes probar a poner ChartRedraw después de cambiar el nombre. Si no funciona, hay que construir la secuencia de otra manera.
ps; Otra opción: primero repintar con el nombre de sparam y luego renombrarlo.