[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 477

 

Wenn z.B. 10 Jahre lang der Gewinn auf einem Handelskonto 500% beträgt (die Zahlen sind fiktiv).
Wie lässt sich der durchschnittliche Jahresgewinn berechnen, wobei auch zu berücksichtigen ist, dass alle Gewinne reinvestiert werden?
Ich danke Ihnen!

 
frixer:
Hallo zusammen, frohes neues Jahr. Ich kann keine Möglichkeit finden, einen Auftrag nur einmal zu erteilen, wenn die Bedingung erfüllt ist, nach der der Auftrag erteilt wird, dann, wenn es einen Auftrag für das zweite Mal wird es nicht erteilt werden. Ich möchte Ihnen ein Beispiel geben.

Das Beispiel aus dem Lehrbuch ist Ihr Fall.
 
atztek:

Wenn z.B. 10 Jahre lang der Gewinn auf einem Handelskonto 500% beträgt (die Zahlen sind fiktiv).
Wie lässt sich der durchschnittliche Jahresgewinn berechnen, wobei auch zu berücksichtigen ist, dass alle Gewinne reinvestiert werden?
Ich danke Ihnen!

Die Quadratwurzel aus 6, dann 1 subtrahieren und mit 100 multiplizieren. Sie erhalten 19,62 % pro Jahr.
 
Nach unten gehen
 
Roman.:

Das Beispiel aus dem Lernprogramm ist Ihr Fall.

Ich habe es gelesen, aber es funktioniert nicht mit meinem Algorithmus und ich habe immer noch Aufträge auf jedem 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);
  }
//+------------------------------------------------------------------+

Ich habe es auf diese Weise versucht (mein Freund hat mir dazu geraten), aber es funktioniert nicht.

         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:
Hallo zusammen, frohes neues Jahr. Ich kann eine Bestellung nicht nur einmal aufgeben, wenn die Bedingung erfüllt ist, nach der die Bestellung aufgegeben wird, brauche ich sie dann, wenn es eine Bestellung zum zweiten Mal gibt, wird sie nicht aufgegeben. Wenn Sie ein Beispiel nennen können.

if (OrdersTotal() > 0) {
   return(0);
}
// Если установлен хоть один ордер, то никакой код после этого комментария уже не выполнится
 
Reshetov:
Die Wurzel aus der zehnten Potenz von 6, dann subtrahiere 1 und multipliziere mit 100. Wir erhalten 19,62 % pro Jahr.

Ich danke Ihnen!

 
Reshetov:

Ich danke Ihnen...
 

Wie auch immer, hier ist die Frage,

Ich habe einen Mehrperioden-Indikator.

Um die Berechnungen zu optimieren, verwende ich die folgende Schleife



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

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

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

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

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

}



Das Hauptproblem ist, dass iBars keine Preise für andere Zeiträume als den aktuellen lädt...

alle MQL-Tricks wie IndicatorCounted und RefreshRates

funktionieren nur für die aktuelle Periode, d.h. iBars entnimmt die Historie und die Historie wird nur geladen, wenn man die Periode im Chart ändert. Was ist zu tun? Verfügt MQL über ein Werkzeug zum Laden von Balken anderer Zeiträume (anders als der aktuelle) im Hintergrund?


p.s. Ich hoffe, ich schweife nicht ab ((
 
palladin:

Das Hauptproblem ist, dass iBars keine Preise für einen anderen Zeitraum als den aktuellen lädt...

Ihr Hauptproblem ist, dass iBars nicht die Preise lädt, sondern die Anzahl der bekannten Balken für einen bestimmten Zeitraum. Und wie ich soeben überprüft habe, funktioniert es sowohl im Tester als auch in der Karte ganz korrekt.