[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 477

 

Si, por ejemplo, en 10 años el beneficio de una cuenta de trading fuera del 500% (las cifras son ficticias) -
¿cómo calcular el beneficio medio anual, teniendo en cuenta además que todos los beneficios se reinvierten?
Gracias.

 
frixer:
Hola a todos, Feliz Año Nuevo. No puedo hacer que un pedido se haga una sola vez, si se cumple la condición de que se haga el pedido, lo necesito entonces, si hay un pedido por segunda vez no se hará. Me gustaría poner un ejemplo.

El ejemplo del libro de texto es su caso.
 
atztek:

Si, por ejemplo, en 10 años el beneficio de una cuenta de trading fuera del 500% (las cifras son ficticias) -
¿cómo calcular el beneficio medio anual, teniendo en cuenta además que todos los beneficios se reinvierten?
Gracias.

La raíz cuadrada de 6, luego restar 1 y multiplicar por 100. Se obtiene un 19,62% al año.
 
Bajar
 
Roman.:

El ejemplo del tutorial es su caso.

Lo he leído pero no funciona con mi algoritmo y sigo teniendo órdenes en cada tick.

//+------------------------------------------------------------------+
//|                                                     trade v1.mq4 |
//|                                           |
//|                                                 frixer@yandex.ru |
//+------------------------------------------------------------------+

//--- input parameters
//extern int       Время;
//extern int       Input;
//extern int       SL;
//extern int       TP;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   int bars = 9; // количество баров
   int gmt = 16; // время входа
   double input = 0.0010; // вход на рынок
   double sl = 100; // уровень SL от высоты коробки в %
   double tp = 100;
   int lot=1;
   int topOrder,bottomOrder;
   if (Hour()==gmt) // проверяем свечу
      {
         double Shift_high = iHighest(NULL,PERIOD_H1,MODE_HIGH,bars,0); //поиск бара с максимальной ценой из bars начиная с 0-го бара
         double Shift_low  = iLowest (NULL,PERIOD_H1,MODE_LOW ,bars,0); //поиск бара с минимальной  ценой из bars начиная с 0-го бара
         double Price_high = iHigh   (NULL,PERIOD_H1,Shift_high); // присвоение переменной максимального значение цены
         double Price_low  = iLow    (NULL,PERIOD_H1,Shift_low);  // присвоение переменной минимального значение цены
         double Hinput = Price_high + input; // вверхняя граница входа
         double Linput = Price_low - input;  // нижняя граница входа
         double height_box = Price_high - Price_low; // высота коробки bars
         double volumeSL = height_box / 100 * sl; // уровень SL зависит от %
        
         
               topOrder=OrderSend(Symbol(),OP_BUYSTOP,lot,Hinput,3,Price_high-(height_box/100*sl),Price_high+(height_box/100*tp),"BUY",16384,0,Green);
                     if (topOrder<0)
                        {
                           Print("Верхний ордер ошибка #", GetLastError());
                           return(0);
                        }
      }
//----
   return(0);  
//----
   return(0);
  }
//+------------------------------------------------------------------+

Lo he probado así (me lo ha aconsejado mi amigo) pero no funciona.

         int Orerov=0;
         int Orderov_all = OrdersTotal();                                              // всего ордеров в терминале
            for (int n = 0;n<Orderov_all;n++)                                             // начало цикла перебора ордеров
            {
            if(OrderSelect(n,SELECT_BY_POS)==TRUE)                                  // выбран первый в списке ордер
            if(Comm == OrderComment())                                                // условие совпадения комментария
               {
                Tip= OrderType();                                                    // тип      
                Cena=NormalizeDouble(OrderOpenPrice(),4);                           // цена      
                Ticket= OrderTicket();                                               // тикет     
                Stop=NormalizeDouble(OrderStopLoss(),4);                            // стоп-лосс
                LOT=NormalizeDouble(OrderLots(),1);                                 // размер лота
                Orderov=1;                                                          //
               }
             }
 
frixer:
Hola a todos, Feliz Año Nuevo. No encuentro ninguna forma de realizar un pedido sólo una vez, si se cumple la condición después de la cual se realiza el pedido, entonces si hay un pedido por segunda vez no se realizará. Si puede dar un ejemplo.

if (OrdersTotal() > 0) {
   return(0);
}
// Если установлен хоть один ордер, то никакой код после этого комментария уже не выполнится
 
Reshetov:
La raíz de la décima potencia de 6, luego restar 1 y multiplicar por 100. Obtenemos un 19,62% al año.

Gracias.

 
Reshetov:

Gracias...
 

De todos modos, esta es la pregunta,

Tengo un indicador multiperiodo.

Para optimizar los cálculos, utilizo el siguiente bucle



// TimeFrames[i] массив с периодами

for (i=0; i<NumTimeFrames; i++)

{
if (total_bars[i] != iBars(instrument, TimeFrames[i]) )
{

// тут вычисления индиктора

total_bars[i] = iBars(instrument, TimeFrames[i]);
}

}



El principal problema es que iBars no carga los precios de otros períodos que no sean el actual...

todos los trucos de MQL como IndicatorCounted y RefreshRates

sólo funcionan para el período actual, es decir, iBars toma del historial y éste sólo se carga al cambiar el período en el gráfico. ¿Qué hacer? ¿Tiene MQL alguna herramienta para cargar barras de otros periodos (diferentes al actual) en segundo plano?


p.d. espero no estar divagando ((
 
palladin:

El principal problema es que iBars no carga los precios para un periodo distinto al actual...

Su principal problema es que iBars no carga los precios, sino el número de barras conocidas para un periodo determinado. Y, como acabo de comprobar, lo hace bastante correctamente tanto en el probador como en el gráfico.