[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 462

 
tol64:


Gracias. Está muy claro. Cualquiera puede entenderlo si lo explicas así)).

Una pregunta más. He encontrado muchas versiones similares de la pregunta en la búsqueda, pero mi pregunta será un poco diferente).

Discrepancia en los gráficos. Para ver un resultado "fiable" tengo que recalcular constantemente los plazos. Es decir, si veo que hay errores en el registro, voy al archivo de cotizaciones y recalculo todos los plazos. En el probador, por ejemplo, realizo una prueba sobre los puntos de control. Todo está bien. Entonces yo, por ejemplo, formaré barras. Todo está bien. Pero si volvemos a realizar una prueba utilizando puntos de control, volveré a ver discrepancias entre los gráficos del diario. ¿Qué es? ))) ¿Hay algo contra esta plaga?


IMHO, utilizar sólo dos modelos de pruebas - ya sea "Todos los ticks ..." o "Por los precios de apertura..." (para esto en el tablero debe organizar el control para la formación de una nueva barra) - estos son los cortes "fiables" - y no molestar ... :-))) "Puntos de control" - no vale la pena.

Sólo tienes que descargar el historial de minutos del instrumento que quieras y seguir adelante... :-)))

 
Roman.:


IMHO, utilice sólo dos modelos de prueba - ya sea "Todos los ticks..." o "Por los precios de apertura..." (para esto en el búho necesita organizar el control de la formación de nuevas barras) - estos son cortes "confiables" - y no se preocupe... :-))) "Puntos de control" - no vale la pena.

Sólo tienes que descargar el historial de minutos del instrumento que quieras y seguir adelante... :-)))


Mi enlace está roto...

En mi enfoque, si usas "Todos los ticks" tendrás que esperar siempre). Estoy probando el historial de 10 años. En el EA las condiciones y el arrastre se construyen sobre las barras formadas. Pero hay algunas condiciones que deben ser revisadas en cada garrapata. Por ejemplo, si se ha disparado un stop loss y el sistema de gestión monetaria ha cambiado el tamaño del lote, deberá reiniciar todas las órdenes pendientes para cambiar el tamaño del lote. O simplemente eliminar las órdenes pendientes, si así lo requieren las condiciones. Todo debe estar claro para que sea válido)). Por eso, los puntos de control me bastan en principio, ya que estaba comparando algunos trozos de historia con todos los ticks. Uno y el mismo.

Entonces, ¿qué hay que hacer para ayudar a resolver y eliminar estos errores? Porque el enlace está roto).

 
tol64:


El enlace está roto...

En mi enfoque, si usas "Todos los ticks", tendrás que esperar siempre). Estoy probando el historial de 10 años. En el EA las condiciones y el seguimiento se basan en las barras formadas. Pero hay algunas condiciones que deben ser revisadas en cada garrapata. Por ejemplo, si se ha disparado un stop loss y el sistema de gestión monetaria ha cambiado el tamaño del lote, deberá reiniciar todas las órdenes pendientes para cambiar el tamaño del lote. O simplemente eliminar las órdenes pendientes, si así lo requieren las condiciones. Todo debe estar claro para que sea válido)). Por eso, los puntos de control me bastan en principio, ya que estaba comparando algunos trozos de historia con todos los ticks. Uno y el mismo.

Entonces, ¿qué hay que hacer para ayudar a resolver y eliminar estos errores? Porque el enlace está roto))


Vuelve a descargar

y aquí.

 

Buenas tardes, señores.

Ayúdame a entender el código. Entiendo la lógica, pero no sé cómo describirla correctamente. No sé cómo describirlo adecuadamente.

Aquí hay un trozo del Asesor Experto.

total=OrdersTotal();
if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7))
{

OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3))
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}

Por favor, aconséjeme cómo tratarla correctamente. Saludos Denis.

 


Gracias. Estos enlaces, y otros más, no dicen lo más importante que necesitaba saber.

Cuando las cotizaciones entran en el terminal en línea, es necesario recalcular los plazos de vez en cuando para que no haya desajustes.

En el modo offline no existen estos problemas). Esta es la primera.

Ahora el segundo.

for(pos = 0; pos < OrdersHistoryTotal(); pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

Si lo hago, la escritura en el archivo va sin errores. Es decir, en el archivo todo se ve como se pretende. Si lo hago de la manera que has afirmado con seguridad:

for(pos = 0; pos < OrdersHistoryTotal()-1; pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

entonces el archivo no se escribe correctamente. Veo que hay casos individuales)).

 
Aplazado.
smartemiy:

Buenas tardes, queridos.

¡¡¡Necesito su ayuda experta !!!

¿Cómo especificar en el Asesor Experto que debe dejar de operar si la reducción del saldo es ya del 20%, y que esta cifra puede ser modificada?

Lo siento, puede que ya se haya explicado en el foro, puede que no me haya dado cuenta...

¡SE LO AGRADEZCO DE ANTEMANO!

¡¡¡¡¡Buena suerte en el comercio !!!!!

 
granit77:
Aplazado.


Por ejemplo, así...

extern int MaxLoss = 90;          // Максимально допустимая просадка в процентах от баланса

...     

static datetime prevtime = 0;       // по ценам открытия
bool IsExpertFailed = false;
bool IsExpertStopped = false;

      

//+------------------------------------------------------------------+
//| Старт робота                                                     |
//+------------------------------------------------------------------+

int init()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   IsExpertStopped = false;
   if (!IsTradeAllowed())
   {
      Comment("Необходимо разрешить советнику торговать");
      IsExpertStopped = true;
      return (0);
   }
      
   if (!IsTesting())
   {
      if (IsExpertEnabled())
      {
         Comment("Советник запустится следующим тиком");
      }
      else 
      {
         Comment("Отжата кнопка \"Разрешить запуск советников\"");
      }
   }
 return (0);
}
  
//+------------------------------------------------------------------+
//| Завершение работы робота                                         |
//+------------------------------------------------------------------+

int deinit()
{
   return (0);
}
  
//+------------------------------------------------------------------+
//| Обработка сигнала                                                |
//+------------------------------------------------------------------+
  
int start()    // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
  
 
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   if (IsExpertStopped)
   {
      Comment("Не удалось инициализировать советник!");
      return (0);
   }
   
   if (IsExpertFailed)
   {
      Comment("Критическая ошибка! Советник остановлен.");
      return (0);
   }
   
         
   // ------------------------------------------------Ищем наш ордер---------------------------------

   int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))
      {
         continue;
      }

      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }

      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue;
      }
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();
      
                              
                                  
                           if (orderType == OP_BUY) 
                              {
      
                               }
            
                            if (orderType == OP_SELL) 
                                 {
       
                                 }   
                            
                    }

      // Проверка на предельную просадку
      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }
    
              
       
}
   
 
Por favor, recuérdame cómo se ajusta el retraso. Creo que puedes hacerlo en milisegundos. Sigo olvidando cómo se escribe.
 
Y puede alguien sugerir un script que cierre todas las posiciones rápidamente. No lo encuentro. Me gustaría ver el código.
 
FOReignEXchange:
Y puede alguien sugerir un script que cierre todas las posiciones rápidamente. No lo encuentro. Me gustaría ver el código.
Una búsqueda medirá cincuenta de los grandes.