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

 
Artyom Trishkin:
Ahora describe con palabras lo que has descrito gráficamente. Usa alto, bajo, abierto, cerrado.
En cuanto lo describas con palabras, ya habrás escrito tus TdR :)
Lo único que queda es sustituir las construcciones verbales por código.
OK, lo haré ahora)
 

Tamaño de la vela = alto[i] - bajo[i]

Sombra superior = alto[i] - abierto[i]

Cuerpo de la vela = abrir[i] - cerrar[i]

Sombra inferior = close[i] - low[i]

La relación entre el cuerpo de la vela y su tamaño - (high[i] - low[i]) / (open[i] - close[i])

El tamaño de la sombra corta no debe superar algún umbral - ( close[i] - low[i]) <= close[i]

Orientación de la vela - alta[i] > apertura[i] > cierre[i] > baja[i]

 
Artyom Trishkin:

Apuesto con el ratón.

  • Haga clic por encima del precio+Ctrl - Límite de venta
  • Haga clic por debajo del precio+Ctrl -Límite de compra
  • Haga clic sobre el precio+Ctrl+Mayúsculas - Comprar Stop
  • Haga clic por debajo del precio+Ctrl+Mayúsculas - Sell Stop
También se puede poner BuyStopLimit y SellStopLimit con el shifft

¿Es así como se colocan las órdenes en el probador de MT5, en el modo visual? ¿Cómo se gestionan los eventos? OnChartEvent() no funciona, ¿verdad?

 
Vladimir Karputov:

El probador funciona correctamente. El error está en la lógica del programa: dos símbolos son como dos vidas de personas diferentes (aquí "persona" es análogo a "símbolo"). Y la segunda persona no tiene por qué despertarse al mismo tiempo que la primera ("despertarse" es análogo a " aparecer un nuevo bar").

Así que hay que esperar a que aparezca una nueva barra Y en el primer símbolo Y en el segundo.


Añadido:manejador del evento "nueva barra" del artículo

Gracias por la rápida respuesta. Pensaré en cómo implementar todo esto en modo multidivisa.
 

Esta pregunta: ¿es importante el orden de las condiciones para encontrar una combinación de velas?

Ejemplo:

    if(((high[i-1]-low[i-1]) < (high[i]-low[i])) && (open[i-1] >= Lower1[i]) && ((close[i-1]-open[i-1]) >= 3*(close[i]-open[i])) &&
      (close[i-1 <= Base[i]]) && (high[i-1] <= 0.5*(high[i]-close[i])) && (close[i-1] <= open[i]) && ((close[i]-open[i])<= 0.33*(high[i]-close[i])) &&
      ((close[i]-open[i]) >= (open[i]-low[i])) && (close[i] <= Base[i])) // когда пин-бар ниже, либо равен линии Base
 

Hola. Cuenta de compensación, quiero contar cuántas órdenes limitadas de la misma dirección se han convertido en posiciones.

La función no calcula correctamente, ¿por qué?

int CurrentPos_sell_nettin()
  {
  string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена
   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         //--- Получим количество сделок в полученном списке
         total=HistoryDealsTotal();
         //--- Пройдем по всем сделкам в полученном списке
         for(int i=0; i<total; i++)
           {
            ulong dt = HistoryDealGetTicket(i);
            long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
            ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
            if(did==pt && in_out==DEAL_ENTRY_IN)
              {
               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  count++;
                 }
              }
           }
        }
     }
//---
   return(count);
  }
 
lil_lil:

Hola. Cuenta de compensación, quiero contar cuántas órdenes limitadas de la misma dirección se han convertido en posiciones.

La función no cuenta correctamente, ¿por qué?

Comience con HistorySelectByPosition. Entonces, sólo obtendrá las operaciones relacionadas con esa posición.

 
clickaider:

Esta pregunta: ¿es importante el orden de las condiciones para encontrar una combinación de velas?

Ejemplo:

Mira el ejemplo: hay treinta patrones diferentes.

 
Artyom Trishkin:

Artyom, voy a repetir la pregunta, por favor contesta:

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Preguntas de los principiantes MQL5 MT5 MetaTrader 5

Alexey Kozitsyn, 2018.06.03 15:39

¿Es así como se colocan las órdenes en el probador de MT5, en modo visual? ¿Y cómo se procesan los acontecimientos? OnChartEvent() no funciona, ¿verdad?


 
Alexey Viktorov:

Comience con HistorySelectByPosition. Entonces, sólo obtendrá las operaciones relacionadas con esa posición.

Gracias.

¿Qué pasa ahora?

int CurrentPos_sell_nettin()
  {
   string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена

   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         if(PositionSelect(symb))
           {
            long pos_id=long(PositionGetInteger(POSITION_IDENTIFIER));

            if(pos_id>0)
              {
               if(HistorySelectByPosition(ulong(pos_id)))
                  total=HistoryDealsTotal();
               //--- Пройдем по всем сделкам в полученном списке
               for(int i=0; i<total; i++)
                 {
                  ulong dt = HistoryDealGetTicket(i);
                  long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
                  ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
                  if(did==pt && in_out==DEAL_ENTRY_IN)
                    {
                     if(m_position.PositionType()==POSITION_TYPE_SELL)
                       {
                        count++;
                       }
                    }
                 }
              }
           }
        }
     }
//---
   return(count);
  }
Razón de la queja: