Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 229

 
splxgf:
Ich sehe keine Probleme in diesem Bereich, außer dass BuyCount auf Null zurückgesetzt werden muss.


Ich setze den Nullpunkt genau darüber. Sie ist im kopierten Abschnitt nicht angegeben.

Aber EAs aller Paare stapeln ihre Aufträge dort und arbeiten ihre Logik aus dem Betrag heraus.

Ich kann nicht verstehen, warum meine ***Count-Variablen als global funktionieren.

Die Logik funktioniert im Strategy Tester korrekt.

In der Demo funktioniert es einwandfrei. Zwei Paare und mehr, die alle zusammen dieselbe Logik ausführen.

 
Sepulca:


Die Klammern fehlen....


Klammern scheinen in Ordnung zu sein.

Der vollständige Abschnitt sieht wie folgt aus:

void FindOrders()  
{
//--------------------------Стартовые данные---------------------------------------------
//Обьемы ордеров     //Количество ордеров   //Средение цены ордеров  //Прибыль ордеров
BuyLots =0;          BuyCount = 0;          BuyAP = 0;               BuyProfit = 0;
SellLots = 0;        SellCount = 0;         SellAP = 0;              SellProfit = 0; 
SellStopLots = 0;    SellStopCount = 0;     SellStopAP = 0;          SellStopProfit = 0; 
BuyStopLots = 0;     BuyStopCount = 0;      BuyStopAP = 0;           BuyStopProfit = 0; 
SellLimitLots = 0;   SellLimitCount = 0;    SellLimitAP = 0;         SellLimitProfit = 0; 
BuyLimitLots = 0;    BuyLimitCount = 0;     BuyLimitAP = 0;          BuyLimitProfit = 0; 
LotLastBuy = 0;      LotLastSell = 0;       BuyFirst =0;             SellFirst=0;
//--------------------------Окончание блока----------------------------------------------

//--------------------------Поиск ордеров------------------------------------------------
RefreshRates();
for(int cnt = 0; cnt < OrdersTotal(); cnt ++)                  //Для всехоткрытых ордеров
 {
  OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);      // Выбираем со всего масива ордеров
  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта
   CommonProfit += OrderProfit()+OrderSwap();              // Подсчет совокупного профита
   if(OrderType()==OP_BUY)                                              
    {
     BuyTicket = OrderTicket();                                      // Сохранение тикета
     BuyLots += OrderLots();                                  // Общий обьем Всех позиций  
     BuyAP += OrderOpenPrice()*OrderLots();          // Средневзвешаная цена всех позиций  
     BuyLow = MathMin(BuyLow,OrderOpenPrice());                             // Нижний BUY     
     BuyFirst = MathMin(BuyFirst, OrderOpenTime());          // нахождение первой позиции 
     BuyLast = MathMax(BuyLast, OrderOpenTime());        // нахождение последнего позиции      
     BuyHigh = MathMax(BuyHigh, OrderOpenPrice());                         // Верхний BUY
     BuyProfit += OrderProfit()+OrderSwap();                           // Подсчет профита
     BuyCount++;                                                    // Количество ордеров
     LotLastBuy = MathMax(LotLastBuy, OrderLots());       // Поиск наибольшего объема BUY   
    }
   if (OrderType() == OP_SELL)
    {
     SellTicket = OrderTicket();                                     // Сохранение тикета
     SellLots += OrderLots();                                           // Подсчет объема
     SellAP += OrderLots()*OrderOpenPrice();                   // Вычисление средней цены
     SellFirst = MathMin(SellFirst, OrderOpenTime());        // нахождение первой позиции 
     SellLast = MathMax(SellLast, OrderOpenTime());         // нахождение позднего ордера
     SellHigh = MathMax(SellHigh, OrderOpenPrice());                      // Верхний SELL
     SellLow = MathMin(SellLow, OrderOpenPrice());                         // Нижний SELL
     SellProfit += OrderProfit()+OrderSwap();                          // Подсчет профита
     SellCount++;                                                   // Количество ордеров
     LotLastSell = MathMax(LotLastSell, OrderLots());    // Поиск наибольшего объема SELL   
    }           
   if (OrderType() == OP_SELLSTOP)
    {
     SellStopTicket  = OrderTicket();                                // Сохранение тикета
     SellStopLots += OrderLots();                                       // Подсчет объема
     SellStopAP += OrderLots()*OrderOpenPrice();               // Вычисление средней цены
     SellStopLast = MathMax(SellStopLast,OrderOpenTime());  // нахождение позднего ордера
     SellStopHigh = MathMax(SellStopHigh,OrderOpenPrice());               // Верхний SELL
     SellStopLow = MathMin(SellStopLow,OrderOpenPrice());                  // Нижний SELL
     SellStopProfit += OrderProfit()+OrderSwap();                      // Подсчет профита
     SellStopCount++;                                               // Количество ордеров
    }             
   if (OrderType() == OP_BUYSTOP)
    {
     BuyStopTicket = OrderTicket();                                  // Сохранение тикета
     BuyStopLots += OrderLots();                                        // Подсчет объема
     BuyStopAP += OrderLots()*OrderOpenPrice();                // Вычисление средней цены
     BuyStopLast = MathMax(BuyStopLast,OrderOpenTime());     //нахождение позднего ордера
     BuyStopHigh = MathMax(BuyStopHigh,OrderOpenPrice());                  // Верхний BUY
     BuyStopLow = MathMin(BuyStopLow, OrderOpenPrice());                    // Нижний BUY
     BuyStopProfit += OrderProfit()+OrderSwap();                       // Подсчет профита
     BuyStopCount++;                                                // Количество ордеров
    }             
   if (OrderType() == OP_SELLLIMIT)
    {
     SellLimitTicket = OrderTicket();                                // Сохранение тикета
     SellLimitLots += OrderLots();                                      // Подсчет объема
     SellLimitAP += OrderLots()*OrderOpenPrice();              // Вычисление средней цены
     SellLimitLast = MathMax(SellLimitLast,OrderOpenTime()); //нахождение позднего ордера
     SellLimitHigh = MathMax(SellLimitHigh,OrderOpenPrice());             // Верхний SELL
     SellLimitLow = MathMin(SellLimitLow, OrderOpenPrice());               // Нижний SELL
     SellLimitProfit += OrderProfit()+OrderSwap();                     // Подсчет профита
     SellLimitCount++;                                              // Количество ордеров
    }             
   if (OrderType() == OP_BUYLIMIT)
    {
     BuyLimitTicket = OrderTicket();                                 // Сохранение тикета
     BuyLimitLots += OrderLots();                                       // Подсчет объема
     BuyLimitAP += OrderLots()*OrderOpenPrice();               // Вычисление средней цены
     BuyLimitLast = MathMax(SellLimitLast,OrderOpenTime());  //нахождение позднего ордера
     BuyLimitHigh = MathMax(SellLimitHigh,OrderOpenPrice());               // Верхний BUY
     BuyLimitLow = MathMin(SellLimitLow, OrderOpenPrice());                 // Нижний BUY
     BuyLimitProfit += OrderProfit()+OrderSwap();                      // Подсчет профита
     BuyLimitCount++;                                               // Количество ордеров
    }
 }
//--------------------------Окончательное вычисление средних цен-------------------------

if (BuyLots != 0)       // Если есть ордера BUY, то вычисляется их средняя цена открытия
    BuyAP /= BuyLots;      

if (SellLots != 0)     // Если есть ордера SELL, то вычисляется их средняя цена открытия
    SellAP /= SellLots;      

 if (NormalizeDouble(MathAbs(BuyLots - SellLots), 3) != 0)// Если есть совокупная позиция
   {                                          // то вычисляется ее уровень безубыточности
    APrice = (BuyAP*BuyLots - SellLots*(SellAP - Spread))/(BuyLots - SellLots);  
    if (BuyLots > SellLots)                                   // Поправка для BUY - вверх
      APrice = MathCeil(APrice/Tick)*Tick;
     else                                                     // Поправка для SELL - вниз
      APrice = MathFloor(APrice/Tick)*Tick;
    if (BuyCount == 0)       // Если присутствуют только BUY, то совокупная цена равна их
      APrice = SellAP;                                                   //  средней цене
    if (SellCount == 0)     // Если присутствуют только SELL, то совокупная цена равна их
      APrice = BuyAP;                                                    //  средней цене
   }

}
//--------------------------Окончание блока----------------------------------------------
 
Limita:


Mit den Klammern scheint alles in Ordnung zu sein.

Der vollständige Abschnitt sieht wie folgt aus:

if(OrderType()==OP_BUY) funktioniert es für Aufträge auf jedem Charakter und für jeden Magier! Ich habe doch gesagt, dass es nicht genug Klammern gibt!

  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта ДЛЯ ДАННОГО IF
   CommonProfit += OrderProfit()+OrderSwap();              // Подсчет совокупного профита  СРАБАТЫВАЕТ ТОЛЬКО ЭТОТ ОПЕРАТОР
   if(OrderType()==OP_BUY)                                                              А ЭТО СРАБОТАЕТ БЕЗ УЧЁТА SYMBOL() И MAGIC



 

Dankeschön

Bringen wir es in Ordnung

 
Guten Tag. Können Sie jemanden beraten, der sich mit Statistik auskennt, ich bin verwirrt. Ich muss die aktuelle Preisreihe in eine logarithmische Skala umwandeln. Dazu muss ich nur diese Berechnung durchführen und das ist alles?
for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i]);
      }
Der Grund für die Frage ist, dass ich überall gelesen habe, dass man sich den Dow-Jones-Chart für die gesamte Geschichte ansehen soll, um zu sehen, wie sich die Ansicht auf der logarithmischen Skala von der absoluten Skala unterscheidet. Und bei mir sind sie optisch fast gleich, d.h. es gibt natürlich Unterschiede, aber nicht so viel wie bei den Beispielen.
 
Desead:
Guten Tag. Wer kennt sich mit Statistiken aus, denn ich bin verwirrt. Ich muss die aktuelle Preisreihe in eine logarithmische Skala umwandeln. Ich muss nur diese Berechnung durchführen und alle ? Der Grund für die Frage ist, dass ich überall gelesen habe, dass man sich den Dow-Jones-Chart für die gesamte Geschichte ansehen soll, um zu sehen, wie sich der Blick auf die logarithmische Skala von der absoluten Skala unterscheidet. Und bei mir sind sie optisch fast gleich, d.h. es gibt natürlich Unterschiede, aber nicht so viel wie bei den Beispielen.


aus dem Handbuch - MathLog ist der natürliche Logarithmus - aber Sie scheinen den dezimalen Logarithmus zu benötigen ????

for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i])/MathLog(10);
      }
 
ALXIMIKS:


aus dem Handbuch - MathLog ist der natürliche Logarithmus - aber Sie brauchen die Dezimalzahl eins????


Das Dezimalsystem ist nicht hilfreich. Das wird die Aussicht nicht ändern.
 

Bitte helfen Sie mir, entweder einen Code (ich glaube, ich bin nicht der erste, der dieses Problem stellt) oder einen Algorithmus zur Berechnung der folgenden Parameter zu finden:

Das Problem ist folgendes: In Expert Advisor ist es notwendig, das Gewinnniveau (sowohl offene als auch schwebende Aufträge, die später eröffnet werden) auf einem bestimmten Preisniveau (z.B. auf Unterstützungs- oder Widerstandsniveaus) zu berechnen, und zwar sowohl für ein bestimmtes Symbol als auch für alle offenen Positionen (für Cross-Rates ist geplant, den Gewinn auf Basis der aktuellen Preise zu berechnen).

Ich stand vor den folgenden Problemen:

Wie sich herausstellte, ist die Losgröße bei den verschiedenen Maklerfirmen unterschiedlich (z.B. hat instaforex 10 000 Basiswährungseinheiten und nicht 100 000, wie es angenommen wird). Daher die Frage: Wie kann ich die Losgröße in Währungseinheiten ermitteln?

Aus diesem Grund kann ich keine klare Formel für die Berechnung des Wertes eines Pips (und des entsprechenden Gewinns) und für die Umrechnung des Gewinns von der Basiswährung (für Cross-Rates) in die Währung der Einlage finden.

Ich würde gerne einen Artikel über Gewinnberechnung und -prognose lesen (schicken Sie mir einen Link), denn ich habe das Gefühl, dass ich in diesem Bereich eine Wissenslücke habe (mein Kopf ist ein einziges Chaos .... pip value... cross rates... wo mit dem Wert eines Pip zu multiplizieren und wo zu dividieren ist... Brrrr... grausam)

 
Es spielt keine Rolle, welche es ist. Der Logarithmus wandelt absolute Werte in relative Werte um, und es spielt keine Rolle, was seine Basis ist, so wie ich es verstehe. Die Hauptsache ist, dass man versteht, wie man es richtig macht, um die prozentuale Veränderung des Preises im Indikator zu sehen.
 

Heute, bei der Verwendung des Fibonacci-Fans, hat sich das Terminal 4 von selbst geschlossen.

Keine Fehler, kein Hängenbleiben, das Terminal war einfach nur da - und in der nächsten Sekunde verschwunden.

Frage: Wie kann ich die Ursache dieses Wunders herausfinden? Werden kritische Fehler irgendwo protokolliert?