[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 139

 

Aquí están los indicadores y las plantillas, espero ayudar a alguien.

http://depositfiles.com/folders/8KVJ9L02I

 

¿SOS? ¿Podría explicar al Asesor Experto

los valores del indicador VolumeHist (volúmenes verticales), es decir, determinarlos en el gráfico

¿o sólo contar? (si lo calcula, necesita un bloque para analizar el precio del ~presupuesto y calcular el valor de este indicador)

por ejemplo, un Asesor Experto piensa y el resultado es BUY.LONG

Tengo que encontrar un par de extremos y elegir el mejor, ¿no?

¡si usted tiene alguna experiencia con este indicador en el sistema automatizado, plz compartir!


 

Hola.

A primera vista no puedo pensar si es posible:

Hay una función - que devuelve true, cuando se cumplen las condiciones
Por ejemplo, C[0]>C[1]+n*Punto (exactamente C[0], de ahí la pregunta).

Cómo puedo especificar en esta función, que aunque la condición se ejecute una vez,

condición, true devolverá una determinada cantidad de tiempo (X).

Gracias.

 
Telemah >> :

Hola.

No puedo pensar a primera vista si esto es posible :

Hay una función - devuelve true, cuando se cumplen las condiciones
Por ejemplo, C[0]>C[1]+n*Punto (exactamente C[0], de ahí la pregunta).

Cómo puedo especificar en esta función que aunque la condición se ejecute una vez,

ejecución única de una condición, true devolverá un tiempo determinado (X).

Gracias.


No se puede. MQL4 no es un OOP. Por lo tanto, la función sólo puede devolver un valor.

Pero hay varias soluciones:


1. Envía un array a la función por referencia y almacena en él los valores requeridos durante la ejecución de la función, para leerlos posteriormente.

2. declarar variables estáticas, introducir valores en ellas durante la ejecución de la función y leerlos después

 
Reshetov >> :

No puedes. MQL4 no es un OOP. Por lo tanto, la función sólo puede devolver un valor.

Pero hay varias soluciones:


1. Pasar un array por referencia a una función y almacenar en él los valores requeridos durante la ejecución de la función, para que puedan ser leídos posteriormente.

Declarar variables estáticas, introducir valores en ellas en el momento de la ejecución de la función y leerlas después

Gracias por su respuesta.

 
Señores, aconsejen cual es el problema, es necesario que cada pendiente recién aparecido borre el anterior, parece correcto, pero no funciona como debería, si hay un pendiente por compra, entonces el pendiente por venta lo quita (y viceversa), y si hay por comprar y hay uno nuevo por comprar (es decir en el mismo sentido) no funciona cheh (con la venta más la venta lo mismo). No entiendo algo, ¿qué pasa?
bool SELLSTOP; bool BUYSTOP;
  if(...... && BUYSTOP == false)
     {
     int BuyTicketStop = OrderSend(Symbol(),OP_BUYSTOP, Lots, SB,4, SB - StopLoss*Point, SB + TakeProfit*Point,"Покупаем",658932,0,Green);
        if ( BuyTicketStop > 0)
        {
        BUYSTOP = true;
        PlaySound("recharge.wav");
        }
        else 
        {
        Print("Ошибка: ", Error(GetLastError()));
        PlaySound("timeout.wav");
        }
      }  

  if(....... && SELLSTOP == false)
     {
     int SellTicketStop = OrderSend(Symbol(),OP_SELLSTOP, Lots, SS,4, SS + StopLoss*Point, SS - TakeProfit*Point,"Продаем",658932,0,Red);
        if ( SellTicketStop > 0)
        {
        SELLSTOP = true;
        PlaySound("recharge.wav");
        }
        else 
        {
        Print("Ошибка: ", Error(GetLastError()));
        PlaySound("timeout.wav");
        }
     }
     
 int M;
 for( M = OrdersTotal() - 1; M >= 0; M--)
     {
     OrderSelect( M, SELECT_BY_POS, MODE_TRADES);
     
          if ( SELLSTOP == true){if(OrderType() == OP_BUYSTOP) 
          {bool ODBS = OrderDelete(OrderTicket());
          if( ODBS){ BUYSTOP = false; PlaySound("ok.wav");}
          else { BUYSTOP = true; Print("Ошибка: ", Error(GetLastError())); PlaySound("timeout.wav");}}}
          
          if ( BUYSTOP == true){if(OrderType() == OP_SELLSTOP) 
          {bool ODSS = OrderDelete(OrderTicket());            
          if( ODSS){ SELLSTOP = false; PlaySound("ok.wav");}
          else { SELLSTOP = true; Print("Ошибка: ", Error(GetLastError())); PlaySound("timeout.wav");}}}
 
 

Buenas tardes. Pregunta para los expertos.

Estoy optimizando con un diferencial variable.

¿Cómo considera el probador la dispersión durante la optimización?

¿Considera la nueva extensión de la corriente en cada ejecución?

¿O todas las ejecuciones de optimización se realizan teniendo en cuenta la dispersión memorizada por el probador antes de pulsar el botón de OPTIMIZACIÓN?

 
Rita писал(а) >>

Buenas tardes. Pregunta para los expertos.

Estoy optimizando con un diferencial variable.

¿Cómo considera el probador la dispersión durante la optimización?

¿Considera la nueva extensión de la corriente en cada ejecución?

¿O todas las ejecuciones de optimización se basan en la extensión memorizada por el probador antes de pulsar el botón de OPTIMIZACIÓN?

¿Se utiliza el último conocido?

 
Rita писал(а) >>

Buenas tardes. Pregunta para los expertos.

Estoy optimizando con un diferencial variable.

¿Cómo considera el probador la dispersión durante la optimización?

¿Considera la nueva extensión de la corriente en cada ejecución?

¿O todas las ejecuciones de optimización se basan en la extensión memorizada por el probador antes de pulsar el botón de OPTIMIZACIÓN?

¿Se utiliza el último conocido?

 

Gracias. Pero aún no está del todo claro.

¿El último conocido antes de cada carrera?

¿O el último conocido antes del inicio de la optimización?