[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 65
Me pueden decir cómo reabrir un archivo en un script: abrir archivo - mirar a través - cerrar archivo, cuando intento reabrirlo me dice "fin de archivo"...
Hola, Pueden aconsejar si alguien se ha encontrado con este problema: En la ventana del gráfico de divisas, a veces el propio gráfico desaparece. Luego dice refrescar y todo se restablece. En este momento, a veces los asesores expertos empiezan a trabajar de forma incorrecta (abriendo operaciones sin condiciones). Hoy incluso he abierto una operación con el lote máximo. Me he dado cuenta y he cerrado con 2,5 puntos de pérdida. Aquí está el código para determinar el lote. Sospecho que esto se debe a las dos últimas líneas. ¿Pero cómo?
//======================================================================== //определение лота//========================================================================double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
LOT=NormalizeDouble(AccountFreeMargin()*RISK/100000,2);
if (LOT*One_Lot > Free) // Не хватает даже..
{ // ..на минимальн. лот:(Comment("денег нет " );
return(0); // ..и выход
}
elseComment("деньга есть " );
if(LOT<Min_Lot)
LOT=Min_Lot;
if(LOT>Max_Lot)
LOT=Max_Lot;
далее открытие ордера по условиям.
Me pueden decir si es posible mostrar texto en un gráfico, como
como una función separada para que pueda ser llamada así:
Mira esta función:
//+----------------------------------------------------------------------------+void iPrint(bool print, string mess1, string mess2="", string mess3="", string mess4="",
int sz=9, color cl1=Aqua, color cl2=Aqua, color cl3=Aqua, color cl4=Aqua) {
string NameGrafText, message, nm;
int i, y, k, LenStr, shift, Win_Num=-1, num=0;
color cl;
if (mess1=="") {
Print("Func iPrint: Передана пустая строка, выходим");
return;
}
Win_Num=WindowFind("Win_Inform");
if (print || Win_Num<0) {
message=mess1+mess2+mess3+mess4;
Print(message);
return;
}
k=ArraySize(Mass_Name_Message)-1;
if (StringLen(mess1)>0) num++;
if (StringLen(mess2)>0) num++;
if (StringLen(mess3)>0) num++;
if (StringLen(mess4)>0) num++;
for (i=k; i>=0; i--) {
NameGrafText=Mass_Name_Message[i];
if (StringLen(NameGrafText)>0)
if (ObjectFind(NameGrafText)==Win_Num) {
if (i+num>k) {
ObjectDelete(NameGrafText);
Mass_Name_Message[i]="";
}
elseif (i+num<=k) {
Mass_Name_Message[i+num]=Mass_Name_Message[i];
y=ObjectGet(NameGrafText, OBJPROP_YDISTANCE); // координата YObjectSet (NameGrafText, OBJPROP_YDISTANCE, y+(sz+1)*num); // координата YObjectSet (NameGrafText, OBJPROP_COLOR, LightSeaGreen); // цвет
}
}
}
shift=num;
int v=GetTickCount();
for (i=0; i<num; i++) {
shift--;
NameGrafText=Prefix+"_Graf_Text_"+i+"_"+sy+"_"+v;
int app=0;
while (ObjectFind(NameGrafText)==Win_Num) {
app++;
NameGrafText=Prefix+"_Graf_Text_"+i+"_"+sy+"_"+v+"_"+app;
}
Mass_Name_Message[num-1-i]=NameGrafText;
switch (i) {
case0: message=mess1; cl=cl1; break;
case1: message=mess2; cl=cl2; break;
case2: message=mess3; cl=cl3; break;
case3: message=mess4; cl=cl4; break;
default:message=mess1; cl=cl1; break;
}
ObjectCreate (NameGrafText, OBJ_LABEL, Win_Num, 0, 0);
ObjectSetText(NameGrafText, message, sz, "Courier New", cl);
ObjectSet (NameGrafText, OBJPROP_COLOR, cl); // цветObjectSet (NameGrafText, OBJPROP_CORNER, 2); // уголObjectSet (NameGrafText, OBJPROP_XDISTANCE, 150); // координата ХObjectSet (NameGrafText, OBJPROP_YDISTANCE, 2+(sz+1)*shift); // координата YWindowRedraw();
}
return;
}
//+----------------------------------------------------------------------------+
Busca la ventana vacía del indicador Win_Inform en el gráfico y, si está presente, muestra los mensajes en ella. Si no es así, lo emite con la impresión.
Utiliza la matriz Mass_Name_Message[10] declarada a nivel global. Es un array para almacenar los nombres de los objetos. Puedes cambiar su tamaño para adaptarlo a tus necesidades. La variable Prefix almacena los nombres de los expertos para permitirles identificar sus propios objetos para el correcto manejo de los objetos gráficos. También se declara globalmente y tiene el tipo de cadena. Probablemente puedas imaginarlo...
Recorta un mensaje largo, por ejemplo si intentas comentar la línea "Comprueba la configuración de tu EA, para abrir la ventana de configuración pulsa F7".
sólo queda esto: "Comprueba la configuración de tu EA para abrir la ventana de configuración" y luego se corta, aunque el texto no llega ni a la mitad de la ventana.
¿Pueden decirme si hay alguna forma de eliminar esta restricción?
Recorta un mensaje largo, por ejemplo si intentas comentar la línea "Comprueba la configuración de tu EA, para abrir la ventana de configuración pulsa F7".
sólo queda esto: "Comprueba la configuración de tu EA para abrir la ventana de configuración" y luego se corta, aunque el texto no llega ni a la mitad de la ventana.
¿Pueden decirme si hay alguna forma de eliminar esta restricción?
Prueba mi función. Está por encima de su puesto en esta página. Dividir una cadena en varias cadenas para que cada una no tenga más de 64 caracteres. Mi función emite estas líneas divididas una encima de la otra. Entonces, cuando se muestra el siguiente mensaje, pone en escala de grises los antiguos por encima, y muestra el nuevo mensaje en el color que usted estableció cuando llamó a mi función.
Descargué el historial y accidentalmente descubrí que tengo un agujero en USDJPY desde 2012.01.16 hasta 2012.03.20. Cuando intenté volver a descargarlo, el terminal me respondió que tenía todo el historial. ¿Cómo puedo llenar este vacío? ¿Cómo puedo cargar el historial sin agujeros? ¿Y hay alguna forma de comprobar si hay un agujero en el historial?
artmedia70: Prueba mi función. Está por encima de su puesto en esta página. Dividir una cadena en varias cadenas para que cada una no tenga más de 64 caracteres. Mi función emite estas líneas divididas una encima de la otra. Entonces, cuando se muestra el siguiente mensaje, pone en escala de grises los antiguos por encima, y muestra el nuevo mensaje en el color que usted estableció cuando llamó a mi función.
Gracias, pero es un poco complicado para mí, y tu función emite 4 mensajes a la vez, mientras que yo necesito uno. ¿Resulta que no hay más de 64 caracteres en una línea?
Roll, gracias por el consejo, aquí hay una función para mostrar un comentario en la esquina inferior izquierda del gráfico si alguien lo necesita:
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
Hola a todos.
Me pueden decir si es posible mostrar texto en un gráfico, como
como una función separada para que pueda ser llamada así:
Mira esta función:
Busca la ventana vacía del indicador Win_Inform en el gráfico y, si está presente, muestra los mensajes en ella. Si no es así, lo emite con la impresión.
Ejemplo de llamada:
Utiliza la matriz Mass_Name_Message[10] declarada a nivel global. Es un array para almacenar los nombres de los objetos. Puedes cambiar su tamaño para adaptarlo a tus necesidades. La variable Prefix almacena los nombres de los expertos para permitirles identificar sus propios objetos para el correcto manejo de los objetos gráficos. También se declara globalmente y tiene el tipo de cadena. Probablemente puedas imaginarlo...
Pavo en un remolque
Enfrentado a un pequeño problema con mi función:
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
Recorta un mensaje largo, por ejemplo si intentas comentar la línea "Comprueba la configuración de tu EA, para abrir la ventana de configuración pulsa F7".
sólo queda esto: "Comprueba la configuración de tu EA para abrir la ventana de configuración" y luego se corta, aunque el texto no llega ni a la mitad de la ventana.
¿Pueden decirme si hay alguna forma de eliminar esta restricción?
No, longitud máxima de la línea en la etiqueta = 62 caracteres.
Formatear el texto en varias líneas (etiquetas), o utilizar Comment() - hay 255 caracteres
A continuación se muestra el código en sí.
Si tienes una solución más sencilla, estaré encantado de recibir comentarios.
Enfrentado a un pequeño problema con mi función:
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
Recorta un mensaje largo, por ejemplo si intentas comentar la línea "Comprueba la configuración de tu EA, para abrir la ventana de configuración pulsa F7".
sólo queda esto: "Comprueba la configuración de tu EA para abrir la ventana de configuración" y luego se corta, aunque el texto no llega ni a la mitad de la ventana.
¿Pueden decirme si hay alguna forma de eliminar esta restricción?
¿Cómo puedo llenar este vacío?
¿Cómo puedo cargar el historial sin agujeros?
¿Y hay alguna forma de comprobar si hay un agujero en el historial?
Prueba mi función. Está por encima de su puesto en esta página. Dividir una cadena en varias cadenas para que cada una no tenga más de 64 caracteres. Mi función emite estas líneas divididas una encima de la otra. Entonces, cuando se muestra el siguiente mensaje, pone en escala de grises los antiguos por encima, y muestra el nuevo mensaje en el color que usted estableció cuando llamó a mi función.