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

 
artmedia70:

int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

Gibt den Index des höchsten gefundenen Wertes zurück (Offset relativ zum aktuellen Takt).
Parameter:
Symbol - Name des Symbols, dessen Daten durchsucht werden sollen. NULL bedeutet aktuelles Symbol.
Zeitrahmen - Zeitraum. Kann eine der Perioden eines Diagramms sein. 0 zeigt die Periode des aktuellen Diagramms an.
Typ - Der Bezeichner der Zeitreihe. Kann einer der Zeitreihenbezeichner sein.
zählen - Anzahl der Elemente der Zeitreihe (in Richtung vom aktuellen Takt zum aufsteigenden Index), unter denen die Suche durchgeführt werden soll.
Start - Der Index (Offset vom aktuellen Takt) des Starttaktes, ab dem die Suche nach dem höchsten Wert beginnt. Negative Werte werden ignoriert und durch einen Nullwert ersetzt.
Beispiel:


Ich danke Ihnen vielmals. Ich glaube nicht, dass es noch weitere Fragen geben wird.
 
ask:

Was einem Menschen unklar sein könnte - ich weiß es nicht. Ich weiß auch nicht, was die Ursache für die Aggression und die Grobheit war (sie hätten es einfach ignorieren können), ob andere darauf reagiert hätten oder ob er sich selbst erholt hätte - ist das für Sie dasselbe?

Sie sollten nicht so über Alexej denken. Er ist einer der wohlwollendsten Menschen hier. Er wollte Sie nicht beleidigen. Jeder wird zu einem Telepathen geschickt, wenn er das Problem nicht versteht. Es ist ein lokaler Witz mit Bedeutung.
 
Reshetov:

Hier sind sie (es gibt noch viel mehr Fehler in Ihrem Code, aber diese werden es nicht einmal durch den Compiler schaffen): Außerdem, selbst wenn Sie den Code in etwas ändern, das aus der Sicht des Compilers vernünftiger ist

ohne vorherige Normalisierung der realen Werte vor dem Vergleich theoretisch immer noch falsch sein. Außerdem kann die Normalisierung fehlschlagen, wenn sich der Preis innerhalb eines Ticks um mehr als einen Pip ändert und Ihre Bedingung nicht erfüllt wird.

Der korrekte Weg für die Suche nach der Kreuzungsbedingung ist


P.S. Es ist recht einfach, die Stelle mit dem Fehler nach der Kompilierung im MetaTrader zu finden:

1. Geben Sie auf der Registerkarte "Toolbox" in der Spalte "Datei" die Zeilennummer und die Nummer des Symbols an, in dem der Compiler einen Fehler entdeckt hat, getrennt durch Kommata.

2. Wenn Sie auf die Fehlermeldung im Feld "Beschreibung" auf derselben Registerkarte doppelklicken, springt der Cursor des Editors an die Stelle, an der der Compiler genau diesen Fehler entdeckt hat.


Vielen Dank für die Tipps.

 
Guten Tag und Respekt an alle Forumsmitglieder! Wenn Sie können, beraten Sie bitte - wenn Sie die Plattform ausschalten, werden die Daten aus dem Magazin zwangsläufig gelöscht, richtig? Und wie schreibt man Ausdrucke oder andere Ausgabedaten aus dem Expert Advisor, so dass sie beim Ausschalten des Computers in einem Notizblock oder anderswo gespeichert werden? Ist das nicht zu kompliziert und ist es möglich?
 
dkfl.zrjdktdbx:
Guten Tag und Respekt an alle Forumsmitglieder! Wenn Sie können, beraten Sie bitte - wenn Sie die Plattform ausschalten, werden die Daten aus dem Magazin zwangsläufig gelöscht, richtig? Und wie schreibt man Ausdrucke oder andere Ausgabedaten aus dem Expert Advisor, so dass sie beim Ausschalten des Computers in einem Notizblock oder anderswo gespeichert werden? Ist das nicht zu kompliziert und ist es möglich?
Nun, wenn Sie sich die Protokolle im Programmordner ansehen, werden Sie dort eine Menge interessanter Dinge finden.
 
Ich danke Ihnen!
 
Können Sie mir sagen, wie ich einen möglichen Verlust in der Währung des Depots berechnen kann, indem ich einen Eröffnungskurs und einen Stop-Loss-Kurs habe?
 
sss2019:
Sagen Sie mir, wie ich einen möglichen Verlust in der Währung des Depots mit dem Eröffnungskurs des Auftrags und dem Stop-Loss-Kurs berechnen kann.
//--------------------------------------------------------------------
// Функция модификации StopLoss всех ордеров указанного типа
// Глобальные переменные:
// Mas_Ord_New             Массив ордеров последний известный
// int TralingStop         Значение TralingStop(количество пунктов)
//--------------------------------------------------------------------
void SampleTrailing_texbook ( int Tip, double V_StopLossPips, double V_TakeProfitPips)
  {
   int Ticket;                      // Номер ордера
   double
   Price,                           // Цена открытия рыночного ордера
   TS,                              // TralingStop (относит.знач.цены)
   SL,                              // Значение StopLoss ордера
   TP;                              // Значение TakeProfit ордера
   double difference; //разность в пунктах    
   double Profit;
   
   bool Modify;                     // Признак необходимости модифи.
//----------------------------------------------------------------------
      PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));      
      Print("PointValue = ",PointValue, " Point  = ", DoubleToStr(Point, Digits) );
      Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL ); // мин уровень трала
      Modify=false;                       // Пока не назначен к модифи
      
      Price = OrderOpenPrice();           // Цена открытия ордера
      SL    = V_StopLossPips;             // Значение StopLoss ордера
      TP    = V_TakeProfitPips;           // Значение TakeProft ордера
      Ticket= OrderTicket();              // Номер ордера
      
      if (TralingStop<Level_new)          // Если меньше допустимого..
         TralingStop=Level_new;           // .. то допустимый
         TS=TralingStop*Point;            // То же в относит.знач.цены
      //-----------------------------------------------------------------
      switch(Tip)                         // Переход на тип ордера
        {
         case 0 :                         // Ордер Buy
            difference = NormalizeDouble (Bid-TS - OrderOpenPrice(), Digits)/Point;               
            Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit)
            if (trlinloss==false){         // тралим только профит
               if (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз 
                 if (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits) && NormalizeDouble(Price,Digits)< NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
            } 
             else {                         // тралим с зоны лоссов
               if (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
             } 
            break;                        // Выход из switch
         
         
         case 1 :                          // Ордер Sell
             difference = NormalizeDouble (OrderOpenPrice()-(Ask+TS),Digits)/Point;
             Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit)             
             if (trlinloss==false) {          // тралим с уровня профита по ордеру
                if (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз            
                   if ((NormalizeDouble(SL,Digits)>  // Если выше желаемого..
                        NormalizeDouble(Ask+TS,Digits)||
                        NormalizeDouble(SL,Digits)==0) && NormalizeDouble(Price,Digits)>NormalizeDouble(Ask+TS,Digits)) //.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
            }            
            else {                        // тралим с зоны лоссов
          
            if (NormalizeDouble(SL,Digits)>// Если выше желаемого..
               NormalizeDouble(Ask+TS,Digits)||
               NormalizeDouble(SL,Digits)==0)//.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify=true;               // Назначен к модифи.
              }
            }  
        }                                 // Конец switch
      if (Modify==false)                  // Если его не надо модифи..
         return;                        // ..то идём по циклу дальше
      bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его!
      //----------------------------------------------------------------------
      if (Ans==false)                     // Не получилось :( 
        {                                 // Поинтересуемся ошибками:
            Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError());
            return;                       // .. то уходим.
        }
}                                         // Выход из пользов. функции


Diese Händlervorstellung aus dem Lehrbuch wurde von mir für meine eigenen Bedürfnisse umgestaltet. Hier wird die Berechnung des Gewinns für ein bestimmtes Volumen von Losen, auf der Ebene des Schleppnetzes und der Wert des Gewinns über den Gesamtverlust der vorherigen geschlossenen aufeinanderfolgenden Verlustpositionen - das Schleppnetz ist aktiviert - Sie haben alles ähnlich, nur um nicht einen Gewinn, wie hier, sondern einen Verlust - wie Sie brauchen.

Achten Sie auf die Berechnung der Kauf- und Verkaufsvariablen:

double difference; //разность в пунктах    
double Profit; 
PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));
Machen Sie alles auf dieselbe Art und Weise und das war's.
 
Ich verstehe also immer noch nicht, wie ich den Punktwert in der Einzahlungswährung herausfinden kann?
 
sss2019:
Ich verstehe also immer noch nicht, wie ich den Punktwert in der Einzahlungswährung herausfinden kann?

siehe diese Berechnung - ANALOG machen. Alles.
Grund der Beschwerde: