[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 163

 
Ese no es mi deseo. Es una respuesta a su pregunta de las 12:08.
 
MikeM:
Ese no es mi deseo. Es una respuesta a su pregunta de las 12:08.
Ok. en el post haga clic en "responder" no me di cuenta de que era una respuesta a mi pregunta. Pero un buen consejo, haré lo que me has sugerido. Gracias.
 
paladin80:
Ok. Haz clic en "responder" en el post, no me di cuenta de que era una respuesta a mi pregunta. Pero el consejo es bueno, haré lo que me has sugerido. Gracias.

Entiendo que si tienes más de un EA y no hay solapamiento en el envío de órdenes comerciales,

puedes usar esto:

if(IsTradeContextBusy())Sleep(5000);//Торговый поток занят. Подождите 5 ceкунд

insertarlo antes de OrderSend();

 

Mejor aún, aquí hay una función para abrir posiciones.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.04.2008                                                     |
//|  Описание : Открывает позицию по рыночной цене.                            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//|    co - комментарий                                                        |
//+----------------------------------------------------------------------------+
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0, string co="") {
  color    clOpen;
  datetime ot;
  double   pp, pa, pb;
  int      dg, err, it, ticket=0;

  if (sy=="" || sy=="0") sy=Symbol();
  if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
  if (co=="") co=WindowExpertName()+" "+GetNameTF(Period());
  for (it=1; it<=NumberOfTry; it++) {
    if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
      Print("OpenPosition(): Остановка работы функции");
      break;
    }
    while (!IsTradeAllowed()) Sleep(5000);
    RefreshRates();
    dg=MarketInfo(sy, MODE_DIGITS);
    pa=MarketInfo(sy, MODE_ASK);
    pb=MarketInfo(sy, MODE_BID);
    if (op==OP_BUY) pp=pa; else pp=pb;
    pp=NormalizeDouble(pp, dg);
    ot=TimeCurrent();
    if (MarketWatch)
      ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, co, mn, 0, clOpen);
    else
      ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, co, mn, 0, clOpen);
    if (ticket>0) {
      if (UseSound) PlaySound(SoundSuccess); break;
    } else {
      err=GetLastError();
      if (UseSound) PlaySound(SoundError);
      if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy);
      // Вывод сообщения об ошибке
      Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
      Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
            " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
      // Блокировка работы советника
      if (err==2 || err==64 || err==65 || err==133) {
        gbDisabled=True; break;
      }
      // Длительная пауза
      if (err==4 || err==131 || err==132) {
        Sleep(1000*300); break;
      }
      if (err==128 || err==142 || err==143) {
        Sleep(1000*66.666);
        if (ExistPositions(sy, op, mn, ot)) {
          if (UseSound) PlaySound(SoundSuccess); break;
        }
      }
      if (err==140 || err==148 || err==4110 || err==4111) break;
      if (err==141) Sleep(1000*100);
      if (err==145) Sleep(1000*17);
      if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
      if (err!=135) Sleep(1000*7.7);
    }
  }
  if (MarketWatch && ticket>0 && (sl>0 || tp>0)) {
    if (OrderSelect(ticket, SELECT_BY_TICKET)) ModifyOrder(-1, sl, tp);
  }
}
 
Buenos días! Pregunta sobre el arrastre: Puse un trailing stop de 25 pips. Por la noche llego a casa del trabajo y la operación no se cerró, aunque el precio del día estaba a 70 pips.
 
demid61:
Buenos días! Pregunta sobre el arrastre: Puse un trailing stop de 25 pips. Por la noche llego a casa del trabajo y la operación no se cerró, aunque el precio del día estaba a 70 pips.

¿Dónde está el código? Sin el código - aquí.
 
demid61:

Buenos días! Pregunta sobre el arrastre. He puesto un trailing stop de 25 pips.

Probablemente haya un pequeño opus de "y apago el ordenador" aquí.

 
sergeev:

probablemente hay un pequeño "y apagar el ordenador" opus aquí




:)) Pensé que funcionaría sin un ordenador
 
gawara:
Hola a todos los caballeros... Llevo mucho tiempo buscando en Google pero no lo he encontrado... Tengo una pregunta, hay una declaración en html, necesita ser visualizada en un gráfico para mayor claridad, me parece que desde el punto de vista de la programación es posible, quien se haya encontrado con algo así por favor aconseje... Creo que debe haber algún tipo de script que haga el trabajo ... gracias de antemano...

https://www.mql5.com/ru/code/10425
 

¡Amigos!

Ayuda, no puedo entenderlo...

Cómo puedo obtener una vista:

if( beneficio>=0,10 && beneficio <=0,99) dp =1;

si no

if( beneficio>=1,00 && beneficio <=9,99) dp =10;

si no

if( beneficio>=10,00 && beneficio <=99,99) dp =100;

... y así sucesivamente a través del bucle for( int i=0; i<=100000; i++)

Sencillamente, ¿CÓMO determinar el número de decimales que le quedan al número entero (fraccionario está claro)?

Razón de la queja: