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

 
bergkamp.:

¿después de salir de la salida continuará el comercio después de los cambios de señal?

Si se cambia la condición especificada, continuará.

bergkamp.:

y ¿en qué se diferencia la acción? esto y esto

(sin entrar en detalles) nada.

 
bergkamp.:

¿después de salir de la salida continuará el comercio después de los cambios de señal?

y en qué se diferencia la acción... esto y aquello


En el segundo caso la función start() devuelve cero, en el primero no se devuelve nada.
 
khorosh:

En el segundo caso, la función start() devuelve cero; en el primer caso, no devuelve nada.

Una gran equivocación que lleva a encontrar errores donde no los hay.

La función devuelve algún número indefinido, bien podría devolver 0, aunque no es seguro.

Así que no confundas al hombre. De lo contrario, se meterá en problemas y no se alegrará.

 
bergkamp.:

¿después de salir de la salida continuará el comercio después de los cambios de señal?

y en qué se diferencia la acción... esto y aquello

No es diferente para una llamada del sistema (por tic). Es importante llamar a start() por sí mismo. Y eso si el valor de retorno es importante.
 
sergeev:

Una gran equivocación que lleva a encontrar errores donde no los hay.

La función devuelve algún número indefinido, bien podría devolver 0, aunque no es seguro.

Así que no confundas al hombre. De lo contrario, saldrá herido y no será feliz.

Probablemente nunca se utilizó el valor de la función "inicio". Lo pensé porque normalmente lo que hay entre paréntesis en return() es el valor de retorno de la función, y si no hay valor, pues nada. Pero "start" no es una función ordinaria, sino una especial, quizá por eso puede haber algunas desviaciones.
 
khorosh:
return() entre paréntesis es el valor de retorno de la función y nada si no hay valor.

¡No y no!

no enseñes tonterías a los novatos.


int F1() { return; }

int F2() { }

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

Imprimir(a);

Imprimir(b);


-----

Gracias a Dios por añadir el modo estricto

 
  1. Hola, aconsejar cómo implementar una condición en el indicador de correlación que muestra en la ventana principal 2 pares de divisas en las líneas de una determinada fecha en el tiempo, por lo que el segundo par correlacionado seguirá siendo mostrado en el gráfico en tiempo real, y no sólo hasta que el indicador se adjunta a la carta, por ejemplo, la ventana principal del euro para seguir mostrando pounddollar. La construcción estándar del indicador (por barras) no es adecuada debido a la recalificación constante.
  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);
    }
 
Simplemente es posible que el indicador se actualice automáticamente, por ejemplo, cada 2-3 minutos.
 

Por favor, ayuda, no sé en qué tema escribir.

Tengo un Asesor Experto, necesito añadirle la capacidad de multiplicar por 2 el siguiente lote ganado:

1. Riesgo

2. Beneficios

3. Stoploss

4. Hora de inicio

5. Tamaño del lote

6. Si el lote se cierra positivamente

7. Número de lotes posteriores multiplicados (1, 2, 3 o 4)

7.1 Lote ganado multiplicado (cada 2, por X)

7.2 El lote ganado multiplicado (cada 3 por X)

7.3 Un lote ganado multiplicado (cada 4 por X) 7.4 Un lote ganado multiplicado (cada 3 por X) 7.5 Un lote ganado multiplicado (cada 4 por X) 7.6.

7,4 Lote ganado multiplicado (cada 5 por X)

X - valor modificable (Si X=0 el lote no se multiplica)

Ejemplo 1:

Si la apuesta 0,03 = se juega en +, la siguiente apuesta es 0,06

Si la apuesta 0,06 = se juega en +, la siguiente apuesta es 0,09

Si la apuesta 0,09 = no jugó en el +, entonces la siguiente apuesta es la estándar 0,03

Ejemplo 2:

Si la apuesta 0,03 = se juega en +, la siguiente apuesta es 0,06

Si apuesta 0,06 = no jugó en el +, la siguiente apuesta es 0,03

Si la apuesta 0,03 = se juega en +, entonces la siguiente apuesta estándar 0,06

etc.

Aquí está el propio EA. Le agradecería mucho su ayuda.

Archivos adjuntos:
 
¡Hola!
¿Existe una función en la función "Kim" que calcule el margen de beneficio de la última orden abierta?

No lo he encontrado, ahora estoy desconcertando con una función casera para calcular el margen de beneficio de la última orden abierta.