Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 801
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
No entiendo cuál es el problema.
int start()
{
bool i;
int ticket;
double Pricem;
datetime Timen;
string Symb=Symbol();
ticket=OrderSend(Symb,OP_SELL,0.1,Bid,3,Ask+4*Point,Ask-12*Point);
i=OrderSelect(0,SELECT_BY_POS);
while(true)
{
RefreshRates();
Timen=OrderCloseTime();
if(Timen>0)
{
Pricem=OrderClosePrice();
Alert(Pricem);
Alert("ордер закрылся");
Sleep(30000);
}
Sleep(10);
}
return;
}
Estoy resolviendo la tarea de cerrar todos los gráficos abiertos utilizando las herramientas MQL4. Hay 3 gráficos abiertos con diferentes pares de divisas y este es el código del script:
Cuando ejecuto el script, sólo se cierra uno de los tres gráficos y aquí están las impresiones del registro:
Significa que tras el cierre de un gráfico el gráfico actual debería ser el otro, pero:
1. Después de cerrar el primer gráfico, la funciónChartIDdevuelve el identificador del gráfico cerrado en lugar del actual
2. Lafunción ChartClose() en 2 y 3 iteraciones devuelve true, lo que significa que cierra con éxito la ventana ya cerrada...
¿Quién sabe dónde está el fallo y cómo resolver este problema?
No entiendo cuál es el problema.
Debería aparecer un mensaje de cierre. La orden se abre, llega al stop, se cierra y ¡ya está! ¿Dónde está el error?
Creo que OrderSelect() debería estar dentro de un bucle while, y además, el número de posición será incorrecto, ya que después de cerrar se convertirá en diferente - en este caso es mejor seleccionar desde la entrada
Estoy resolviendo la tarea de cerrar todos los gráficos abiertos utilizando las herramientas MQL4. Hay 3 gráficos abiertos con diferentes pares de divisas y este es el código del script:
Cuando ejecuto el script, sólo se cierra uno de los tres gráficos y aquí están las impresiones del registro:
Significa que tras el cierre de un gráfico el gráfico actual debería ser el otro, pero:
1. Después de cerrar el primer gráfico, la funciónChartIDdevuelve el identificador del gráfico cerrado en lugar del actual
2. Lafunción ChartClose() en 2 y 3 iteraciones devuelve true, lo que significa que cierra con éxito la ventana ya cerrada...
¿Quién sabe dónde está el fallo y cómo resolver este problema?
pako, a veces funciona, a veces no, no sé por qué... Me da un error:
2014.12.11 17:52:12.456 Violación de acceso leída a 0x09295000 en 'C:\.....................ex4'
¿Podría ser porque está intentando cerrar el gráfico sobre el que se lanza el script?
PS funciona correctamente si el script se adjunta al primer gráfico de la izquierda. Pero si lo coloco en cualquier otro gráfico, obtengo un error
pako, a veces funciona, a veces no, no sé por qué... Me da un error:
2014.12.11 17:52:12.456 Violación de acceso leída a 0x09295000 en 'C:\.....................ex4'
¿Podría ser porque está intentando cerrar el gráfico sobre el que se lanza el script?
PS funciona correctamente si el script se adjunta al primer gráfico de la izquierda. Pero si lo coloco en cualquier otro gráfico, obtengo un error
Chicos, ayudadme en esto
El problema es la siguiente función para traducir la orden en no pérdida, empieza a funcionar incorrectamente si la pongo en los pares Yen y permite que todas las órdenes abiertas sean no pérdida
los dejo todos bien, pero en cinco dígitos vuelve a cero aunque lo ponga a cinco dígitos solamente pero lo mejor es que si lo pongo a cinco funciona bien
¿Qué hay que tener en cuenta en estas funciones, para que la ejecución correcta se lleve a cabo y no dependa de la operación de EA en qué ventana la lancé tres o cinco dígitos?
Muchas gracias.
}
//==================================================================================================
// функция перевода ордеров стоп лоса в без убыток по всем открытым ордерам
//==================================================================================================
if(_Simbol==false)//если false то по всем ордерам открытым
{
for(int i=0;i<OrdersTotal();i++)//цикл перебора ордеров
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))//будем искать следующие
{
if(OrderType()==OP_BUY) //если тип бай
{
double bid=MarketInfo(OrderSymbol(),MODE_BID);//последний известный бид инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()<OrderOpenPrice())//если стоп лос меньше цены открытия
{
if(bid-Dist_Perivoda*point>OrderOpenPrice())//бид-профит*пункт больше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
if(OrderType()==OP_SELL)//если тип селл
{
double ask=MarketInfo(OrderSymbol(),MODE_ASK);//последний известный аск инструмента
double point=MarketInfo(OrderSymbol(),MODE_POINT);//чему равен пункт инструмента
if(OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice())//если стоп лос больше цены открытия или равен нолю
{
if(ask+Dist_Perivoda*point<OrderOpenPrice())//аск +профит*пункт меньше цены открытия
{//модифицируем стоп лос
bool ord_modifik=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(Level_Zahiti*point,Digits),OrderTakeProfit(),0,clrNONE);
if(!ord_modifik)//если не получилось
Comment(GetLastError());//номер ошибки в угол
}
}
}
}
}
}
Gracias por el código, entiendo la esencia, aunque a veces me sigue dando error.
Se ha experimentado con funciones que muestran los ID de los gráficos. Lo que es ChartFirst() de la documentación no está en absoluto claro, uno puede interpretarlo de cualquier manera - puede significar el primer gráfico abierto en orden desde la izquierda, o el primer gráfico abierto de todos los abiertos (en el tiempo), o el primero abierto en la terminal (la posibilidad de que esté abierto ahora es casi cero, por lo que no tiene sentido cerrarlo). Me inclino más por esta última versión, porque nunca he visto que esta función devuelva el ID del gráfico, que está abierto en ese momento.
Gracias por el código, entiendo la esencia, aunque a veces me sigue dando error.
Se ha experimentado con funciones que muestran los ID de los gráficos. Lo que es ChartFirst() de la documentación no está en absoluto claro, uno puede interpretarlo de cualquier manera - puede significar el primer gráfico abierto en orden desde la izquierda, o el primer gráfico abierto de todos los abiertos (en el tiempo), o el primero abierto en la terminal (la posibilidad de que esté abierto ahora es casi cero, por lo que no tiene sentido cerrarlo). Me inclino más por esta última versión, porque nunca he visto que esta función devuelva el ID del gráfico que está abierto en ese momento.
ChartFirst
Devuelve el ID del primer gráfico del terminal cliente.
Entiendo que este es el gráfico más a la izquierda