[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 477

 

Se, per esempio, 10 anni il profitto su un conto di trading fosse del 500% (le cifre sono figurative) -
come calcolare il profitto medio annuo, tenendo anche conto che tutti i profitti sono reinvestiti?
Grazie!

 
frixer:
Ciao a tutti, felice anno nuovo. Non riesco a trovare un modo per piazzare un ordine solo una volta, se la condizione è soddisfatta dopo di che l'ordine viene piazzato, allora se c'è un ordine per la seconda volta non verrà piazzato. Vorrei farvi un esempio.

L'esempio del libro di testo è il tuo caso.
 
atztek:

Se, per esempio, 10 anni il profitto su un conto di trading fosse del 500% (le cifre sono figurative) -
come calcolare il profitto medio annuo, tenendo anche conto che tutti i profitti sono reinvestiti?
Grazie!

La radice quadrata di 6, poi sottrarre 1 e moltiplicare per 100. Si ottiene il 19,62% all'anno.
 
Spostarsi verso il basso
 
Roman.:

L'esempio del tutorial è il vostro caso.

L'ho letto ma non funziona con il mio algoritmo e ho ancora ordini su ogni 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);
  }
//+------------------------------------------------------------------+

Ho provato in questo modo (il mio amico me l'ha consigliato) ma non funziona.

         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:
Ciao a tutti, felice anno nuovo. Non riesco a trovare un modo per piazzare un ordine solo una volta, se la condizione è soddisfatta dopo di che l'ordine viene piazzato, allora se c'è un ordine per la seconda volta non verrà piazzato. Se può fare un esempio.

if (OrdersTotal() > 0) {
   return(0);
}
// Если установлен хоть один ордер, то никакой код после этого комментария уже не выполнится
 
Reshetov:
La radice della decima potenza di 6, poi sottrarre 1 e moltiplicare per 100. Otteniamo il 19,62% all'anno.

Grazie!

 
Reshetov:

Grazie...
 

Comunque, ecco la domanda,

Ho un indicatore multiperiodale.

Per ottimizzare i calcoli, uso il seguente ciclo



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

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

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

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

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

}



Il problema principale è che iBars non carica i prezzi di periodi diversi da quello attuale...

tutti i trucchi MQL come IndicatorCounted e RefreshRates

funziona solo per il periodo corrente, cioè iBars prende dalla storia e la storia viene caricata solo cambiando il periodo sul grafico. Cosa fare? MQL ha qualche strumento per caricare barre di altri periodi (diversi da quello corrente) in background?


p.s. spero di non aver divagato ((
 
palladin:

Il problema principale è che iBars non carica i prezzi di un periodo diverso da quello corrente...

Il tuo problema principale è che iBars non carica i prezzi, ma il numero di barre conosciute per un dato periodo. E, come ho appena controllato, lo fa abbastanza correttamente sia nel tester che sul grafico.
Motivazione: