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

 
niktron:

if(kolpos==0&&Volumen[0]<10&&iOpen("EURAUD",PERIOD_M1,1)<iClose("EURAUD",PERIOD_M1,1)&&iOpen("EURUSD",PERIOD_M1,1)>iClose("EURUSD",PERIOD_M1,1)
&&iOpen("USDJPY",PERIOD_M1,1)<iClose("USDJPY",PERIOD_M1,1)&&iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1)&&Open[1]<Close[1])
OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);
if(kolpos==0 && 
   Volume[0]<10 && 
   iOpen("EURAUD",PERIOD_M1,1)<iClose("EURAUD",PERIOD_M1,1) && 
   iOpen("EURUSD",PERIOD_M1,1)>iClose("EURUSD",PERIOD_M1,1) &&
   iOpen("USDJPY",PERIOD_M1,1)<iClose("USDJPY",PERIOD_M1,1) &&
   iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1) &&
   Open[1]<Close[1])
   OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,NormalizeDouble(Bid-SL*Point,Digits),0,NULL,magic,0,Green);

¿Lo estás probando en el AUDUSD?

Los valores calculados de los precios en una orden comercial deben ser normalizados a Dígitos. No sólo eso, sino que debe coincidir con los requisitos de StopLevel (no lo hizo aquí)

El OrderMagicNumber() es el número mágico del pedido preseleccionado. Debe establecerlo con un valor específico, o calcularlo en el EA para que sea único para él.

Antes de esa comprobación, desimprime todos los valores de todas las condiciones que se comprueban aquí. Entonces tendrá claro dónde buscar.

 
artmedia70:

¿Estás probando el AUDUSD?

Los valores de los precios calculados en su orden de operación deben ser normalizados a Dígitos. No sólo eso, sino que debe cumplir los requisitos de StopLevel (no lo hizo aquí)

OrderMagicNumber() es el número mágico de un pedido preseleccionado. Deberías establecerlo como un valor específico, o calcularlo en el EA, para que sea único para él.

Antes de esa comprobación, desimprima todos los valores de todas las condiciones que se comprueban aquí. Entonces tendrá claro dónde buscar.



Sí, probando en AUDUSD

OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);-esta línea funcionó en el probador sin problemas, hasta que añadimos las condiciones

como

iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1)...

Repito que todo funciona en la cuenta... no en el probador...

 
Todo...ordenado...faltaba el historial de cotizaciones...AUDJPY-referido como menor)) Muchas gracias a todos.
 
niktron:

OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);-esta línea funcionó en el probador sin problemas, hasta que se añadieron las condiciones

Sobre esta cadena ya te he escrito. Entonces, cuando tengas errores 130 no preguntes cuál es el problema.
 
artmedia70:
Ya le he escrito sobre esta línea. Luego, cuando aparezca el error 130, no me preguntes cuál es el problema.


Entonces,¿el error 130 puede no producirse durante mucho tiempo y luego sí?
 
Si alguien ha encontrado un código para calcular la reducción de la renta variable (absoluta y relativa), por favor, que me dé un enlace.
 
Leo59:
Si alguien ha encontrado un código para calcular la reducción de la renta variable (absoluta y relativa), por favor, que me dé un enlace.
¡Cuando lo necesité, busqué, pero no lo encontré, porque necesitaba no en el pasado, como en el probador, sino en el futuro, poner SL en una posición abierta para anticipar el posible drawdown, si la posición se cierra en SL, mostrando los datos en el comentario en el gráfico, lo que hice, y se hizo muy conveniente para ver todos los posibles problemas por adelantado en Real, como te deseo! Al mismo tiempo, al haberlo hecho yo mismo, he aprendido mucho, lo que es más valioso. Buena suerte.
 
TarasBY:
Ya está escrito.

Genial, muchas gracias por este material, ahora será mucho más efectivo para limitar las pérdidas y aumentar los beneficios.
 
niktron:

es decir, el error 130 puede que no se produzca durante mucho tiempo, pero luego sí...
No soy telépata, ni soy Nostradamus. No puedo decirte exactamente cuándo aparecerá el error 130. Pero puedo decirte que aparecerá. Hasta que no normalice todos los precios calculados en las órdenes comerciales y compruebe los precios sl y tp en la orden comercial para ver si son correctos en relación con los requisitos de StopLevel de su empresa de corretaje, obtendrá el error 130.
 

Existe un código de función de este tipo. En MT4 beta, al compilarlo, me aparece la advertencia "expresión no booleana" en las líneas marcadas con una flecha. ¿Puede sugerir cómo solucionarlo?

void WindowCaptions()
{
  int hwnd = GetAncestor(WindowHandle(Symbol(),Period()),1); 

  int ret = GetWindowLongA( hwnd, GWL_STYLE );
  if (ret & WS_MAXIMIZE) return;                                               //<---
  if (ret & WS_DLGFRAME) ret -= WS_DLGFRAME; else ret += WS_DLGFRAME;          //<---

  //это если совсем без рамочек 
  // if (ret & WS_THICKFRAME) ret -= WS_THICKFRAME; else ret += WS_THICKFRAME;
  
  SetWindowLongA( hwnd, GWL_STYLE, ret );
  SetWindowPos ( hwnd, 0,0,0,0,0, 39); 
}