Menos código, más acción... escribir un EA - página 9

 
Vladimir Simakov:

Es como, ¿qué no estoy comprobando?

No lo hagas una sola vez, hazlo varias veces.


 
Vladimir Simakov:

¿Está bien que esto sea todo el baile de la pandereta?

Si los datos no están listos, el método devolverá 0.0, lo que se puede comprobar fácilmente.

También se puede escribir en la documentación, como una acción obligatoria del usuario al acceder a un método.

Con una nota de que "se hicieron N horas de desarrollo para esto".

 
MQL_Easy
MQL_Easy
  • www.mql5.com
MQL_Easy is an open source cross platform library for developing MQL4 and MQL5 applications. The purpose of this library is to make the mql development easy, safe and fast in order to focus more on implementing complex trading ideas. The cross platform property assure that the same piece of code works on both platforms. In addition, it has...
 

Gracias, he echado un vistazo.

Tuve una idea ligeramente diferente a la de hacer una jerarquía de clases "más ligera".

Aquí abrimos el terminal y ¿qué vemos?

- tabla con los pedidos

- tabla con la historia

- una tabla con citas

- gráficos. Pero el propio cuadro es también una tabla, sólo una representación gráfica

y dar al programador (y a mí en particular) un medio (interfaz) para utilizar estas tablas/similares lo más fácilmente posible.
El trabajo es casi como en Excel, excepto que es mql y tiempo de compilación: abrir tablas, establecer/nombrar columnas, escribir fórmulas.

Básicamente, hay una clase DataFrame que implementa una tabla con una disciplina pull (bajo demanda) de cálculos. He empezado a experimentar con la mejor manera de hacerlo con los pedidos/boletos/historia.

Pero ahora es difícil encontrar el tiempo y otras razones

 
Maxim Kuznetsov:

hacer una jerarquía de clases más "ligera".

Varios intentos diferentes de hacer algo propio han demostrado que no basta con idear una API, sino que hay que hacerla funcionar de forma estable.

Dio el ejemplo más sencillo de una prueba.

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

Menos código, más rodar... escribir un EA

fxsaber, 2019.03.12 21:46

ZZI Esta tarea puede ser considerada como una prueba inicial de las habilidades de trading de MT5. Así que todo el mundo es bienvenido a probarlo.

 
Es casi imposible crear un wrapper para MT4 que pueda competir con MQL4 puro

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Mantener el mismo número de posiciones de compra y venta en MT5

fxsaber, 2019.04.20 10:43

int GetAmount( const int Type )
{
  int Amount = 0;
  
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    Amount += OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type) && (OrderSymbol() == _Symbol);

  return(Amount);
}

void OnInit()
{
  OnTrade();
}

void OnTrade()
{
  bool Res = true;
  
  while (Res)
  {
    const int AmountBuy =  GetAmount(OP_BUY);
    const int AmountSell = GetAmount(OP_SELL);
    
    if (Res = (AmountBuy != AmountSell))
      Res = ((AmountBuy > AmountSell) ? OrderSend(_Symbol, OP_SELL, 1, Bid, 100, 0, 0)
                                      : OrderSend(_Symbol,  OP_BUY, 1, Ask, 100, 0, 0)) > 0;
  }
}
 
fxsaber:
Es casi imposible crear un wrapper para MT4 que pueda competir con MQL4 puro

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

todo es posible.

 
Maxim Kuznetsov:

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

todo es posible.

Ponlo ahí y echemos un vistazo.

 
fxsaber:

Ponlo ahí y echemos un vistazo.

Ya he pasado por aquí: "publicarlo" se castiga con un baneo.

el tema está cerrado.

 
Maxim Kuznetsov:

Ya he estado aquí - hay una prohibición para "postearlo".

El enlace en el PM de nuevo.


SZZ puede y así

// https://www.mql5.com/ru/forum/305859/page9#comment_11400794
unsigned char binary_array[]=
  {
   0x68,0x74,0x74,0x70,0x73,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x6D,0x71,0x6C,0x35,
   0x2E,0x63,0x6F,0x6D,0x2F,0x72,0x75,0x2F,0x66,0x6F,0x72,0x75,0x6D,0x2F,0x33,0x30,
   0x35,0x38,0x35,0x39,0x2F,0x70,0x61,0x67,0x65,0x39,0x23,0x63,0x6F,0x6D,0x6D,0x65,
   0x6E,0x74,0x5F,0x31,0x31,0x34,0x30,0x30,0x37,0x39,0x34
  };
  
void OnStart()
{
  Print(CharArrayToString(binary_array));
}