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

 
Hola a todos. Había un indicador en el foro
https://forum.mql4.com/ru/56236/page933,Подскажите por favor cómo abrirlo en la terminal?

#property  indicator_separate_window
#property  indicator_buffers 3
#property   indicator_color1  Aqua
#property   indicator_width1  1
#property   indicator_color2  Red
#property   indicator_width2  1
#property   indicator_color3  Yellow
#property   indicator_width3  1

extern int       Fperiod=1;
extern int       Speriod=2;
extern int       Method=3;
extern int       PRICE_MODE=PRICE_WEIGHTED;

double   Buf0[];
double   Buf1[];                                
double   Buf2[];                                
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
   {
    SetIndexBuffer(0,Buf0);
    SetIndexBuffer(1,Buf1);
    SetIndexBuffer(2,Buf2);

    SetIndexStyle(0,DRAW_LINE);
    SetIndexStyle(1,DRAW_LINE);
    SetIndexStyle(2,DRAW_LINE);

    SetIndexEmptyValue(1,EMPTY_VALUE);   
    SetIndexEmptyValue(2,EMPTY_VALUE);   

    IndicatorShortName("Proba ");                
   
    SetIndexDrawBegin(0, 0);  
    SetIndexDrawBegin(1, 0);
    SetIndexDrawBegin(2, 0);

    return(0);
   }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
   {
    int i; 
    int limit;
    int counted_bars=IndicatorCounted();
    if(counted_bars<0) return(-1);
    if(counted_bars>0) counted_bars--;
    limit=Bars-counted_bars;
    for (i = limit;i>=0;i--)
        {  
         Buf0[i]=iMA(NULL,0,Fperiod,0,Method,PRICE_MODE,i)-iMA(NULL,0,Speriod,0,Method,PRICE_MODE,i);
         if(Buf0[i] > Buf0[i+1])
             {
              Buf1[i] = Buf0[i];
//              if(Buf0[i+1] > Buf0[i+2])
//                   Buf1[i+1] = Buf0[i+1];
//              else Buf2[i+1] = Buf0[i+1];
             }
         else
             {
              Buf2[i] = Buf0[i];
//              if(Buf0[i+1] < Buf0[i+2])
//                   Buf2[i+1] = Buf0[i+1];
//              else Buf1[i+1] = Buf0[i+1];
             }
        }              
    return(0);
   }

 

Hola! En el Expert Advisor, como una de las condiciones de negociación, uso el pivote CCI, pero por alguna razón no funciona. ¿Podría explicar cuál es el error?

C_1=iCCI(NULL,0,C_period,PRICE_TYPICAL,0);

C_2=iCCI(NULL,0,C_period,PRICE_TYPICAL,1);

C_3=iCCI(NULL,0,C_period,PRICE_TYPICAL,2);


if(C_1 > C_2 > C_3)Opn_B=true;

if(C_1 < C_2 < C_3)Cls_B=true;

 
Ratmirf:

Hola! En el Expert Advisor, como una de las condiciones de negociación, uso el pivote CCI, pero por alguna razón no funciona. ¿Podría explicar cuál es el error?

C_1=iCCI(NULL,0,C_period,PRICE_TYPICAL,0);

C_2=iCCI(NULL,0,C_period,PRICE_TYPICAL,1);

C_3=iCCI(NULL,0,C_period,PRICE_TYPICAL,2);


if(C_1 > C_2 > C_3)Opn_B=true;

if(C_1 < C_2 < C_3)Cls_B=true;

si (C_1 > C_2 && C_2 > C_3) Opn_B=true;

if(C_1 < C_2 && C_2 < C_3)Cls_B=true;

 
paladin80:
si (C_1 > C_2 && C_2 > C_3) Opn_B=true;

si (C_1 < C_2 && C_2 < C_3) Cls_B=true;

¡Muchas gracias!
 

¿Puede decirme qué es lo que falla aquí? Quiero que las operaciones se cierren cuando crucen 70 hacia abajo (Compra) y 30 hacia arriba (Venta). Por alguna razón las operaciones están cerrando la compra muy por debajo de 70 y la venta muy por encima de 30. El RSI ni siquiera llega a 70 y 30 todavía. Gracias.

R_1=iRSI(NULL,0,RSI_Period,PRICE_TYPICAL,0);

R_2=iRSI(NULL,0,RSI_Period,PRICE_TYPICAL,1);

if((R_1 < 70 && R_2 > 70)) Cls_B=true;
if((R_1 > 30 && R_2 < 30)) Cls_S=true;
 
Ratmirf:

¿Puede decirme qué es lo que falla aquí? Quiero que las operaciones se cierren cuando crucen 70 hacia abajo (Compra) y 30 hacia arriba (Venta). Por alguna razón las operaciones están cerrando la compra muy por debajo de 70 y la venta muy por encima de 30. El RSI ni siquiera llega a 70 y 30 todavía. Gracias.

R_1=iRSI(NULL,0,RSI_Period,PRICE_TYPICAL,0);

R_2=iRSI(NULL,0,RSI_Period,PRICE_TYPICAL,1);

if((R_1 < 70 && R_2 > 70)) Cls_B=true;
if((R_1 > 30 && R_2 < 30)) Cls_S=true;

En el post anterior, tenías: if(C_1 < C_2 && C_2 < C_3) Cls_B=true; Ahora tienes la misma variable cambiando bajo una condición diferente: if((R_1 < 70 && R_2 > 70)) Cls_B=true; Check.

Prueba este código:

double C_1=iCCI(NULL,PERIOD_CURRENT,C_period,PRICE_TYPICAL,0);
double C_2=iCCI(NULL,PERIOD_CURRENT,C_period,PRICE_TYPICAL,1);
double C_3=iCCI(NULL,PERIOD_CURRENT,C_period,PRICE_TYPICAL,2);

bool Opn_B=false, Opn_S=false;

if(C_1>C_2 && C_2>C_3) Opn_B=true;
if(C_1<C_2 && C_2<C_3) Opn_S=true;

//---
double R_1=iRSI(NULL,PERIOD_CURRENT,RSI_Period,PRICE_TYPICAL,0);
double R_2=iRSI(NULL,PERIOD_CURRENT,RSI_Period,PRICE_TYPICAL,1);

bool Cls_B=false, Cls_S=false;

if(R_1>70.0 && R_2<70.0) Cls_B=true; 
if(R_1<30.0 && R_2>30.0) Cls_S=true;
 

¡¡¡¡Hola a todos!!!!

Estoy seguro de que se ha hecho repetidamente así, pero tal vez alguien sugiera una fórmula para el tamaño del lote, dependiendo de los fondos???

Por ejemplo, si son más de 2000, el lote será de 0,02, si son más de 3000, de 0,03, etc.

 
nikelodeon:

¡¡¡¡Hola a todos!!!!

Estoy seguro de que se ha hecho muchas veces así, pero tal vez alguien puede sugerir una fórmula para el tamaño del lote en función de los fondos?

Por ejemplo, si son más de 2000, el lote será de 0,02, si son más de 3000, de 0,03, etc.

Existen diferentes fórmulas de cálculo
 
paladin80:

En el post anterior tenías: if (C_1 < C_2 && C_2 < C_3) Cls_B=true; Ahora tienes la misma variable cambiando bajo una condición diferente: if((R_1 < 70 && R_2 > 70)) Cls_B=true; Compruébalo.

Prueba este código:


Muchas gracias por su ayuda. Estoy averiguando cómo funciona exactamente el RSI EA. Curiosamente, el gráfico de abajo muestra que las operaciones se abren justo donde deberían estar, pero se cierran completamente en el lugar equivocado (quiero que las operaciones se cierren en el cruce de 70 de arriba a abajo (Compra) y en el cruce de 30 de abajo a arriba (Venta). Su esquema de cierre recomendado tampoco funciona. He puesto el periodo del RSI en 2 y estoy mirando el M1. Dónde está la inexactitud, no lo entiendo.

R_1=iRSI(NULL,PERIOD_CURRENT,RSI_Period,PRICE_TYPICAL,0);

R_2=iRSI(NULL,PERIOD_CURRENT,RSI_Period,PRICE_TYPICAL,1);


if(R_1>60 && R_2<60) Opn_B=true;

if(R_1<40 && R_2>40) Opn__S=true;


if(R_1<70,0 && R_2>70,0) Cls_B=true;

if(R_1<30,0 && R_2<30,0) Cls_S=true;

 
Ratmirf:

Muchas gracias por su ayuda. Estoy en el proceso de averiguar cómo funciona el RSI EA. Lo interesante es que, en el gráfico de abajo, las operaciones se abren exactamente donde deberían, pero se cierran de forma completamente errónea (quiero que las operaciones se cierren a 70 cruzando de arriba a abajo (Compra), y a 30 cruzando de abajo a arriba (Venta). Su esquema de cierre recomendado tampoco funciona. He puesto el periodo del RSI en 2 y estoy mirando el M1. Dónde está la inexactitud, no lo entiendo.

R_1=iRSI(NULL,PERIOD_CURRENT,RSI_Period,PRICE_TYPICAL,0);

R_2=iRSI(NULL,PERIOD_CURRENT,RSI_Period,PRICE_TYPICAL,1);


if(R_1>60 && R_2<60) Opn_B=true;

if(R_1<40 && R_2>40) Opn__S=true;


if(R_1<70,0 && R_2>70,0) Cls_B=true;

if(R_1<30,0 && R_2<30,0) Cls_S=true;

¿Estamos seguros de que la última condición está correctamente escrita