Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 52

 

Olá a todos! acabo de começar a aprender o idioma hoje. não consigo entender como escrever a condição a ser sempre verificada.

Se o preço no intervalo de tempo t (inserido pelo usuário como uma casa decimal com uma casa decimal, por exemplo 15,5 segundos) cair por um valor n (inserido pelo usuário como um número inteiro, por exemplo 5), então o Expert Advisor abre uma venda.

obrigado!

 
Olá a todos. Existe a necessidade de um gerador de cotação aleatória de alta qualidade, pelo menos do tipo de movimento geométrico Brownian ou (idealmente)))) Weierstrass-Mandelbrot com função Stochastic Hurst exponente. A necessidade surgiu por causa do fim de semana, eu preciso depurar um indicador em uma série de preços. Não vou passar sem o roteiro do iTicks. Eu tentei fazer isso ou terei que desenvolvê-lo eu mesmo? A busca no site não deu nada, mas talvez o que eu esteja procurando se chame simplesmente algo mais do que as palavras-chave que estou procurando...
 
expmaestro:

Olá a todos! acabo de começar a aprender o idioma hoje. não consigo entender como escrever a condição a ser sempre verificada.

Se o preço no intervalo de tempo t (inserido pelo usuário como uma casa decimal com uma casa decimal, por exemplo 15,5 segundos) cair por um valor n (inserido pelo usuário como um número inteiro, por exemplo 5), então o Expert Advisor abre uma venda.

obrigado!

Aqui está esse algoritmo. Aprenda com os exemplos.
 
Obrigado, vou tentar descobrir. Espero que seja realmente isso que eu preciso.
 
expmaestro:
Obrigado, vou tentar descobrir. Espero que seja realmente o que eu preciso.

Eu tinha certeza de que Lucky se baseava neste princípio, mas afinal não foi assim. Então tente um esquema desse 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+
Você precisa verificar se o código funciona. O intervalo de tempo é calculado como um múltiplo de 1 segundo. Reduzir o intervalo de tempo não depende de mim.
 

Você pode me dizer como implementar uma hotkey no gráfico? para que você possa mudar o valor de um parâmetro no EA - isso é possível? o que preciso fazer?

Assumindo que o tipo de variável é bool - se eu entender corretamente, você só precisará de 2 chaves por variável: você terá VERDADEIRO ou FALSO.

 

Preciso usar a mesma função, mas com variáveis diferentes para calcular os valores das células de 2 matrizes semelhantes. As matrizes são unidimensionais.

Como escrever tal função? Isso é possível?

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

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

E é possível fazer a mesma coisa com mais matrizes multidimensionais? - 2, 3 dimensões.

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

Acrescentei um sinal de (&)

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

e funciona... : ))) Só que eu não sei para que serve - apenas experimentei por analogia (método gauge). Se você puder me dizer, eu ficaria feliz em saber. : ))

 
Chiripaha:

Você pode aconselhar como implementar uma hotkey no gráfico? para que você possa alterar o valor de um parâmetro no EA - isso é possível? o que você precisa fazer?

Suponha que o tipo de variável seja bool - se eu entender corretamente, então só serão necessárias 2 chaves em uma variável: você terá VERDADEIRO ou FALSO.

A biblioteca pode ajudar?

 // 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 são descrições da nova versão. Os parâmetros estão dispostos de forma diferente no mealheiro.
 
Zhunko:

A biblioteca pode ajudar?

Estas descrições são da nova versão. O banco de porquinhos tem parâmetros diferentes.

Sim, Vadim, eu estava apenas olhando para sua biblioteca quando escrevi esta pergunta. E eu fiz o download há mais de meio ano (e ontem também olhei o novo). Só não sei como usá-lo, por isso perguntei "como fazê-lo" - como um pequeno exemplo. Porque eu poderia com a função de um array sozinho, mas aqui eu acho um pouco difícil de adivinhar em meu nível atual de habilidades de programação.