Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 97

 

Buenas tardes, señores)

Tratando de preparar los datos para el entrenamiento de una red neuronal. La tarea es.

Tener una matriz, donde por ejemplo cada fila (momento de tiempo - barra) es un vector de entrada, y las columnas por ejemplo 10000. Qué hacer si hay datos dinámicos (número de filas1, filas2), y cambian de número en diferentes momentos.

Por ejemplo, se carga una matriz en una red, cada fila es un vector para el aprendizaje, pero para cada fila, hay n número de filas que cambian dinámicamente en el tiempo.

Una posible conjetura de solución es añadir columnas adicionales a la matriz igual al número de columnas de la fila de la dinámica, resulta que cada vector tendrá columnas de la dinámica, pero como si de una fila se tratara, apenas prosumida.

por ejemplo

1er vector

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "línea1 dinámica" 1 1 1 1

ssssssssssssssssssssssss "línea2 dinámica" 1 1 1 1

solución

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "línea1 dinámica" 2 2 2 2

 
Top2n:

Buenas tardes, señores)

Tratando de preparar los datos para el entrenamiento de una red neuronal. La tarea es.

Tener una matriz, donde por ejemplo cada fila (momento de tiempo - barra) es un vector de entrada, y las columnas por ejemplo 10000. Qué hacer si hay datos dinámicos (número de filas1, filas2), y cambian de número en diferentes momentos.

Por ejemplo, se carga una matriz en una red, cada fila es un vector para el aprendizaje, pero para cada fila, hay n número de filas que cambian dinámicamente en el tiempo.

Una posible conjetura de solución es añadir columnas adicionales a la matriz igual al número de columnas de la fila de la dinámica, resulta que cada vector tendrá columnas de la dinámica, pero como si de una fila se tratara, apenas prosumida.

por ejemplo

1er vector

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "línea1 dinámica" 1 1 1 1

ssssssssssssssssssssssss "línea2 dinámica" 1 1 1

solución

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "línea1 dinámica" 2 2 2 2

¿Y cómo se aprende una lengua que cambia dinámicamente (una vez por hora, por ejemplo) su vocabulario? Así es como lo hace una red neuronal.
 
Así que ahí está MQL5, según tengo entendido. ¿O es idéntico?
 
Andrey Sokolov:
Así que ahí está MQL5, según tengo entendido. ¿O es idéntico?
Exactamente lo mismo.
 
Buenas tardes. He creado un EA, funciona bien, pero si apago el terminal con el EA funcionando y vuelvo a encender el terminal, el EA empieza a contar de nuevo. Así que tengo una pregunta. ¿Qué debo escribir en mi EA para que restablezca los parámetros de entrada al iniciarse?
 
XFaost:
Buenas tardes. He creado un EA, funciona bien, pero si apago el terminal con el EA funcionando y vuelvo a encender el terminal, el EA empieza a contar de nuevo. Así que tengo una pregunta. ¿Qué tengo que prescribir en el EA, para que reinicie los parámetros de entrada cuando se inicie?
Quiero que mi Asesor Experto no restablezca los parámetros de entrada, sino que recoja información sobre las órdenes que se abrieron antes de que se cerrara.
 
XFaost:
Buenas tardes. He creado un EA, funciona bien, pero si apago el terminal con el EA funcionando y vuelvo a encender el terminal, el EA empieza a contar de nuevo. Así que tengo una pregunta. ¿Qué tengo que escribir en mi EA, para que restablezca los parámetros de entrada cuando lo inicie?
Describa el funcionamiento de la EA. Tal vez haya que utilizar un principio diferente. Y si todavía necesita reiniciar, entonces debería definir primero qué se entiende por "al inicio". Y en general, un reinicio es una transición a la posición inicial. Anote los ajustes iniciales y ajústelos en el momento oportuno.
 

Saludos. ¿Puede decirme qué ocurre?

El EA coloca órdenes con stops por encima y por debajo del precio. Si uno de ellos se dispara, el stop se ajusta si el precio se aleja del stop más de lo establecido, si el precio se mueve hacia el stop entonces no hay cambios.

Al principio he escrito sólo la orden de compra y ha funcionado como se esperaba. Si añado una imagen de espejo para la venta, los stops se corregirán por el valor establecido sea cual sea el movimiento del precio.

En general, si por separado, o para comprar o vender - todo funciona como debería, pero ambas partes juntas - hay un error.

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double Lot             = 0.01;
extern int    StopLoss        = 50;
extern int    Slippage        = 5;
extern int    Delta           = 60;
extern int    Delta2          = 170;
extern int    Magic           = 321;

int ticket;
double price, sl, sl2;
datetime counted_bar = 0;

int OnInit()
  {
    if (Digits == 3 || Digits == 5)
   {

       StopLoss      *= 10;
       Delta         *= 10;
       Delta2        *= 10;
      
   }

  
   return(INIT_SUCCEEDED);
  }


void OnTick() {
//////        ПРОДАЖА  ///////////////////////////////////////////////////////
if (SellLimitCount()==0 && SellCount()==0)
{    
  price = NormalizeDouble(Bid - Delta*Point, Digits);
  sl = NormalizeDouble(price + StopLoss*Point, Digits);
  ticket = OrderSend (Symbol(), OP_SELLSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Red);
}

if (SellCount()!=0)
  {
   if (Bid < (OrderStopLoss() - NormalizeDouble (StopLoss*Point, Digits)))
     {
     sl = NormalizeDouble (Bid + StopLoss*Point, Digits);
     if (OrderModify(ticket, price, sl, 0, 0, Red)) Print ("Sell_Order_Modify_Ok");
     else Print ("ERROR_Sell_Order_Modify");
     }  
  }
if (SellLimitCount()!=0)
{
  if(Bid > (OrderOpenPrice() + NormalizeDouble (Delta2*Point, Digits)))
   {    
    if (OrderDelete(ticket, Red)) Print ("BuyLimit_Order_Delete_Ok");
    else Print ("ERROR_BuyLimit_Odrer_Delete");
   }  
}
/////////////////////////////////////////////////////////////////////////////////
///////       ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()==0 && BuyCount()==0)
{
  price = NormalizeDouble(Ask + Delta*Point, Digits);
  sl = NormalizeDouble(price - StopLoss*Point, Digits);
  ticket = OrderSend (Symbol(), OP_BUYSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Blue);
}

if (BuyCount()!=0)
  {
    if (Ask > (OrderStopLoss() + NormalizeDouble (StopLoss*Point, Digits)))
     {
     sl = NormalizeDouble (Ask - StopLoss*Point, Digits);
     if (OrderModify(ticket, price, sl, 0, 0, Blue)) Print ("Buy_Order_Modify_Ok");
     else Print ("ERROR_Buy_Order_Modify");
     }  
  }
if (BuyLimitCount()!=0)
{
  if(Ask < (OrderOpenPrice() - NormalizeDouble (Delta2*Point, Digits)))
   {
    if (OrderDelete(ticket, Blue)) Print ("BuyLimit_Order_Delete_Ok");
    else Print ("ERROR_BuyLimit_Orde_Delete");
   }  
}
///////////////////////////////////////////////////////////////////////////////

}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUYSTOP)
count++;}}}return(count);}

int BuyCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUY)
count++;}}}return(count);}

int SellLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELLSTOP)
count++;}}}return(count);}

int SellCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELL)
count++;}}}return(count);}
 
Andrey Sokolov:

Saludos. ¿Puede decirme qué ocurre?

El EA coloca órdenes con stops por encima y por debajo del precio. Si uno de ellos se dispara, el stop se ajusta si el precio se aleja del stop más de lo establecido, si el precio se mueve hacia el stop entonces no hay cambios.

Al principio he escrito sólo la orden de compra y ha funcionado como se esperaba. Si añado una imagen de espejo para la venta, los stops se corregirán por el valor establecido sea cual sea el movimiento del precio.

En general, si por separado, o para comprar o vender, todo está funcionando como debe ser, pero ambas partes juntas - hay un error.

...

Todo el código que nos has mostrado es un error, ¿no? Por lo menos, la función OnTick es casi totalmente un error...

 
Vitalie Postolache:

Un error, ¿se refiere a todo el código mostrado?

Cuando hay ambas partes del código, tanto para la compra como para la venta, entonces después de que la orden pendiente se dispara, su parada se corrige en cualquier dirección del precio por alguna razón. Y cuando sólo hay una parte de compra o de venta en el código, el stop se corrige como es debido, sólo cuando el precio se aleja de él.
Razón de la queja: