[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1014

 

001 respondió.

Por lo que tengo entendido, es aquí donde se hace la comparación. Si me equivoco, que me corrijan.

if(
(sar10>Open[0])&& // SAR 1 // comparar con el precio de apertura
(sar11>Close[0+1])&& // minuto y comparar con el precio de cierre
(sar50>Open[0])&& // SAR 5
(sar51>Close[0+1])&& // minutos
(sar150>Open[0])&& // SAR 15
(sar151>Close[0+1])&& // minutos
(sar152<Close[0+2]) // inicio de tendencia

)

pero no es eso. Para aclarar, el Asesor Experto se adjunta al gráfico de 15 min. y el SAR se compara con el precio para los intervalos de tiempo de 15, 5 y 1 min. .... Open[0] Close[0+2] y Close[0+2] es el precio de apertura y cierre. ¡Tengo que comparar la parte inferior del gráfico, que se adjunta al Asesor Experto en los marcos de tiempo más bajos!

Gracias de antemano...

 
boris.45:

¿Tiene este par en la ventana de observación del mercado?

Intente recalcular todos los Timeframes cuando reciba el mensaje "No hay datos nuevos para el símbolo", ya que le pide que lo haga. Suelo hacerlo así: abro la ventana de carga de datos (F2), hago doble clic en el símbolo deseado, hago doble clic en M1 y cargo los datos, a pesar de todos sus mensajes. Y lo hago para cada TF - M1, M5, M15 ... Mes...

Normalmente ayuda... Aunque a veces me confunde... :)

 
igrok2008:

Pero no es eso. Para aclarar, el Asesor Experto se adjunta al gráfico de 15 min. y el SAR se compara con el precio para los intervalos de tiempo de 15, 5 y 1 min. .... Open[0] Close[0+2] y Close[0+2] es el precio de apertura y cierre. ¡Tengo que comparar la parte inferior del gráfico, que se adjunta al Asesor Experto en los marcos de tiempo más bajos!

Gracias de antemano...

   iSAR(Symbol(),PERIOD_M1, step,maximum,1);  // Данные параболика для текущего символа с периода М1
   iSAR(Symbol(),PERIOD_M5, step,maximum,1);  // Данные параболика для текущего символа с периода M5
   iSAR(Symbol(),PERIOD_M15,step,maximum,1);  // Данные параболика для текущего символа с периода М15
   iSAR(Symbol(),PERIOD_M30,step,maximum,1);  // Данные параболика для текущего символа с периода М30

   iOpen (Symbol(),PERIOD_M1,0);     // цена открытия минутной свечи текущего (нулевого) бара
   iClose(Symbol(),PERIOD_M1,0);     // цена закрытия минутной свечи текущего (нулевого) бара
   iOpen (Symbol(),PERIOD_M1,1);     // цена открытия минутной свечи предыдущего (первого) бара
   iClose(Symbol(),PERIOD_M1,1);     // цена закрытия минутной свечи предыдущего (первого) бара
   iOpen (Symbol(),PERIOD_M5,0);     // цена открытия пятиминутной свечи текущего бара
   iClose(Symbol(),PERIOD_M5,0);     // цена закрытия пятиминутной свечи текущего бара

Por analogía, ve y hazlo tú mismo...

 
artmedia70:

¿Tiene este par en la ventana de observación del mercado?

Intente recalcular todos los Timeframes cuando reciba el mensaje "No hay datos nuevos para el símbolo", ya que le pide que lo haga. Suelo hacerlo así: abro la ventana de carga de datos (F2), hago doble clic en el símbolo deseado, hago doble clic en M1 y cargo los datos, a pesar de todos sus mensajes. Y lo hago para cada TF - M1, M5, M15 ... Mes...

Normalmente ayuda... Aunque a veces me confunde... :)

 
Cuál puede ser la razón, cuando el EA no cierra las órdenes (aunque esté especificado en su código), y el probador da estos errores:
 
ViktorF:
¿Cuál puede ser la razón, cuando la EA no cierra las órdenes (a pesar de que se especifica en su código), y el probador da tales errores:
Esto no es correcto en el código y por eso el EA no se cierra. Y estos son errores inofensivos, es conveniente actualizar las cotizaciones
 
artmedia70:

Por analogía, ve y hazlo tú mismo...

¡¡¡¡¡Por favor, compruebe!!!!!

//+------------------------------------------------------------------+
//|                                 expert SAR_1_5_15 min primer.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern double    Lots=0.01;
extern int       StopLoss=300;
extern int       TakeProfit=150;
extern int       MagicNumber=123456;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
bool CheckOrders(int Type)
{
 bool Result=True;
 for(int i=0;i<OrdersTotal();i++)
  if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol())
      if(OrderType()==Type)
        {
         if(Type==OP_BUY)
           if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
             Result=False;
         if(Type==OP_SELL)
           if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
             Result=False;
         } 
        else Result=False;
 return(Result); 
}

// Проверяем наличие закрытой на текущей свече позиции типа Type. Если есть, то возвращает False  
bool CheckExists(int Type)  
{
 bool Result=True;
 for(int i=OrdersHistoryTotal()-1; i>=0;i--)
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol()&&OrderCloseTime()>=Time[0]&&OrderType()==Type)
    {
     Result=False;
     break;
     }
 return(Result); 
 }
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения Parabolic,на 0-ом, 1-ом и 2-м барах для 1,5-ти,15-ти минутн. графиков
    double sar10 = iSAR(NULL,1,0.02,0.2,0);
    double sar11 = iSAR(NULL,1,0.02,0.2,1);
    double sar50 = iSAR(NULL,5,0.02,0.2,0);
    double sar51 = iSAR(NULL,5,0.02,0.2,1);
    double sar150 = iSAR(NULL,15,0.02,0.2,0);
    double sar151 = iSAR(NULL,15,0.02,0.2,1);
    double sar152 = iSAR(NULL,15,0.02,0.2,2);
    // Определяем цену открытия и закрытия для 15,5 и 1 мин. графиков
   double Open10 = iOpen (Symbol(),PERIOD_M1,0); // цена открытия 1 мин. свечи нулевого бара
   double Close10= iClose(Symbol(),PERIOD_M1,0); // цена закрытия 1 мин. свечи нулевого бара
   double Open50 = iOpen (Symbol(),PERIOD_M5,0); // цена открытия 5 мин. свечи нулевого бара
   double Close51= iClose(Symbol(),PERIOD_M5,1); // цена закрытия 5 мин. свечи первого бара    
   //-------------открытие позиции Buy покупка----------------- 
    if(
    (sar10>Open10)&&     //  SAR 1 // сравниваем с ценой открытия
    (sar11>Close10)&&    // минута и сравниваем с ценой закрытия
    (sar50>Open50)&&         //  SAR 5
    (sar51>Close51)&&        // минут
    (sar150>Open[0])&&        //  SAR 15
    (sar151>Close[0+1])&&     // минут
    (sar152<Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_SELL) && CheckExists(OP_BUY))
      {
       if(StopLoss <= StopLevel+Spread)
         double SL = 0;
        else
         SL = Ask - StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         double TP = 0;
        else
         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
    //-------------------Конец блока покупки -------------------
    
    //-------------Открытие позиции Sell продажа----------------  
    if(
    (sar10<Open10)&&       //  SAR 1// сравниваем с ценой открытия
    (sar11<Close10)&&      // минута и сравниваем с ценой закрытия
    (sar50<Open50)&&       //  SAR 5
    (sar51<Close51)&&      // минут
    (sar150<Open[0])&&        //  SAR 15
    (sar151<Close[0+1])&&     // минут
    (sar152>Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_BUY) && CheckExists(OP_SELL))
      {
       if(StopLoss <= StopLevel+Spread)
         SL = 0;
        else
         SL = Bid + StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         TP = 0;
        else
         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//-----------------конец блока продажи ----------------------
   return(0);
  }
//+------------------------------------------------------------------+

¡¡¡¡¡No se han detectado errores en la compilación!!!!!

Gracias de antemano.

 
artmedia70:
artemida70, hay un par de divisas en la ventana de Market Watch. He probado tu método de carga, pero no funciona. Al cargar los datos, la barra verde no llega al final y la carga se detiene. Al recargar, dejó de aparecer el cuadro "No hay nuevos datos de símbolos...". Por cierto, todos los cubos de tiempo se convirtieron en colores brillantes al mismo tiempo (aunque la carga se hace en M1). ¿Puede ser que el archivo de carga se haya corrompido? Su opinión: ¿qué hacer?
 
Vinin:


¿Quizás querías preguntar cómo obtener el valor de una variable descrita en el archivo de inclusión?


Sí, eso es exactamente. Hay un archivo, que has publicado, que es muy útil, OptimizationReport.mq4. Lo he mejorado ligeramente para calcular el Factor de Recuperación. Ahora quiero obtener el valor de esta variable en el código principal para acelerar la optimización detectando el paso del probador y estableciendo el límite del nivel de PV. He intentado hacerlo a través de variables globales. El valor de mi variable no es visible en el código principal.

En el EA escribo:

double myValue = GlobalVariableGet("myValue");
Print("miValor="+miValor);
MessageBox("miValor="+miValor);
Alert("miValor="+miValor);

En incluir(poner):

GlobalVariableSet("miValor", 1);

No funciona, myValue=0.00000000

Archivos adjuntos:
 

He pensado en registrarme aquí también...

¿Cómo puedo configurar el envío de correo electrónico a narod.ru?

Todas las variantes probadas:

Servidor SMTP - smtp.narod.ru

Inicio de sesión SMTP: - имя@narod.ru

Contraseña SMTP - contraseña

De: slt-soft@narod.ru

Para: slt-soft@narod.ru

Error: Correo: el inicio de sesión en smtp.narod.ru ha fallado

Razón de la queja: