[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 477

 

Se, por exemplo, 10 anos o lucro em uma conta comercial foi de 500% (os números são nocionais) -
como calcular o lucro médio anual, levando também em conta que todos os lucros são reinvestidos?
Obrigado!

 
frixer:
Olá a todos, Feliz Ano Novo. Não consigo encontrar nenhuma maneira de fazer um pedido apenas uma vez, se a condição for cumprida após a qual o pedido é feito, então se houver um pedido pela segunda vez ele não será feito. Gostaria de lhes dar um exemplo.

O exemplo do livro didático é o seu caso.
 
atztek:

Se, por exemplo, 10 anos o lucro em uma conta comercial foi de 500% (os números são nocionais) -
como calcular o lucro médio anual, levando também em conta que todos os lucros são reinvestidos?
Obrigado!

A raiz quadrada de 6, depois subtrair 1 e multiplicar por 100. Você recebe 19,62% por ano.
 
Desça
 
Roman.:

O exemplo do tutorial é o seu caso.

Eu o li, mas não funciona com meu algoritmo e ainda tenho pedidos em cada carrapato.

//+------------------------------------------------------------------+
//|                                                     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);
  }
//+------------------------------------------------------------------+

Eu tentei desta maneira (meu amigo me aconselhou), mas não 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:
Olá a todos, Feliz Ano Novo. Não consigo encontrar nenhuma maneira de fazer um pedido apenas uma vez, se a condição for cumprida após a qual o pedido é feito, então se houver um pedido pela segunda vez ele não será feito. Se você puder dar um exemplo.

if (OrdersTotal() > 0) {
   return(0);
}
// Если установлен хоть один ордер, то никакой код после этого комментария уже не выполнится
 
Reshetov:
A raiz da décima potência de 6, depois subtrair 1 e multiplicar por 100. Recebemos 19,62% por ano.

Obrigado!

 
Reshetov:

Obrigado...
 

De qualquer forma, eis a questão,

Tenho um indicador multiperíodo.

A fim de otimizar os cálculos, utilizo o seguinte laço



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

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

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

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

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

}



O principal problema é que o iBars não carrega preços de períodos que não sejam os atuais...

todos os truques da MQL como IndicatorCounted e RefreshRates

somente trabalho para o período atual, ou seja, iBars tira do histórico e o histórico só é carregado alterando o período no gráfico. O que fazer? A MQL tem alguma ferramenta para carregamento de barras de outros períodos (diferente da atual) em segundo plano?


p.s. espero não estar divagando ((
 
palladin:

O principal problema é que o iBars não carrega os preços por um período que não seja o atual...

Seu principal problema é que o iBars não carrega preços, mas o número de barras conhecidas para um determinado período. E, como acabo de verificar, ele o faz muito corretamente tanto no testador como no gráfico.
Razão: