[¡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 59

 
Muchas gracias a todos, ¡todo funciona como debe! Ojalá tuviera caritas sonrientes, me gustaría poner un montón :)
 
oleg_felix:¿Cómo puedo establecer el marco temporal en el que se ejecutarán las operaciones? (hora de inicio y hora de finalización)

ver aquí: https://www.mql5.com/ru/forum/135030

 
Ayudado, gracias, ¡lo solucioné a tiempo!
 

Por favor, dígame cómo escribir un comando simple:

- transferir una orden a una posición sin pérdidas para un número determinado de pips

 
oleg_felix:

Por favor, puedes decirme cómo escribir un simple comando:

- Establezca en una orden abierta, el stoploss para alcanzar el punto de equilibrio (considerando el spread) en una determinada cantidad de beneficio en la operación.

aquí hay una función para convertir todos los pedidos con el mismo número mágico a b/n, prueba a experimentar con ella


extern int     LevelWLoss        = 100;       // Уровень безубытка в пп
extern int     LevelProfit       = 300;       // Уровень профита в пп
//+----------------------------------------------------------------------------+
//|  Перенос стопа в безубыток                                                 |
//+----------------------------------------------------------------------------+
void MovingInWL(int Magic) {
  int i, k;
  string sym;
  double ord_open,ord_TP,ord_SL;
  
  k = OrdersTotal()-1;
  sym = Symbol();
  for (i=k; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym && OrderMagicNumber()==Magic) {
        ord_open = OrderOpenPrice();
        ord_TP   = OrderTakeProfit();
        ord_SL   = OrderStopLoss();
        if (OrderType()==OP_BUY) {
          if (NormalizeDouble(ord_SL,Digits)==NormalizeDouble(0,Digits) || 
              NormalizeDouble(ord_SL-ord_open,Digits)<NormalizeDouble(LevelWLoss*Point,Digits)) {
            if (NormalizeDouble(Bid-ord_open,Digits)>NormalizeDouble(LevelProfit*Point,Digits)) {
              OrderModify(OrderTicket(), ord_open, NormalizeDouble(ord_open+LevelWLoss*Point,Digits), ord_TP, 0, Yellow);
            }
          }
        }
        if (OrderType()==OP_SELL) {
          if (NormalizeDouble(ord_SL,Digits)==NormalizeDouble(0,Digits) || 
              NormalizeDouble(ord_open-ord_SL,Digits)<NormalizeDouble(LevelWLoss*Point,Digits)) {
            if (NormalizeDouble(ord_open-Ask,Digits)>NormalizeDouble(LevelProfit*Point,Digits)) {
              OrderModify(OrderTicket(), ord_open, NormalizeDouble(ord_open-LevelWLoss*Point,Digits), ord_TP, 0, Yellow);
            }
          }
        }
      }
    }
  }
return;
}
//_______________________________________________________________________
 

IgorM


Aquí está el código de mi EA: ¿Dónde quiero insertar la función Breakeven?

extern int tp = 0;

extern int sl = 0;

extern int BeginHour = 0; // hora de inicio

extern inttern EndHour = 0; // hora de finalización

int inicio()

{

//----

if(OrdersTotal()==0 && Hour() >= BeginHour && Hour() < EndHour && Close[1]<Open[1] && High[1]<Bid) // comprueba si el precio de la barra anterior es inferior al de apertura. Orden de compra cuando el precio de alcanza el precio Bid de la barra actual, el nivel alto de la barra anterior.

OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-sl*Point,Ask+tp*Point,"",777,0,Red);

if(OrdersTotal()==0 && Hour() >= BeginHour && Hour() < EndHour && Close[1]>Open[1] && Low[1]>Bid) // comprueba si la orden está abierta y el precio de cierre de la barra anterior es inferior al precio de apertura. Orden de compra cuando el precio alcanza el precio de la barra actual Bid , nivel alto de la barra anterior.

OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",777,0,Red);

//----

return(0);

}

 
oleg_felix:

Este es el código de mi EA: ¿Dónde debo poner la función Breakeven?

Creo que a estas alturas es suficiente con añadir mi función al final de tu código y hacer lo siguiente en tu código al menos:

if(OrdersTotal()>0) MovingInWL(777);

Añade al principio de tu código

extern int LevelWLoss = 100; // Nivel de equilibrio en pips
extern int LevelProfit = 300; // Nivel de beneficio en pips

Tengo la duda de que vayas a resolver este problema por ti mismo :)

 
DmitriyN:
Puedes hacerlo. También es posible gestionar una cuenta desde un ordenador configurado en el trabajo, o viceversa, cuando se está en casa.
Gracias.
 

Traté de rehacer la función de otra persona, y "un poco" desordenado, aquí es un pedazo de código:

string FileName = test.txt;

int FileHandle=FileOpen(FileName,FILE_READ);
  if (FileHandle < 0)
     {
       Print("Файл не найден.");
     }
  
  string strInfo;
  int i;
  if (FileHandle>0)
     {
     while (i<20)
        {
          if (FileHandle == 1)
            {
            string strInfo1=FileReadString(FileHandle);
            }else{
                 if (FileHandle == 2)
                    {
                    string strInfo2=FileReadString(FileHandle);
                    }else{
                         if (FileHandle == 3)
                              {
                            string strInfo3=FileReadString(FileHandle);
                              }else{
                                   if (FileHandle == 4)
                                       {
                                       string strInfo4=FileReadString(FileHandle);
                                       }else{
                                            if (FileHandle == 5)
                                               {
                                               string strInfo5=FileReadString(FileHandle);
                                               }else{
                                                    if (FileHandle == 6)
                                                       {
                                                       string strInfo6=FileReadString(FileHandle);
                                                       }else{
                                                            if (FileHandle == 7)                                                            
                                                               {
                                                               string strInfo7=FileReadString(FileHandle);
                                                               }else{
                                                                    if (FileHandle == 8)                                                                    
                                                                        {
                                                                        string strInfo8=FileReadString(FileHandle);
                                                                        }else{
                                                                             if (FileHandle == 9)
                                                                                 {
                                                                                 string strInfo9=FileReadString(FileHandle);
                                                                                 }else{
                                                                                      if (FileHandle == 10)
                                                                                         {
                                                                                         string strInfo10=FileReadString(FileHandle);
                                                                                         }else{
                                                                                              Print("Ошибка! В файле должно быть не более 10 записей!");
                                                                                              }
                                                                                      }
                                                                             }
                                                                    }
                                                            }
                                                    }
                                            }
                              
                                   }
                          }
                   
                               
             
          }
          if (StrToInteger(strInfo1)==12345||StrToInteger(strInfo2)==12345||
              StrToInteger(strInfo3)==12345||StrToInteger(strInfo4)==12345||
              StrToInteger(strInfo5)==12345||StrToInteger(strInfo6)==12345||
              StrToInteger(strInfo7)==12345||StrToInteger(strInfo8)==12345||
              StrToInteger(strInfo9)==12345||StrToInteger(strInfo10)==12345)
          {
          isNumInFile = TRUE;
          }

        if (FileIsEnding(FileHandle) && isNumInFile == FALSE)
           {
           Print("Достигнут конец файла, искомое значение не найдено");
           break;
           }
        i++;

        if (i>100) break;
        }
     FileClose(FileHandle);
     }

Quería que encontrara un determinado valor en las primeras 10 líneas del archivo test.txt y si el número de líneas es superior a 10 dará error "¡Error! No debe haber más de 10 registros en el archivo!", pero por alguna razón sigue pasando por todos los registros, por favor ayúdame a solucionarlo, y si puedes simplifica el código y hazlo como una función independiente.

 

Por favor, expliquen de forma sencilla qué es la transferencia de parámetros por referencia. He leído la documentación, pero sólo he entendido que es posible y que después de la identificación de la variable es obligatorio poner el modificador &. Sería estupendo que la explicación fuera acompañada de un pequeño programa con explicaciones... ¿Cuál es la diferencia entre el paso de parámetros habitual y el paso de parámetros por referencia?

Razón de la queja: