Pregunta sobre el asesor multidivisa

 

¡Buenas noches!

Estoy pensando en combinar dos pares en un solo EA. Lo he hecho.

Pero de repente tuve dudas. Lo hice así:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

¡En línea y en el Probador de Estrategias todo funciona! Tal vez no sea la forma correcta de hacerlo:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
La segunda opción también parece funcionar en el probador.

Pero, ¿cuál es la mejor manera de hacerlo?

 
rid:

¡Buenas noches!


Estoy pensando en combinar dos pares en un solo EA. Lo he hecho.


Pero de repente tuve dudas. Lo hice así:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

¡En línea y en el Probador de Estrategias todo funciona! Tal vez no sea la forma correcta de hacerlo:

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
La segunda opción también parece funcionar en el probador.

Pero, ¿cuál es la mejor manera de hacerlo?




Yo suelo calcular todos los valores de los indicadores al principio, es decir, la variante 1, es más fácil, no te confundes y el código está más estructurado.
 

Gracias. Por la respuesta. Una pregunta más. Los trailing stops no quieren funcionar. Funcionan individualmente en el probador.

Pero en línea, funciona para un par. Pero para otro genera error - justo después de adjuntar el Asesor Experto.

Pero las ofertas van - sólo sin arrastre en el segundo par.

Error 130 al modificar SL

int start()
  {
РАСЧЁТ  ИНДИКАТОРОВ 
{
ПОКУПКА/ПРОДАЖА
  }
 
for (int j=0; j<OrdersTotal(); j++)                                    {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)          {
ИДЕТ КОД 1 ТРЕЙЛИНГА.
   }
 
for (int r=0; r<OrdersTotal(); r++)                                    {
    if (OrderSelect(r, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)          {
ИДЕТ КОД 2 ТРЕЙЛИНГА
}
 
return(0);  
  }
Los códigos finales son los mismos, pero las variables externas e internas tienen caracteres diferentes.

No puedo entender lo que está mal. ¿Tal vez alguien me lo diga?

 
inténtalo así
int start()
{
//РАСЧЁТ  ИНДИКАТОРОВ 
 
//ПОКУПКА/ПРОДАЖА
  
 
for (int j=0; j<OrdersTotal(); j++)
  {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)         
              {
                  ИДЕТ КОД 1 ТРЕЙЛИНГА.
              }
          if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)   
              {
                  ИДЕТ КОД 2 ТРЕЙЛИНГА
              }
        }
   }
 
 
  return(0);  
}
 
estructurar el código, será más fácil de entender tanto para la gente como para ti.
 

Lo intentaré, gracias.

 

Parece que funciona.

Todavía no hay errores. Esperando los beneficios para comprobar la red de arrastre.

Más preguntas. Si no te importa.

Y cuando los hay, no son para mentes débiles. Es demasiado complicado entenderlo todo.

Hay uno en mi código:

 double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
//-------Проверяем условие на покупку-------------
if  (

Sin embargo, en los raros ejemplos de este sitio en los que hay un bloque similar, hay una línea:

RefreshRates();
 double BID = MarketInfo("GBPUSD", MODE_BID);
 double ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);

También he insertado esta línea. Lo recopiló. Pero no noto ningún cambio en el rendimiento.

¿Cuánto se necesita aquí? Tal vez haya que dejarlo en mi EA. Funciona con todas las garrapatas. Y utiliza una matriz de valores -

//------заполняем массив значениями RSI GBPUSD -----------
 double RSI_array[30];
int    i=0;
while (i<31)
 {
RSI_array[i]=iRSI("GBPUSD",0,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i);
i++;

 
el principio del Asesor Experto multidivisa es aproximadamente el siguiente:
1. en el cálculo de los indicadores para especificar las monedas específicas y los intervalos de tiempo, por ejemplo: iRSI("GBPUSD",60,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); //pero aquí hay un error
2. obtener precios, puntos, etc. mediante MarketInfo.
3. utilizar iLow(...) en lugar de Low[0] por ejemplo
y se aplican a todos los pares de divisas.
Buena suerte.
 

Tengo el error. En lugar de "0" - puse en las variables del indicador para las monedas - el marco de tiempo en el que el Asesor de Expertos trabaja.

Mi Asesor Experto parece funcionar sin problemas. Y las redes de arrastre también funcionan.

Y una última pregunta, espero. He insertado uno más. Pero no es el indicador incorporado sino uno personalizado. En el probador, este par funciona. Pero en línea, no lo hará. Se genera algo extraño: casi cada segundo se coloca y se borra este indicador. ..... - ¿algún consejo?

//***************************************************************

¡KLerk! De todos los expertos presentes esta semana eres el único que ha respondido a mi pregunta. Y obtuve las respuestas con las que estaba contento en su mayoría. ( Excepto la pregunta sobre RefreshRates() )

Por favor, ponga su dirección de correo electrónico aquí.

Como muestra de mi gratitud, le enviaré un simple "Grial" del trading - EA! que fue inventado por mi buen amigo.(De acuerdo) Trabajo con él con confirmación manual. Yo trabajo con él como una confirmación manual. Sólo uso dos indicadores inducidos incorporados.

Sin ironía, - que realmente es casi un "Grial" (a cierta habilidad de trabajar con él), - ¡verás después de unos minutos después de recibirlo! Sin embargo, que todo el mundo le eche un vistazo:

El símbolo ---------

Período de 30 minutos (M30) 2007.01.02 11:00 - 2007.08.15 00:00

Modelo Todos los ticks (basado en todos los períodos más pequeños disponibles con interpolación fractal de cada tick)

Calidad de la modelización 67,35%.

Depósito inicial 10000,00

Beneficio neto 4009,24

Total de beneficios 6335,06 Total de pérdidas -2325,82

Rentabilidad 2,72 Beneficio esperado 21,44

Reducción máxima 245,63 (2,18%) Reducción relativa 2,18% (245. 63)

Total de operaciones 187

Posiciones cortas (% de ganancias) 71 (80,28%)

Posiciones largas (% de ganancias) 116 (68,10%)

Operaciones rentables (% del total) 136 (72,73%)

Operaciones con pérdidas (% del total) 51 (27,27%)

Operación más rentable 145,02, operación perdedora -47. 77

Media de operaciones rentables 46,58, operaciones perdedoras -45,60

Número máximo de victorias continuas (beneficio) 9 (586. 96)

pérdidas continuas (pérdida) 4 (-189,99

Y aquí está el gráfico de prueba fuera de la muestra para noviembre/diciembre del año anterior 2006:

 
rid:

Como muestra de mi gratitud, le enviaré un sencillo "grial" del comercio: ¡un asesor!

Enhorabuena, klerk, ¡tienes el grial gratis!
 
<< Imprime algo incomprensible: casi cada segundo este indicador se pone y se quita...... - >>

Lo más probable es que los parámetros reales con los que se llama al indicador personalizado no se correspondan con los formales que aparecen con la clave extern en el listado (número, orden, tipo, ...). Un error bastante común.