Pregunta sobre el asesor multidivisa - página 4

 

Vale, VassaV, ¡lo tengo!

Aquí hay otra pregunta. En el código habitual, cuando se abre una posición, se muestra:

//---------проверяем условие на покупку----------------------------
  if   ( бла-бла-бла  )
   {
  Lots=GetSizeLot(); 
  ticket=OrderSend("GBPUSD",0,Lots,Ask,Slippage,Bid-SL_long*Point,Ask+TP_long*Point,
                                                         "мульти",MagicNum,0,CLR_NONE);
  if    (ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0); }  
 ... ... ...

Aquí tenemos el valor del "billete". El esquema en mi EA es un poco diferente, como este:

if (GBP) {     //если  "выключатель" включен
if (!ExpertOrder(MagicGBP)) { //если ордеров по паре GBPUSD нет
 
//-------Проверяем условие на покупку-------------
if  (    бла-бла-бла     )
    {  
  //---- Цикл открытия ордера  -------------------------------------------                      
int Cnt=1;
  while (Cnt <= 5) 
  { //-----покупаем--------------
    Lots=GetSizeLot();
   if (OrderSend("GBPUSD",OP_BUY,Lots,ask_GBP,3,bid_GBP - sl_GBPUSD_long*point_GBP,
           ask_GBP+tp_GBPUSD_long*point_GBP,"M_1", MagicGBP, 0, Blue) > 0)  break;    
    else 
{ Print ("Ошибка открытия Buy #", ErrorDescription( GetLastError() ),
                                                  " попытка ", Cnt);
                               
        if (Cnt==5) return(0);  //если за 5 попыток не закрыли - выходим
        Cnt++;
        Sleep(15000); // ждём 15 секунд
      }   
    }
  }

Pero también necesito el valor del "billete". Para este par. ¡No puedo hacerlo en toda la mañana! Quién sabe, - Por favor, dime cómo.

 

A todos los que querían consejos pero no tuvieron tiempo de responder, ¡gracias!

Creo que lo he resuelto yo mismo (esta tarde). Es así:

 //---- Цикл открытия ордера  -------------------------------------------                      
int Cnt=1;
  while (Cnt <= 5) 
  { //-----покупаем--------------
    Lots=GetSizeLot();
   ticketGBP = OrderSend("GBPUSD",OP_BUY,Lots,ask_GBP,3,bid_GBP - sl_GBPUSD_long*point_GBP,
           ask_GBP+tp_GBPUSD_long*point_GBP,"M_1", MagicGBP, 0, Blue);
         if (ticketGBP > 0)  break;    
    else 
{ Print ("Ошибка открытия Buy #", ErrorDescription( GetLastError() ),
                                                  " попытка ", Cnt);
                               
        if (Cnt==5) return(0);  //если за 5 попыток не закрыли - выходим
        Cnt++;
        Sleep(15000); // ждём 15 секунд
      }
 

¡La condición de probar el Asesor Experto durante 5 minutos en el Campeonato, y sólo 3 semanas antes del final del plazo, fue casi un COMIENZO para todos !

Individualmente, mi Asesor Experto es probado en la historia de 12 meses en un par, - no más de 3-4 minutos. Funciona con todas las garrapatas.

¡Pero cuando uno varios EAs en uno - EA multidivisa, el tiempo de prueba aumenta hasta 7-10 minutos !

Y desactivo todos los pares excepto uno que ejecuto.

Quiero pedir a los profesionales (y no sólo a ellos) que compartan su experiencia y las formas de reducir el tiempo de las pruebas.

Laestructura del Asesor Experto es la siguiente:

 
//---- input parameters---------
 
ЗАДАЕМ ВНЕШНИЕ ПАРАМЕТРЫ ПО КАЖДОЙ ПАРЕ
 
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  { 
 
//*********************************************************************
 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПЕРВОЙ ПАРЕ 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ВТОРОЙ ПАРЕ
... ... ... ...
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПОСЛЕДНЕЙ ПАРЕ
 
 =========================================================
 
int Orders=OrdersTotal ();     //получаем кол-во открытых ордеров
if (Orders<3)                 //если  открытых ордеров <3
  { 
if (выключатель 1 вкл) {ОТКРЫВАЕМ ПЕРВУЮ ПАРУ } 
if (выключатель 2 вкл) {ОТКРЫВАЕМ ВТОРУЮ ПАРУ } 
... ... ... 
if (выключатель N вкл) {ОТКРЫВАЕМ ПОСЛЕДНЮЮ ПАРУ }  
  }
//========================================================================
for (int x=0; x<OrdersTotal(); x++)                                             {
    if (OrderSelect(x, SELECT_BY_POS, MODE_TRADES)) 
{       
if (UseTrailing 1) - ТРЕЙЛИНГ ПЕРВОЙ ПАРЫ
... ... ...
if (UseTrailing N) - Трейлинг последней пары
}
//======================================================================
   return(0);
  }
 
rid:

¡La condición de probar el Asesor Experto durante 5 minutos en el Campeonato en sólo 3 semanas antes del final del período ha sido casi un COMIENZO para todos!

Individualmente mi Asesor Experto es probado en la historia de 12 meses en un par - no más de 3-4 minutos. Funciona con todas las garrapatas.

¡Pero cuando uno varios EAs en uno - EA multidivisa, el tiempo de prueba aumenta hasta 7-10 minutos!

Y desactivo todos los pares excepto uno - que estoy probando.

Quiero pedir a los especialistas (y no sólo a ellos) que compartan sus enfoques y formas de disminuir el tiempo de las pruebas.

La estructura del Asesor Experto es así:

 
//---- input parameters---------
 
ЗАДАЕМ ВНЕШНИЕ ПАРАМЕТРЫ ПО КАЖДОЙ ПАРЕ
 
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  { 
 
//*********************************************************************
 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПЕРВОЙ ПАРЕ 
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ВТОРОЙ ПАРЕ
... ... ... ...
double ЗАДАЕМ ПЕРЕМЕННЫЕ ПО ПОСЛЕДНЕЙ ПАРЕ
 
 =========================================================
 
int Orders=OrdersTotal ();     //получаем кол-во открытых ордеров
if (Orders<3)                 //если  открытых ордеров <3
  { 
if (выключатель 1 вкл) {ОТКРЫВАЕМ ПЕРВУЮ ПАРУ } 
if (выключатель 2 вкл) {ОТКРЫВАЕМ ВТОРУЮ ПАРУ } 
... ... ... 
if (выключатель N вкл) {ОТКРЫВАЕМ ПОСЛЕДНЮЮ ПАРУ }  
  }
//========================================================================
for (int x=0; x<OrdersTotal(); x++)                                             {
    if (OrderSelect(x, SELECT_BY_POS, MODE_TRADES)) 
{       
if (UseTrailing 1) - ТРЕЙЛИНГ ПЕРВОЙ ПАРЫ
... ... ...
if (UseTrailing N) - Трейлинг последней пары
}
//======================================================================
   return(0);
  }

se prueba lentamente, sobre todo debido a los indicadores

no son visibles en esta estructura, pero lo más probable es que los tenga, de lo contrario tardaría un minuto como máximo en realizar la prueba.

Los indicadores tienen que ser cambiados o trasladados al código en el EA.

 

Loky,

¿Le he entendido bien?

En mis indicadores es donde establezco las variables. Y aparentemente ellos

double ЗАДАЕМ ПЕРЕМЕННЫЕ (индикаторов) ПО ПЕРВОЙ ПАРЕ

probablemente debería trasladarse al interior en

if (выключатель 1 вкл) {ОТКРЫВАЕМ ПЕРВУЮ ПАРУ }

para cada par en consecuencia?

 
Veamos el ejemplo del Prototipo-IX. Este es un ejemplo de un Asesor Experto multidivisa.

Permite realizar pruebas en cualquiera de los 12 pares de divisas y en varios marcos temporales.
15:18:05 Entradas ProtoType-IX: EMN=10000; Slippage=3; RiskDelta=5; PeriodWPR=8; CriteriaWPR=25; ATRPeriod=40; kATR=0.5; ZeroBar=8; MinTargetinSpread=5; TP_SL_Criteria=2; MaxOpenedOrders=3; MaxOrderSize=5; <br / translate="no"> 15:18:05 2006.10.17 09:38 ProtoType-IX EURUSD,M15: indexPeriod=2 PeriodTesting=15 Symbol index=3 SymbolTesting=EURUSD
15:18:05 2006.10.17 09:38 NRTR_GATOR EURUSD,M15: cargado con éxito
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,M30: cargado con éxito
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,H1: cargado con éxito
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,H4: cargado con éxito
15:18:09 2006.10.17 09:38 NRTR_GATOR EURUSD,Daily: cargado con éxito
15:18:09 2007.01.02 00:00 NRTR_GATOR EURUSD,M30: Atención, la tendencia no está definida. Barra desde el final de la 4
15:18:09 2007.01.02 00 00:00 NRTR_GATOR EURUSD,M30: ¡Atención! La tendencia no está definida, no puede ser
15:18:09 2007.01.02 00:00 NRTR_GATOR EURUSD,H1: ¡Atención! La tendencia no está definida, no puede estarlo. Barra desde el final de 1
15:18:09 2007.01.02 00:00 NRTR_GATOR EURUSD,H1: ¡Atención! La tendencia no está definida, no puede ser
......................................

15:18:23 2007.08.17 22:17 Probador: stop loss #242 en 1.3483 (1.3483 / 1.3485)
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,Diario: eliminado
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,H4: eliminado
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,H1: eliminado
15:18:23 2007.08.17 22:59 NRTR_GATOR EURUSD,M30: eliminado
15:18:23 2007.08.17 22:59 ProtoType-IX EURUSD,M15: Prueba completada


En el modelo "Every ticks" se tardó 18 segundos en hacer la prueba en 15 minutos.
 

Gracias a los que han respondido a la pregunta. Las cosas se están despejando poco a poco. Metieron los pavos dentro. Y ahora se cumple el límite.

Rosh, - ya intentó una docena de veces acercarse al experto nombrado por usted. Pero... cada vez que me he echado atrás... Con mis modestos conocimientos todavía no puedo entender el código y su estructura. Estoy confundido, y no está muy claro por dónde empezar y cómo estructurar su investigación. Hay muchas incertidumbres, y no puedo llegar a todo a la vez. Empiezo a entenderlo todo y pronto me paro a pensar: dónde empecé y para qué...

Y aprovechando esta oportunidad, tengo una pregunta sobre el artículo "Ejemplo de creación de un Asesor Experto" ^

 
klerk:
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.
El único inconveniente es que todos los símbolos negociados deben tener gráficos abiertos con sus marcos temporales.

Si los gráficos no están abiertos, o se abren con plazos diferentes a los utilizados, hay que realizar constantemente

Comprueba en cada estornudo - incluso iRSI puede no funcionar ... hasta el intercambio de terminales ...

Respetuosamente - S.D.
 

En línea, he fijadof=1 min en el EA (en los índices) para todos los pares (para comprobar su rendimiento).

Y lo pongo en el gráfico del primer par en el timef=1 min. Pero en otros pares del EA el marco temporal suele ser diferente. Y, sin embargo, el EA opera en todos los pares exactamente en términos de tiempo-minutos, ¡como está implementado en el código!

¿O quizás no te he entendido bien?

 
klerk:
El principio del Asesor Experto multidivisa es el siguiente:
1. especificar divisas e intervalos de tiempo específicos en el cálculo de los indicadores, 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
escribirlo en todos los pares de divisas.
Buena suerte.


Podrían decirme si la sustitución de la construcción será correcta:

H=High[iHighest("USDJPY", PERIOD_H4, MODE_HIGH, 50, 1)];

en el código del Asesor Experto multidivisa cuando se trabaja en el instrumento de otra persona en tal:

double H_current, H_previous;
H_current=0; H_previous=0;
 
for (int n=1; n<51; n++)
  {
    H_previous=H_current;
    H_current=iHigh("USDJPY", PERIOD_H4, n);
    H=MathMax(H_previous, H_current);
  }

Si no es así, por favor, indique cuál es el error y cómo hacerlo correctamente.

Gracias de antemano.