Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 256

 
atztek #:
En mi viejo portátil con procesador i3 todavía tengo WinXP 32 bit, no soportado por MT5. Recientemente he aumentado la memoria hasta 6 Gb, me gustaría instalar un sistema operativo de 64 bits que ejecute MT4 y MT5. Qué es preferible - Win7 o Win8.1

El 7 está más cerca de mí. La oficina tiene un 8, un 10 y un 7. Los terminales del 7 son más estables. Por razones desconocidas, los probadores del 7 son más rápidos en los ordenadores débiles. 8ka no es muy transitorio en absoluto. Es lo que más recursos consume. 10 requiere más recursos para sí mismo.

 
atztek #:
Mi antiguo portátil con procesador i3 aún tenía instalado WinXP 32 bits, no soportado por MT5. Recientemente he aumentado la memoria hasta 6 Gb, me gustaría instalar un sistema operativo de 64 bits que soporte MT4 y MT5. ¿Qué es preferible, Win7 o Win8.1?

Ve a la página web del fabricante de tu portátil y mira para qué sistema operativo máximo están los controladores oficiales y ese será tu sistema operativo preferido. Si los drivers son para Win 8.1 puedes probar con Win 10. Si los controladores terminan en Win 7 entonces no hay muchas opciones.

 

Buenas tardes, pueden ayudar por favor.

Necesito añadir un take profit a este EA y mostrar parámetros para cambiar cuando el EA se ejecuta.

hay dos advertencias valor de retorno de 'OrderClose' debe ser revisado también por favor corregir


extern double Lots = 0.1;

extern double RiesgoMáximo = 0,3;

extern double DecreaseFactor = 100;

doble st1,st2;

//+------------------------------------------------------------------+

//| Calcular las posiciones abiertas |

//+------------------------------------------------------------------+

int CalcularPedidosActualizados(símbolo de cadena)

{

int compras=0,ventas=0;

//----

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) buys++;

if(OrderType()==OP_SELL) vende++;

}

}

//---- volumen de pedidos de devolución

if(compras>0) return(compras);

Si no es así, return(-sells);

}

//+------------------------------------------------------------------+

//| Calcular el tamaño óptimo del lote |

//+------------------------------------------------------------------+

double LotsOptimized()

{

doble lote=Lotes;

int orders=HistoryTotal(); // total de pedidos del historial

int losses=0; // número de órdenes de pérdidas sin pausa

//---- seleccione el tamaño del lote

lote=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3);

//---- calcule el número de órdenes de pérdidas sin interrupción

si(Factor de disminución>0)

{

for(int i=órdenes-1;i>=0;i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("¡Error en el historial!"); break; }

if(OrderSymbol()!=Symbol() | OrderType()>OP_SELL) continue;

//----

if(OrderProfit()>0) break;

if(OrderProfit()<0) pérdidas++;

}

if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);

}

//---- devolver el tamaño del lote

if(lot<0.1) lot=0.1;

devolución(lote);

}

//+------------------------------------------------------------------+

//| Comprueba las condiciones de las órdenes abiertas |

//+------------------------------------------------------------------+

void CheckForOpen()

{

int res;

if(Volumen[0]>1) return;


//---- comprar -----------------------

si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))

if ((Open[0]<Open[1])&&(Close[0]<Close[1])

//

{

res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0,",0,0,Blue);

volver;

}

//---- vender ------------------------

si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))

if((Open[0]>Open[1])&&(Close[0]>Close[1]))

{

res=Enviar Orden(Símbolo(),OP_Venta,LotesOptimizados(),Oferta,3,15,0,",0,0,Rojo);

volver;

}

}

//------------Закрытие позиций----------------------------------------

void CheckForClose2()

{

if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

If(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);

//CheckForOpen();

}


//

//+------------------------------------------------------------------+

//| Comprueba las condiciones de cierre de la orden |

//+------------------------------------------------------------------+

void CheckForClose1()

{

if(Volumen[0]>1) return;

//comprobar la pérdida

if ((AccountProfit()<0)&&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk)))

{

CheckForClose2();

Print("pérdida", AccountProfit());

}/**/

//---- comprobar el tipo de orden

if(OrderType()==OP_BUY)

{

si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))

if ((Open[0]>Open[1])&&(Close[0]>Close[1]))

CheckForClose2();

}

if(OrderType()==OP_SELL)

{

si ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))

if ((Open[0]<Open[1])&&(Close[0]<Close[1]))

CheckForClose2();

}


}

//+------------------------------------------------------------------+

//| Función de inicio |

//+------------------------------------------------------------------+


void start()

{


//---- calcular las órdenes abiertas por el símbolo actual

if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();

else CheckForClose1();

//---

}

//+-----------------------------------------------+

MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
  • www.metaquotes.net
Торговая платформа MetaTrader 5 - это бесплатный инструмент трейдера, позволяющий торговать на форексе и фондовых биржах
 
bob88 #:



extern double Lots               = 0.1;

extern double MaximumRisk        = 0.3;

extern double DecreaseFactor     = 100;

extern int stopLoss = 15;
extern int takeProfit = 30;


//+------------------------------------------------------------------+

//| Check for open order conditions                                  |

//+------------------------------------------------------------------+

void CheckForOpen()

  {

  int res;
  double openPrice, sl, tp;

 if(Volume[0]>1) return;



//---- покупаем -----------------------

  

  if ( (iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))) 

     if  ((Open[0]<Open[1])&&(Close[0]<Close[1])) 

    

  //  

     {
      openPrice = NormalizeDouble(Ask, Digits);
      sl = NormalizeDouble(openPrice - stopLoss * Point, Digits);
      tp = NormalizeDouble(openPrice + takeProfit * Point, Digits);
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),openPrice,3,sl,tp,"",0,0,Blue);

      return;

     }

//---- продаем ------------------------

if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))  

    if((Open[0]>Open[1])&&(Close[0]>Close[1]))

     {
      openPrice = NormalizeDouble(Bid, Digits);
      sl = NormalizeDouble(openPrice + stopLoss * Point, Digits);
      tp = NormalizeDouble(openPrice - takeProfit * Point, Digits);
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),openPrice,3,sl,tp,"",0,0,Red);

      return;

     }

     

  }

He añadido el cálculo de SL y TP, pero sería bueno añadir su comprobación. Puede leer cómo hacerlo en el artículohttps://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position.

Su advertencia no es crítica. El resultado de OrderClose es simplemente ignorado, de ahí la advertencia. Puede, por ejemplo, hacer que la función CheckForClose2 devuelva el resultado de OrderClose. O puedes dejarlo como está.

Otra cosa que noté fue que los nombres de las funciones CheckForClose2,CheckForOpen, etc. eran extraños .Y los tienes realizando operaciones comerciales.

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
 
Hola a todos. Puede alguien ayudar a editar el EA. Necesito eliminar la función de apertura de órdenes, para que el EA no abra órdenes por sí mismo, sino que sólo funcione con órdenes abiertas manualmente. Muchas gracias de antemano.
Archivos adjuntos:
 
Иван Макаров #:
Hola a todos. Puede alguien ayudarme a editar el EA. Tengo que eliminar la función de apertura de órdenes para que el EA no abra órdenes por sí mismo, sino que sólo funcione con órdenes abiertas manualmente. Muchas gracias de antemano.

Elimine la función de apertura de pedidos y ponga la magia a 0. El robot recogerá los pedidos abiertos manualmente y los seguirá. Si queremos que el robot siga sólo órdenes individuales, y no todas seguidas, entonces haga la entrada en Compra y Venta, por ejemplo, pulsando el botón correspondiente que el robot deberá crear y procesar en el evento OnChartEvent CHARTEVENT_OBJECT_CLICK de cada una de ellas. La magia en este caso debe ser mayor que 0 para trabajar sólo con sus propias órdenes.

 
Saludos. Puede alguien aconsejar cómo añadir la función de comercio de tiempo a mt4 EA. Quiero que mi EA trabaje desde, por ejemplo, las 00.00 hasta las 23.00 y no haga nada durante el resto de la hora. Quizás alguien tenga un trozo de código y cómo implementarlo. Tengo una buena idea de cómo implementar esto en mi EA.
 
Иван Макаров comercio de tiempo a mt4 EA. Quiero que mi EA trabaje desde las 00.00 hasta las 23.00 y no haga nada durante la siguiente hora. Quizás alguien tenga un trozo de código y cómo implementarlo. Tengo una buena idea de cómo implementar esto en mi EA.

https://www.mql5.com/ru/forum/131859/page9#434297

isTradeTimeString()

isTradeTimeInt()

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

Hola.

Un fallo de este tipo... ¡Estoy probando uno! Experto en 3 ordenadores. En 2 de ellos funcionan con precisión, mientras que en uno de ellos siempre tengo algún tipo de error en los cálculos - en general no calcula correctamente el stop loss o el disparo falso.

El hardware no es nuevo, pero tampoco viejo.

¿Alguien se ha encontrado con algo así?

 
Zalevsky1234 stop loss o el disparo falso.

El hardware no es nuevo, pero tampoco viejo.

¿Alguien ha tenido problemas con esto?

¿Las tres están conectadas al mismo servidor de corredores/comerciantes? (Es decir, ¿es la misma historia?) Si no es así, ese es el primer lugar donde hay que buscar.