Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 512

 
woin2110:

si ((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//abrir orden de compra.

si (compra>0)
{
Alerta ("La orden BuyStop se ha establecido ",buy);
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//abrir orden de venta.
si (venta>0)
{
Alerta ("SellStop order set ",sell);
}
if (DayOfWeek()==5 && Hour()==22) //borrar las órdenes pendientes y abiertas el viernes a las 23:00 hora del servidor
{
if (OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,lot,Precio de cierre, deslizamiento en pips, color de la flecha de cierre en el gráfico){ Cierra la orden de mercado para vender.
OrderDelete(sell);//cerrando el límite de venta.
}
if (OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket, lote, precio de cierre, deslizamiento en puntos, color de la flecha de cierre en el gráfico)/orden de mercado de cierre para comprar.
OrderDelete(buy);//cerrando el límite de compra.
return(0);
}
}
}

¿Quién puede decirme por qué no cierra las órdenes y no borra los límites?


Cerrar la orden de compra al precio de compra, vender al precio de venta.
 
isn-88:

Cerrar la orden de compra al precio de compra, vender al precio de venta.
gracias
 
AlexeyVik:
Condición simple en la función init
Los metales, las existencias y las materias primas no cuentan.

Gracias. Me puedes decir la forma más fácil. Necesito entender si hay posiciones abiertas en este par o no. Si hay órdenes de venta y si hay órdenes de compra. Significa que tenemos que conseguir

0 - si no hay órdenes abiertas

1-Tengo órdenes de venta pero no de compra.

2-Hay órdenes de compra pero no de venta

3-Hay tanto...

 
woin2110:

https://docs.mql4.com/ru/series

if(DayOfWeek()==1,2..... && Hour()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//definir high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define low.

/////////////////////////////////////////////////////////////////////////////////////////////////

double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//definir apertura.


Gracias.
 
Zolotai:

Gracias. Me puedes decir la forma más fácil. Necesito entender si hay posiciones abiertas en este par o no. Si hay órdenes de venta y si hay órdenes de compra. Significa que tenemos que conseguir

0 - si no hay órdenes abiertas

1-Tengo órdenes de venta pero no de compra.

2-Hay órdenes de compra pero no de venta

3-Hay ambos.

Por ejemplo, así:

int i_buy=0;

int i_sell=0;

//--- получим количество открытых и отложенных ордеров

int total=OrdersTotal();

for(int i=0;i<total;i++)

{

//--- выберем i-й ордер из списка торговли

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{

//--- если ордер открыт по текущему финансовому инструменту

if(OrderSymbol()==Symbol())

{

switch(OrderType())

{

//--- Бай ордер

case OP_BUY:

i_buy++;

break;

//--- Селл ордер

case OP_SELL:

i_sell++;

break;

case OP_BUYSTOP:

case OP_BUYLIMIT:

case OP_SELLSTOP:

case OP_SELLLIMIT:

//--- пробойники, лимитники

break;

}

}

}

}


if(i_buy==0 && i_sell==0)

{

//--- нет открытых ордеров

}

if(i_buy>0 && i_sell==0)

{

//--- открыты баи

}

if(i_buy==0 && i_sell>0)

{

//--- открыты селы

}

if(i_buy>0 && i_sell>0)

{

//--- открыты и баи и селы

}

 
isn-88:

Por ejemplo, así:



Muchas gracias. Tengo entendido que asc es el precio actual. Abro una orden cuando no hay órdenes abiertas. ¿El bucle va desde la primera hasta la última orden abierta? ¿Cómo puedo transmitir en una variable el lote de la última orden abierta y su precio?
 
Zolotai:

Muchas gracias. Tengo entendido que asc es el precio actual. Abro una orden cuando no hay órdenes abiertas. ¿El bucle va desde la primera hasta la última orden abierta? ¿Cómo puedo establecer el lote de la última orden abierta y su precio en una variable?

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //declarar una variable "z".
double y; //declarar la variable "y"


if(OrderSelect(10,SELECT_BY_POS)==true) //si el pedido (por ticket) ya está seleccionado

{

OrderLots()=z //asignar el lote de esta orden a la variable "z"

OrderOpenPrice()=y //asignar el precio de apertura a la variable "y"

}

prueba esto

 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //declarar la variable "z"
double y; //declarar la variable "y"


if(OrderSelect(10,SELECT_BY_POS)==true) //si el pedido (por ticket) ya está seleccionado

{

OrderLots()=z //asignar el lote de esta orden a la variable "z"

OrderOpenPrice()=y //asignar el precio de apertura a la variable "y"

}

prueba esto

y = OrderOpenPrice();


Oops, lo tengo, pero no lo entiendo. if((i_buy==0 && i_sell==0) || y > Step). Debería abrir otra orden si la distancia desde la última orden abierta es más de 5 pips. Pero no funciona, pregunta.

for(int i=0;i<total;i++) ¿Pasa del primer pedido abierto al último? Es decir, al final debería obtener el precio de la última orden abierta.

 
Zolotai:

y = OrderOpenPrice();


No entiendo si((i_buy==0 && i_sell==0) || y > Step). Debería abrir otra orden si la distancia desde la última orden abierta es más de 5 pips. Pero no funciona, pregunta.

for(int i=0;i<total;i++) ¿Pasa del primer pedido abierto al último? En otraspalabras, debería obtener el precio de la última orden abierta.


No lo sé, no me lo he encontrado.
 

Hola. Vi un post en https://forum.mql4.com/ru/51490/page2 donde hay un script que abre la ventana de configuración de EA:

Con este se accede a la ventana de configuración de EA:

//+------------------------------------------------------------------+
//|                                                      EaSetup.mq4 |
//+------------------------------------------------------------------+
//|                                                      EaStart.mq4 |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, XrustSolution."
#property link      "mail: xrustx@gmail.com"
#import "user32.dll"
   int   RegisterWindowMessageA(string lpstring);
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND      0x0111
//+------------------------------------------------------------------+
void start(){Sleep(200);PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33048, 0);return;}
//+------------------------------------------------------------------+ 

¿Es posible hacer que el script abra la ventana de configuración del EA a intervalos de 1 segundo y que lo confirme inmediatamente (pulsando el botón de ok) y así sucesivamente?