¡Buenas tardes Conocedores! ¿Ha agotado el día más difícil del año? ¿Podemos ir al grano? ;=).
Dibujé un EA, todo es bueno, pero MQL como yo lo entiendo funciona en el entorno MT4. Quiero que funcione con un software que trabaje directamente con la bolsa. ¿Existen otros compiladores de MQL? Si no es así, ¿qué lenguaje debo utilizar para reescribir MQL?
No tengo descanso. ¿Cuál es la razón por la que el EA puede no "ver" sus órdenes? Tengo diferentes tiempos del servidor y del ordenador, ¿tal vez por esto?
Anatoliy Ryzhakov: No tengo descanso. ¿Cuál es la razón por la que el EA no puede "ver" sus órdenes? La hora de mi servidor y la de mi ordenador son diferentes.
El tiempo de cada uno es diferente. Empieza sin prisas desde lejos. 1. Comprueba lo que te da la función OrdersTotal. Su valor depende de la configuración del historial: Hoy, últimos 3 días, última semana, ... Ajústelo como prefiera. 2. A continuación, cree un ciclo y emita todas las órdenes con Alerta. Esto se llama depuración y es una parte muy importante del trabajo de un programador. Más importante que escribir código.
Por favor, aconseje cómo solucionar el error de cantidad de lotes no válidos para la función FreeMarginCheck en el EA, cuando accidentalmente se establece un valor negativo de volumen (lote). Tener un mensaje sobre el lote equivocado, sin mensaje de error, en el probador .
El tiempo de cada uno es diferente. Empieza sin prisas desde lejos. 1. Comprueba lo que te da la función OrdersTotal. Su valor depende de la configuración del historial: Hoy, últimos 3 días, última semana, ... Ajústelo como desee. 2. A continuación, cree un ciclo y dé salida a todas las órdenes mediante Alerta. Esto se llama depuración y es una parte muy importante del trabajo de un programador. Más importante que escribir código.
Compila bien, sin errores, pero no es apropiado para mi caso.
He encontrado el siguiente código
#property copyright"Влад Сергеев для mmgp"#property version"1.00"#property strict#property script_show_inputsinputint orders = 4; //всего ордеров в серии inputbool buy = true; //флаг разрешающий/запрещающий покупки inputbool sell = false; //флаг разрешающий/запрещающий продажи inputint magic = 100500; //уникальный номер для ордеров, открываемых этим скриптом inputdouble lot = 0.01; //объем каждого ордера серии inputint tp = 100; //тейк профит, в пунктах inputint sl = 100; //стоп лосс, в пунктах inputint slip = 2; //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор) //+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart()
{
int i=0; // для чего эта переменная
int ticket=0;
if(buy)
{
while(i<orders) // здесь эта переменная используется чтобы сравнивать ордера или для чего
{
RefreshRates(); // если убрать эту функцию коду хуже не становится
ticket=OrderSend(Symbol(),OP_BUY,lot,NormalizeDouble(Ask,Digits),slip,0,0,"",magic,0,clrBlue); //здесь понятно
if(ticket!=-1) // эта строчка тоже не понятна
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) // функция для выбора ордера это логично но тоже не понятно как ей пользоваться
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl*Point,Digits),NormalizeDouble(OrderOpenPrice()+tp*Point,Digits),0,clrBlue);
// эту строчку тоже хотел бы чтобы объяснили
}
}
i++; // что увеличивается на оду единицу это относится к магическому номеру ордера чтобы программа понимала что у неё есть ордера
}
}
i=0;
if(sell) // прошлая запись была для покупак эта для продаж
{
while(i<orders)
{
RefreshRates();
ticket=OrderSend(Symbol(),OP_SELL,lot,NormalizeDouble(Bid,Digits),slip,0,0,"",magic,0,clrRed);
if(ticket!=-1)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl*Point,Digits),NormalizeDouble(OrderOpenPrice()-tp*Point,Digits),0,clrRed);
}
}
i++;
}
}
}
//+------------------------------------------------------------------+
Tal vez se pueda utilizar, pero no entiendo el significado de las cuerdas. ¿Se puede utilizar este código cuando se reescribe para adaptarse a mi condición?
¿Pueden decirme cómo escribir en el código del Asesor Experto para abrir 3 operaciones a la vez con la capacidad de establecer SL?
Esta es mi condición
Me aconsejaron utilizar la función (OrdersTotal()), pero no se ajusta a mi caso. Lo tengo así
Compila bien, sin errores, pero no es apropiado para mi caso.
He encontrado el siguiente código
Tal vez se pueda utilizar, pero no entiendo el significado de las cuerdas. ¿Puedo utilizar este código si lo reescribo para adaptarlo a mi condición?
Inténtelo de esta manera
pos=0; /contador de órdenes
for(int i=OrdersTotal()-1;i>=0;i--) //leer las órdenes de mercado
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;//selección de las órdenes de mercado
{
if (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) continue;//selecciona sólo las órdenes del EA (si hay Magic y opera en cualquier par de divisas)
pos++; //si hemos seleccionado, entonces aumenta pos en uno
La orden de venta se cierra al precio de venta
Estoy un poco confundido. ¡¡¡Señala con el dedo dónde está el error en el código!!!(el registro dice ORDER CLOSE ERROR 4108)¡Gracias de antemano!
¡Buenas tardes Conocedores! ¿Ha agotado el día más difícil del año? ¿Podemos ir al grano? ;=).
Dibujé un EA, todo es bueno, pero MQL como yo lo entiendo funciona en el entorno MT4. Quiero que funcione con un software que trabaje directamente con la bolsa. ¿Existen otros compiladores de MQL? Si no es así, ¿qué lenguaje debo utilizar para reescribir MQL?
Tienes un descanso y necesitas continuar.
No tengo descanso. ¿Cuál es la razón por la que el EA puede no "ver" sus órdenes? Tengo diferentes tiempos del servidor y del ordenador, ¿tal vez por esto?
El tiempo de cada uno es diferente. Empieza sin prisas desde lejos. 1. Comprueba lo que te da la función OrdersTotal. Su valor depende de la configuración del historial: Hoy, últimos 3 días, última semana, ... Ajústelo como prefiera. 2. A continuación, cree un ciclo y emita todas las órdenes con Alerta. Esto se llama depuración y es una parte muy importante del trabajo de un programador. Más importante que escribir código.
El tiempo de cada uno es diferente. Empieza sin prisas desde lejos. 1. Comprueba lo que te da la función OrdersTotal. Su valor depende de la configuración del historial: Hoy, últimos 3 días, última semana, ... Ajústelo como desee. 2. A continuación, cree un ciclo y dé salida a todas las órdenes mediante Alerta. Esto se llama depuración y es una parte muy importante del trabajo de un programador. Más importante que escribir código.
Gracias.
¿Pueden decirme cómo escribir en el código del Asesor Experto para abrir 3 operaciones a la vez con la capacidad de establecer SL?
Esta es mi condición
Me aconsejaron utilizar la función (OrdersTotal()), pero no se ajusta a mi caso. Lo tengo así
Compila bien, sin errores, pero no es apropiado para mi caso.
He encontrado el siguiente código
Tal vez se pueda utilizar, pero no entiendo el significado de las cuerdas. ¿Se puede utilizar este código cuando se reescribe para adaptarse a mi condición?
¿Pueden decirme cómo escribir en el código del Asesor Experto para abrir 3 operaciones a la vez con la capacidad de establecer SL?
Esta es mi condición
Me aconsejaron utilizar la función (OrdersTotal()), pero no se ajusta a mi caso. Lo tengo así
Compila bien, sin errores, pero no es apropiado para mi caso.
He encontrado el siguiente código
Tal vez se pueda utilizar, pero no entiendo el significado de las cuerdas. ¿Puedo utilizar este código si lo reescribo para adaptarlo a mi condición?
Inténtelo de esta manera
pos=0; /contador de órdenes
for(int i=OrdersTotal()-1;i>=0;i--) //leer las órdenes de mercado
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;//selección de las órdenes de mercado
{
if (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) continue;//selecciona sólo las órdenes del EA (si hay Magic y opera en cualquier par de divisas)
pos++; //si hemos seleccionado, entonces aumenta pos en uno
}
}
¿Podéis decirme cómo escribir en el código del EA para abrir 3 operaciones a la vez con la posibilidad de fijar el SL?