Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 555

 
Alexey Viktorov:

He leído esos argumentos. Pero no era una discusión, era sólo una falta de voluntad para entender las explicaciones y los intentos de demostrar la culpa del terminal. Sus palabras no estaban respaldadas por nada. Eres demasiado vago para hacer capturas de pantalla y explicar tus pensamientos con claridad.

¿Qué capturas de pantalla? He proporcionado el código, se está ejecutando en MT4 y se estrellará en MT5. El tipo de error está escrito en el código que también está comentado.
 
comp:
¿Qué capturas de pantalla? El código proporcionado, se ejecuta en MT4 y se bloquea con un error en MT5. El tipo de error está escrito en el código que también está comentado.

Eso está bien. Ese es su punto de vista. Crees que todo el mundo tiene que hacer algo para entender tu punto de vista, pero no piensas que es más fácil no discutir contigo, y que es más fácil que te baneen por ser demasiado exigente.

Afortunadamente, no tengo derecho a prohibir, así que sólo dejo este diálogo.

 
Por favor, dígame por qué no se abren los pedidos
void OnTick()
  {
   int pos;
   int rsi;
   int uroven1;
   int uroven2;
   int kolpos;
   uroven1=RSI_uroven1;
   uroven2=RSI_uroven2;

   rsi=iRSI(Symbol(),0,RSI,0,1);

//==================================================================
   for(int pos=0; pos<OrdersTotal(); pos++)
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;

     }
//====================================================================
   if(kolpos==0)
     {
      if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2)
        {
         OrderSend(Symbol(),OP_BUY,Lot,Ask,30,0,0,"",Magic,0,clrAliceBlue);
         OrderSend(Symbol(),OP_SELL,Lot,Bid,30,0,0,"",Magic,0,clrRed);

        }
     }
  }
Por favor, dígame por qué no se abren los pedidos.
 
edutak:
Por favor, dígame por qué no se abren los pedidos.

Tengo al menos 4 errores

'RSI_uroven1' - identificador no declarado 32.mq4 13 12

'RSI_uroven2' - identificador no declarado 32.mq4 14 12

'RSI' - identificador no declarado 32.mq4 16 24

'pos' - variable ya definida 32.mq4 19 12

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
int RSI=23;
int RSI_uroven1=100;
int RSI_uroven2=100;
int Magic=777;
double Lot=0.1;
void OnTick()
  {
   int pos;
   int rsi;
   int uroven1;
   int uroven2;
   int kolpos;
   uroven1=RSI_uroven1;
   uroven2=RSI_uroven2;

   rsi=iRSI(Symbol(),0,RSI,0,1);

//==================================================================
   for(int pos=0; pos<OrdersTotal(); pos++)
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;

     }
//====================================================================
   if(kolpos==0)
     {
      if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2)
        {
         OrderSend(Symbol(),OP_BUY,NormalizeDouble(Lot,2),Ask,30,0,0,"",Magic,0,clrAliceBlue);
         OrderSend(Symbol(),OP_SELL,NormalizeDouble(Lot,2),Bid,30,0,0,"",Magic,0,clrRed);

        }
     }
  }
//+------------------------------------------------------------------+

все октрывает

1	2015.01.02 09:00	buy	1	0.10	120.42	0.00	0.00	0.00	10000.00
2	2015.01.02 09:00	sell	2	0.10	120.39	0.00	0.00	0.00	10000.00
3	2016.04.04 13:08	close at stop	2	0.10	111.66	0.00	0.00	3.26	10003.26
4	2016.04.04 13:08	close at stop	1	0.10	111.63	0.00	0.00	-11.85	9991.41

 
edutak:
Por favor, dígame por qué no se abren los pedidos.

En primer lugar, te he dado una función normal que cuenta el número de pedidos, pero sigues utilizando la que te equivocas.

En segundo lugar, si (rsi>uroven1 | rsi<uroven1 | rsi>uroven2 | rsi<uroven2) las condiciones son mutuamente contradictorias.

 
Vitalii Ananev:

En primer lugar, te he dado una función normal que cuenta el número de pedidos, pero sigues utilizando la que tienes mal.

En segundo lugar si(rsi>uroven1 | rsi<uroven1 || rsi>uroven2 | rsi<uroven2) las condiciones son mutuamente inconsistentes.

Usaré funciones normales, esto es un borrador por ahora, para el probador - sólo copio en bloques, es más rápido así.

Si al cruzar el RSI de cualquiera de los niveles se abre una orden, y al cruzar cualquier otro nivel - se cierra e inmediatamente se abre otra, entonces no hay contradicción.

¿O no?

 
Vladislav Andruschenko:

Tengo al menos 4 errores

'RSI_uroven1' - identificador no declarado 32.mq4 13 12

'RSI_uroven2' - identificador no declarado 32.mq4 14 12

'RSI' - identificador no declarado 32.mq4 16 24

'pos' - variable ya definida 32.mq4 19 12


Gracias, funciona.
 
edutak:

Utilizaré funciones normales, esto es un borrador por ahora, para el probador - sólo copio en bloques, es más rápido así.

Si cuando el RSI cruza cualquiera de los niveles se abre una orden y cuando cruza cualquier otro nivel se cierra e inmediatamente se abre otra, entonces no hay contradicción.

¿O no?

Piénsalo. Supongamos que uroven1 = 80; rsi = 30; la condición rsi > 80 o rsi < 80 significa que (30 > 80 [falso] o 30 < 80 [verdadero]) no existe en la naturaleza. Aunque la condición será verdadera, porque utiliza un operador OR, pero esencialmente no tiene sentido.

La segunda parte de la expresión Supongamos que uroven2 = 20; rsi = 30 (30 > 20 [verdadero] o 30< 20[falso] ) es la misma.

 

La segunda parte de la expresión Supongamos que uroven2 = 20; rsi = 30 (30 > 20 [verdadero] o 30< 20[falso] ) es la misma.

Cuando escribo o, me refiero a que en cualquier paso de nivel, la orden se abrirá. Cuando se da la segunda condición 30<20[false], en ese momento, la orden anterior se cerrará y se convertirá en verdadera.

Si lo he entendido bien.

 
Si resulta que tienes razón, añadiré un segundo RSI.
Razón de la queja: