[¡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 420
Buenos días! Si tienes un minuto, mira lo que pasa aquí, todo va bien en las pruebas, lo pongo en un gráfico real, me siento y espero, pero no pone órdenes pendientes! De nuevo empiezo a probar, compra... Error 130
Sí, yo también lo pensé... Pero el hecho es que 64 ve a todo el mundo en la red, 32 sólo ve a 32. ¿WTF?
sub: ¿Podría estar relacionado con el hecho de que sólo el escritorio (32) está en esta red a través del cable RG45, y todos los demás a través de la red inalámbrica?
aproximadamente:
Andrei, tienes que invitar a mi hijo, él vendrá a ti y lo preparará todo.
ZS. Lo digo en serio, la política es configurar el enrutamiento correctamente también. Pero, en mi opinión, hay que hacerlo a nivel local, ¿no hay estudiantes cerca?
Sí, yo también lo pensé... Pero el hecho es que 64 ve a todo el mundo en la red, 32 sólo ve a 32. ¿WTF?
sub: ¿Podría estar relacionado con el hecho de que sólo el escritorio (32) está en esta red a través del cable RG45, y todos los demás a través de la red inalámbrica?
Más o menos:
Tuve un problema similar. Resuelto. Era un módulo Wi-Fi mal configurado. Existe una función de seguridad en los sistemas superiores a XP.
Gracias, he puesto RefreshRates(); ha funcionado, pero sólo en el ordenador que he copiado en otro terminal, los datos son totalmente diferentes... y para mal, ¿puede ser?
Estos datos son necesarios para calcular la diferencia entre las órdenes de compra y de venta.
Supongamos que se abrieron una orden de compra con un volumen de 0,09 lotes y dos órdenes de venta con un volumen total de 0,11 lotes, la diferencia entre ellas será 0,09-0,11=-0,02, o si es posible la diferencia entre sus valores.
Buenas tardes. Mi pregunta es la siguiente. En el libro de MQL4 que se encuentra en MQL4.community, en la sección "Funciones estándar" de la sección "Funciones de cadena y funciones de conversión de datos", se da el siguiente ejemplo del Asesor Experto strings.mq4 (dado en su totalidad del libro)
//--------------------------------------------------------------------// strings.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --externint Quant_Bars=100; // Количество баровdatetime Time_On;
string Prefix ="Paint_";
//--------------------------------------------------------------- 2 --int init() // Спец. функция init()
{
int Ind_Bar; // Индекс бара
Time_On=Time [Quant_Bars]; // Время первого раскрашенногоfor(Ind_Bar=Quant_Bars-1; Ind_Bar>=0; Ind_Bar--)// Цикл по барам
{
Create(Ind_Bar,1); // Нарисуем тонкую линию
Create(Ind_Bar,2); // Нарисуем толстую линию
}
WindowRedraw(); // Перерисовка изображения return; // Выход из init()
}
//--------------------------------------------------------------- 3 --int start() // Спец. функция start
{
datetime T1, T2; // 1 и 2 координаты времениint Error,Ind_Bar; // Код ошибки и индекс бараdouble P1, P2; // 1 и 2 координата ценыcolor Col; // Цвет созданного объекта//--------------------------------------------------------------- 4 --for(int Line=1; Line<=2; Line++) // Цикл по видам линий
{
string Nom_Lin =Line + "_"; // Строка с номером линии// string Nom_Lin = DoubleToStr(Line,0)+"_";// Можно и такfor(Ind_Bar=0; ;Ind_Bar++) // Цикл по барам
{
//--------------------------------------------------------------- 5 --datetime T_Bar= Time[Ind_Bar];// Время открытия бараif (T_Bar < Time_On) break; // Заграничные не раскрашиваемstring Str_Time=TimeToStr(T_Bar); // Строка со временемstring His_Name=Prefix+Nom_Lin+Str_Time;// Имя объекта//--------------------------------------------------------------- 6 --
T1=ObjectGet(His_Name,OBJPROP_TIME1);// Запрос коорд. t1
Error=GetLastError(); // Получение кода ошибкиif (Error==4202) // Если объекта нет :(
{
Create(Ind_Bar,Line); // Вызов ф-ии создания объектаcontinue; // На следующую итерацию
}
//--------------------------------------------------------------- 7 --
T2 =ObjectGet(His_Name,OBJPROP_TIME2); // Запрос коорд. t2
P1 =ObjectGet(His_Name,OBJPROP_PRICE1);// Запрос коорд. p1
P2 =ObjectGet(His_Name,OBJPROP_PRICE2);// Запрос коорд. p1
Col=ObjectGet(His_Name,OBJPROP_COLOR); // Запрос цветаif(T1!=T_Bar || T2!=T_Bar || // Не те координаты или цвет:
(Line==1 && (P1!=High[Ind_Bar] || P2!= Low[Ind_Bar])) ||
(Line==2 && (P1!=Open[Ind_Bar] || P2!=Close[Ind_Bar])) ||
(Open[Ind_Bar] Close[Ind_Bar] && Col!=Red) ||
(Open[Ind_Bar]==Close[Ind_Bar] && Col!=Green) )
{
ObjectDelete(His_Name); // Удаляем объект
Create(Ind_Bar,Line); // Создаём правильный объект
}
//--------------------------------------------------------------- 8 --
}
}
WindowRedraw(); // Перерисовка изображения return; // Выход из start()
}
//--------------------------------------------------------------- 9 --int deinit() // Спец. функция deinit()
{
string Name_Del[1]; // Объявление массиваint Quant_Del=0; // Количество удаляемых объектовint Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектовArrayResize(Name_Del,Quant_Objects);// Необходимый размер массиваfor(int k=0; k<=Quant_Del; i++) // Удаляем объекты с именами,.. ObjectDelete(Name_Del[i]); // .. имеющимися в массивеreturn; // Выход из deinit()
}
//-------------------------------------------------------------- 10 --int Create(int Ind_Bar, int Line) // Пользовательская функция..
{ // ..создания объектаcolor Color; // Цвет объектаdatetime T_Bar=Time [Ind_Bar]; // Время открытия бараdouble O_Bar=Open [Ind_Bar]; // Цена открытия бараdouble C_Bar=Close[Ind_Bar]; // Цена закрытия бараdouble H_Bar=High [Ind_Bar]; // Максимальная цена бараdouble L_Bar=Low [Ind_Bar]; // Минимальная цена бараstring Nom_Lin =Line + "_"; // Строка - номер линии// string Nom_Lin = DoubleToStr(Line,0)+"_";// Можно и такstring Str_Time=TimeToStr(T_Bar); // Строка - время откр. string His_Name=Prefix+Nom_Lin+Str_Time;// Имя созаваемого объектif (O_Bar < C_Bar) Color=Blue; // Выбор цвета в зависимости..if (O_Bar >C_Bar) Color=Red; // .. от характеристик бараif (O_Bar ==C_Bar) Color=Green;
switch(Line) // Тонкая или толстая линия
{
case1: // Тонкая линияObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar);
break; // Выход из switchcase2: // Толстая линияObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar);
ObjectSet( His_Name, OBJPROP_WIDTH, 3);// Стиль
}
ObjectSet( His_Name, OBJPROP_COLOR, Color); // ЦветObjectSet( His_Name, OBJPROP_RAY, false); // ЛучObjectSetText(His_Name,"Объект создан экспертом",10);// Описаниеreturn; // Выход из польз. ф-ии
}
//-------------------------------------------------------------- 11 –
Al final de la subsección StringSubstr Function entre paréntesis se encuentra la siguiente frase: "por separado debemos notar que en el primer bucle for (mi nota: debe ser deinit() ya que no hay otra forma de borrar objetos) no podemos borrar objetos ya que después de cada borrado el número de objetos y su numeración cambiará y algunos nombres de objetos serán saltados". Pero en el citado EA no hay ningún segundo bucle for . Además, la variable Quant_Del definida en la función deinit() antes del bucle for se inicializa con cero, mientras que la variable i no estaba definida en ninguna parte antes del bucle for.
for(int k=0; k<=Quant_Del; i++) // Удаляем объекты с именами,.. ObjectDelete(Name_Del[i]); // .. имеющимися в массиве
Resulta que el código anterior omite trivialmente varias líneas del programa.
Así que la primera pregunta es la siguiente: ¿fue realmente una omisión trivial de varias líneas o es un programa tan complicado que un novato no puede entender su significado sin ayuda externa?
Además... En el mismo capítulo de la misma sección, hay un enlace al mismo Asesor Experto (en el archivo adjunto) antes del texto citado que, al hacer clic, abre el mismo Asesor Experto en MetaElitor. Pero el texto de este Asesor Experto es diferente: la función deinit()tiene este aspecto
//--------------------------------------------------------------- 9 --int deinit() // Спец. функция deinit()
{
string Name_Del[1]; // Объявление массиваint Quant_Del=0; // Количество удаляемых объектоint Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектовArrayResize(Name_Del,Quant_Objects);// Необходимый размер массиваfor(int k=0; k<Quant_Objects; k++) // По количеству объектов
{
string Obj_Name=ObjectName(k); // Запрашиваем имя объектаstring Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 симif (Head==Prefix) // Найден объект, ..
{ // .. начинающийся с Paint_
Quant_Del=Quant_Del+1; // Колич имён к удалению
Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
}
}
for(int i=0; i<=Quant_Del; i++) // Удаляем объекты с именами,.. ObjectDelete(Name_Del[i]); // .. имеющимися в массивеreturn; // Выход из deinit()
}
//-------------------------------------------------------------- 10 --
Entonces, si "combinar"la frase "Por separado, tenga en cuenta que no puede eliminar objetos en el primer bucle for, porque en este caso el número total de objetos y su numeración cambiarán después de cada eliminación, y algunos nombres de objetos se omitirán como resultado" Ytexto función deinit() de la última variante, tengo la segunda pregunta:
Pregunta. ¿Por qué no puedo eliminar objetos en el primer bucle for colocando la función ObjectDelete(Nombre_Objeto) dentro de la sentencia if? Algo así como:
int deinit() // Спец. функция deinit()
{
int Quant_Objects=ObjectsTotal(); // Cтолько всего ВСЕХ объектовfor(int k=0; k<Quant_Objects; k++) // По количеству объектов
{
string Obj_Name=ObjectName(k); // Запрашиваем имя объектаstring Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 симif (Head==Prefix) // Если найден объект, …
{ // ... начинающийся с Paint_,ObjectDelete(Obj_Name); // … то его и удаляем
} //конец if
} //конец forreturn; // Выход из deinit()
} //конец deinit//-------------------------------------------------------------- 10 --
Por qué después de cada borrado "... El número total de objetos cambiará"... Porque en este caso, la variable Quant_Objects, que determina el número total de objetos, adquiere su valor igual a ObjectsTotal(), ¿FORWARD el bucle for?
P.S. Gracias de antemano por la respuesta, para no ensuciar el foro.
Tuve este problema, resuelto buscando un ordenador en la red. No en el entorno de la red, aparece a través de la búsqueda... Un error de algún tipo.
P.D. O el problema de las manos torcidas. ))) Comprueba el trazador y el ping donde van los paquetes.
Buenos días! Si tienes un minuto, mira lo que pasa aquí, todo va bien en las pruebas, lo pongo en un gráfico real, me siento y espero, pero no pone órdenes pendientes! De nuevo empiezo a probar, compra... Error 130
Sí, yo también lo pensé... Pero el hecho es que 64 ve a todo el mundo en la red, 32 sólo ve a 32. ¿WTF?
sub: ¿Podría estar relacionado con el hecho de que sólo el escritorio (32) está en esta red a través del cable RG45, y todos los demás a través de la red inalámbrica?
aproximadamente:
Andrei, tienes que invitar a mi hijo, él vendrá a ti y lo preparará todo.
ZS. Lo digo en serio, la política es configurar el enrutamiento correctamente también. Pero, en mi opinión, hay que hacerlo a nivel local, ¿no hay estudiantes cerca?
Sí, yo también lo pensé... Pero el hecho es que 64 ve a todo el mundo en la red, 32 sólo ve a 32. ¿WTF?
sub: ¿Podría estar relacionado con el hecho de que sólo el escritorio (32) está en esta red a través del cable RG45, y todos los demás a través de la red inalámbrica?
Más o menos:
¿Cómo puedo extraer el volumen de las órdenes de compra y venta abiertas, o mejor aún, su valor?
¿Cómo puedo extraer el volumen de las órdenes de compra y venta abiertas, o mejor aún, su valor?
¿Cómo quiere calcular el volumen de las órdenes abiertas de venta o de compra?
OrderLot() quiere resumir?
¿O conseguir un precio de equilibrio?
Estos datos son necesarios para calcular la diferencia entre las órdenes de compra y de venta.
Supongamos que se abrieron una orden de compra con un volumen de 0,09 lotes y dos órdenes de venta con un volumen total de 0,11 lotes, la diferencia entre ellas será 0,09-0,11=-0,02, o si es posible la diferencia entre sus valores.
Buenas tardes. Mi pregunta es la siguiente. En el libro de MQL4 que se encuentra en MQL4.community, en la sección "Funciones estándar" de la sección "Funciones de cadena y funciones de conversión de datos", se da el siguiente ejemplo del Asesor Experto strings.mq4 (dado en su totalidad del libro)
... continúa...
Al final de la subsección StringSubstr Function entre paréntesis se encuentra la siguiente frase: "por separado debemos notar que en el primer bucle for (mi nota: debe ser deinit() ya que no hay otra forma de borrar objetos) no podemos borrar objetos ya que después de cada borrado el número de objetos y su numeración cambiará y algunos nombres de objetos serán saltados". Pero en el citado EA no hay ningún segundo bucle for . Además, la variable Quant_Del definida en la función deinit() antes del bucle for se inicializa con cero, mientras que la variable i no estaba definida en ninguna parte antes del bucle for.
Resulta que el código anterior omite trivialmente varias líneas del programa.
Así que la primera pregunta es la siguiente: ¿fue realmente una omisión trivial de varias líneas o es un programa tan complicado que un novato no puede entender su significado sin ayuda externa?
Además... En el mismo capítulo de la misma sección, hay un enlace al mismo Asesor Experto (en el archivo adjunto) antes del texto citado que, al hacer clic, abre el mismo Asesor Experto en MetaElitor. Pero el texto de este Asesor Experto es diferente: la función deinit()tiene este aspecto
Entonces, si "combinar" la frase "Por separado, tenga en cuenta que no puede eliminar objetos en el primer bucle for, porque en este caso el número total de objetos y su numeración cambiarán después de cada eliminación, y algunos nombres de objetos se omitirán como resultado" Y texto función deinit() de la última variante, tengo la segunda pregunta:
Pregunta. ¿Por qué no puedo eliminar objetos en el primer bucle for colocando la función ObjectDelete(Nombre_Objeto) dentro de la sentencia if? Algo así como:
Por qué después de cada borrado "... El número total de objetos cambiará"... Porque en este caso, la variable Quant_Objects, que determina el número total de objetos, adquiere su valor igual a ObjectsTotal(), ¿FORWARD el bucle for?
P.S. Gracias de antemano por la respuesta, para no ensuciar el foro.