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 414

 
bergkamp.:

depois de sair do início, continuará a negociar após a mudança do sinal ?

Se a condição especificada for alterada, ela continuará.

bergkamp.:

e como a ação é diferente ? isto e isto

(sem entrar em detalhes) nada.

 
bergkamp.:

depois de sair do início, continuará a negociar após a mudança do sinal ?

e como a ação é diferente ? isto e aquilo


No segundo caso, a função start() retorna zero, no primeiro nada é retornado.
 
khorosh:

No segundo caso, a função start() retorna zero; no primeiro caso, não retorna nada.

oops, oops. Um grande equívoco, que leva a encontrar erros onde nenhum existe.

A função retorna um número indefinido, pode muito bem retornar 0, embora não com certeza.

Portanto, não confunda o homem. Caso contrário, ele se meterá em problemas e não ficará satisfeito.

 
bergkamp.:

depois de sair do início, continuará a negociar após a mudança do sinal ?

e como a ação é diferente ? isto e aquilo

Não diferente para uma chamada de sistema (por carrapato). É importante chamar start() por si só. E isso se o valor de retorno for importante.
 
sergeev:

oops, oops. Um grande equívoco que leva a encontrar erros onde não há erros.

A função retorna um número indefinido, pode muito bem retornar 0, embora não com certeza.

Portanto, não confunda o homem, senão ele se machucará e não ficará feliz.

Provavelmente nunca usou o valor da função "start". Eu pensei assim porque normalmente o que está entre parênteses no retorno() é o valor de retorno para a função, e se não há valor, então nada. Mas "começar" não é uma função comum, mas uma função especial, talvez seja por isso que possa haver alguns desvios.
 
khorosh:
return() entre parênteses é o valor de retorno para a função e nada se não houver nenhum valor.

Não e não!

não ensine as bobagens dos novatos.


int F1() { retornar; }

int F2() { } { }

int a=F1(), b=F2();

Imprimir(a);

Imprimir(b);


-----

Graças a Deus por acrescentar modo rigoroso

 
  1. Olá, aconselhar como implementar uma condição no indicador de correlação que exibe na janela principal 2 pares de moedas nas linhas a partir de uma determinada data no tempo, de modo que o segundo par correlacionado continuará a ser exibido no gráfico em tempo real, e não apenas até que o indicador seja anexado ao gráfico, por exemplo, a janela principal do euro para continuar a exibir a libra esterlina. A construção padrão do indicador (por barras) não é adequada por causa da constante reavaliação.
  2. #property indicator_chart_window
    #property indicator_buffers 2


    extern datetime startDate = 1389107200;
    extern int period = 1;
    extern int priceType = MODE_CLOSE;
    extern int shift = 0;
    extern int mode = MODE_EMA;
    extern string addSymbol = "GBPUSD";
    extern color curSymbolColor = Red;
    extern color addSymbolColor = Aqua;

    int drawBars = 0;
    int addBars = 100;
    double a[], b[], c[];

    // ----
    int init(){
    IndicatorBuffers(3);
    SetIndexBuffer(0,a);
    SetIndexBuffer(1,b);
    SetIndexBuffer(2,c);
    SetIndexStyle(0,DRAW_LINE,EMPTY,EMPTY,curSymbolColor);
    SetIndexStyle(1,DRAW_LINE,EMPTY,EMPTY,addSymbolColor);
    drawBars = iBarShift(NULL,0,startDate);
    if (iClose(addSymbol,0,0) == 0) addSymbol = "";
    drawBars += period + addBars;
    }

    // ----
    int start(){
    int bars = 0, i = 0, si = 0, pos = 0;
    static double delta = 0;

    bars = IndicatorCounted();
    if (bars < 0) return(-1);
    i = Bars - bars - 1;

    if (i > drawBars) i = drawBars;
    si = i;

    while (i > 0){
    if (i < drawBars - period - addBars){
    a[i] = iMA(NULL,0,period,shift,mode,priceType,i);
    }
    pos = iBarShift(addSymbol,0,Time[i]);
    c[i] = price(addSymbol,0,priceType,pos);
    i--;
    }
    si -= period + addBars + 1;
    i = si;

    while(i > 0){
    b[i] = iMAOnArray(c,0,period,shift,mode,i);
    if (i == si){
    delta = b[i] - a[i];
    }
    b[i] -= delta;
    i--;
    }
    }

    //----
    double price(string symb,int tf, int type, int i){
    double p = 0;
    if (symb=="0") symb = Symbol();

    switch(type){
    case MODE_OPEN :
    p = iOpen(symb,tf,i); break;
    case MODE_LOW :
    p = iLow(symb,tf,i); break;
    case MODE_HIGH :
    p = iHigh(symb,tf,i); break;
    case MODE_CLOSE :
    p = iClose(symb,tf,i); break;
    }
    return(p);
    }
 
É simplesmente possível que o indicador se atualize automaticamente, por exemplo, a cada 2-3 minutos.
 

Por favor, ajude, eu não sei em que tópico escrever.

Tenho um consultor especializado, preciso acrescentar a ele a capacidade de multiplicar o próximo lote ganho por 2:

1. Risco

2. Lucro

3. Stoploss

4. StartTime

5. Tamanho do lote

6. Se o lote for fechado positivamente

7. Número de lotes multiplicados subseqüentemente (1, 2, 3 ou 4)

7.1 Multiplicado o lote ganho (cada 2, por X)

7.2 O lote multiplicado ganhou (cada 3 por X)

7,3 Um lote ganho multiplicado (cada 4 por X) 7,4 Um lote ganho multiplicado (cada 3 por X) 7,5 Um lote ganho multiplicado (cada 4 por X) 7,6.

7.4 Multiplicado o lote ganho (cada 5 por X)

X - valor modificável (Se X=0 então o lote não é multiplicado)

Exemplo 1:

Se a aposta 0,03 = jogado em +, a próxima aposta é 0,06

Se a aposta 0,06 = jogado em +, a próxima aposta é 0,09

Se a aposta 0,09 = não jogou no +, então a próxima aposta é o padrão 0,03

Exemplo 2:

Se a aposta 0,03 = jogado em +, a próxima aposta é 0,06

Se a aposta 0,06 = não jogou no +, a próxima aposta é 0,03

Se a aposta 0,03 = jogado em +, então a próxima aposta padrão 0,06

etc.

Aqui está a própria EA. Eu ficaria muito grato por sua ajuda.

Arquivos anexados:
 
Olá!
Existe alguma função na função "Kim" que calcula a margem de lucro da última ordem aberta?

Não o encontrei, agora estou intrigado com uma função caseira para calcular a margem de lucro da última ordem aberta.
Razão: