Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 52

 

Hola a todos! Acabo de empezar a aprender el lenguaje hoy. No puedo averiguar cómo escribir la condición para que se compruebe siempre.

Si el precio en el intervalo de tiempo t (introducido por el usuario como un decimal con un decimal, por ejemplo 15,5 seg) cae en una cantidad n (introducida por el usuario como un entero, por ejemplo 5), entonces el Asesor Experto abre una venta.

Gracias.

 
Hola a todos. Se necesita un generador de citas aleatorias de calidad, al menos del tipo de movimiento browniano geométrico o (idealmente)))) función de Weierstrass-Mandelbrot con un exponente estocástico de Hearst. La necesidad ha surgido por el fin de semana, necesito depurar un indicador sobre una serie de precios. No voy a prescindir de la secuencia de comandos iTicks. ¿He intentado hacerlo o tendré que desarrollarlo yo mismo? La búsqueda en el sitio no dio nada, pero tal vez lo que estoy buscando simplemente se llama de otra manera que las palabras clave que estoy buscando...
 
expmaestro:

Hola a todos! Acabo de empezar a aprender el lenguaje hoy. No puedo averiguar cómo escribir la condición para que se compruebe siempre.

Si el precio en el intervalo de tiempo t (introducido por el usuario como un decimal con un decimal, por ejemplo 15,5 seg) cae en una cantidad n (introducida por el usuario como un entero, por ejemplo 5), entonces el Asesor Experto abre una venta.

Gracias.

Estees el algoritmo. Aprende de los ejemplos.
 
Gracias, intentaré averiguarlo, espero que sea realmente lo que necesito.
 
expmaestro:
Gracias, intentaré averiguarlo, espero que sea realmente lo que necesito.

Estaba seguro de que Lucky se basaba en este principio, pero resultó no ser así. Entonces intente un esquema de este tipo:

extern int ShiftSec = 15;
extern int ShiftPips = 10;
//IIIIIIIIIIIIIIIIIII======Глобальные переменные советника======IIIIIIIIIIIIIIIIIIIIII+
datetime   gdt_NewTime;
double     gda_Price[0][2];
int        gi_size;
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert initialization function                            |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void init()
{
//----
    gi_size = 0;
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert deinitialization function                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void deinit()
{
//----
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert iteration function                                 |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void start()
{       
//----
    if (gdt_NewTime == TimeCurrent()) return;
    gdt_NewTime = TimeCurrent();
    if (gi_size < ShiftSec) {ArrayResize (gda_Price, gi_size + 1); gi_size++;}
    else
    {
        //---- Это схема к которой нужно добавить управление ордерами
        if (gda_Price[0][0] - Bid > ShiftPips * Point)
        //---- Открываемся BUY
        if (Ask - gda_Price[0][1] > ShiftPips * Point)
        //---- Открываемся SELL
        //---- Сдвигаем массив цен на 1 вниз
        double lda_tmp[][2];
        ArrayResize (lda_tmp, gi_size);
        ArrayCopy (lda_tmp, gda_Price);
        int li_IND0, li_IND1;
        for (li_IND0 = 0; li_IND0 < gi_size - 1; li_IND0++)
        {
            for (li_IND1 = 0; li_IND1 < 2; li_IND1++)
            gda_Price[li_IND0][li_IND1] = lda_tmp[li_IND0+1][li_IND1];
        }
    }
    //---- Собираем цены
    gda_Price[gi_size-1][0] = Bid;
    gda_Price[gi_size-1][1] = Ask;
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
Tienes que comprobar si el código funciona. El intervalo de tiempo se calcula como un múltiplo de 1 segundo. Reducir el intervalo de tiempo no depende de mí.
 

¿Podría decirme cómo implementar una tecla de acceso rápido en el gráfico? para poder cambiar el valor de un parámetro en el EA - ¿es esto posible? ¿qué tengo que hacer?

Asumiendo que el tipo de variable es bool - si entiendo bien, sólo necesitarás 2 claves por variable: obtendrás TRUE o FALSE.

 

Necesito utilizar la misma función pero con diferentes variables para calcular los valores de las celdas de 2 matrices similares. Las matrices son unidimensionales.

¿Cómo puedo escribir una función de este tipo? ¿Es posible?

Расчет_Массива(Массив_1, 5.0, 6.0);                       // Вызов функции

void Расчет_Массива(double array[], double A, double B)   // Сама функция
  {
   for (i=0; i<10; i++)
     {
      array[i]= A+B*i;
     }
  }

¿Y es posible hacer lo mismo con más matrices multidimensionales? - 2, 3 dimensiones.

--------------

He añadido un ampersand (&)

void Расчет_Массива(double& array[], double A, double B)   // Сама функция

y funciona... : ))) Sólo que no sé para qué sirve, sólo lo he probado por analogía (método de la galga). Si puedes decírmelo, me gustaría saberlo. : ))

 
Chiripaha:

¿Puede usted por favor aconsejar cómo implementar una tecla de acceso rápido en el gráfico? para que pueda cambiar el valor de un parámetro en el EA - es esto posible? lo que necesita hacer?

Supongamos que el tipo de variable es bool - si entiendo bien, entonces sólo se necesitarán 2 claves en una variable: se obtendrá TRUE o FALSE.

¿Puede ayudar la biblioteca?

 // 2.2.3. Функция управляет горячими клавишами терминала МТ4.
 void ServiceMetaTraderHotKeys(int nKeyMode, // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                             // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                               int nKey);    // Код дополнительной клавиши.

 // 4.1.2. Функция управляет горячими клавишами на указанном графике.
 void ServiceChartHotKeys(int hwndChart, // Системный дескриптор окна, на котором применяются горячие клавиши.
                          int nKeyMode,  // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                         // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                          int nKey);     // Код дополнительной клавиши.
Estas son las descripciones de la nueva versión. Los parámetros están dispuestos de forma diferente en la hucha.
 
Zhunko:

¿Puede ayudar la biblioteca?

Estas descripciones son de la nueva versión. La hucha tiene diferentes parámetros.

Sí, Vadim, estaba mirando tu biblioteca cuando escribí esta pregunta. Y lo descargué hace más de medio año (y miré el nuevo ayer también). Es que no sé cómo usarlo, por eso he preguntado "cómo hacerlo", como un pequeño ejemplo. Porque yo podría con la función a un array por mí mismo, pero aquí me parece un poco difícil de adivinar en mi nivel actual de conocimientos de programación.