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

 
Antonius:


Wo ist das Problem, es funktioniert.

 
r772ra:


Wo ist das Problem, es funktioniert.


Der Fehler lag nicht wirklich im Code, ich hätte einfach "Alle Ticks" anstelle von "Nach Eröffnungskursen" als Testmodell angeben sollen. Das ist natürlich eine lange Zeit für einen solchen Test.

Vielen Dank für die Hilfe! Tut mir leid, dass ich mir mit solchen Dummheiten Zeit gelassen habe)

 
Antonius:


Der Fehler lag wirklich nicht im Code, ich hätte einfach "Alle Ticks" anstelle von "Nach Eröffnungskursen" als Testmodell angeben sollen. Das ist natürlich eine lange Zeit für einen solchen Test.

Vielen Dank für die Hilfe! Entschuldigen Sie, dass ich mir mit solchen Dummheiten Zeit gelassen habe)

Zum Testen der Eröffnungskurse ersetzen Sie in den Zeilen 0 durch 1, um die Kerzenrichtung zu überprüfen. Aber dann wird es den ersten Balken betrachten, um die Richtung zu erkennen. Bei 0 haben Sie nur gleiche Eröffnungs- und Schlusskurse.
 

Sagen Sie mir, wie ich dem Experten beibringen kann, wie man die Daten richtig extrahiert:

Ich bitte ihn, den Wert des letzten Preises zu ermitteln. Er findet sie, gibt sie aber mit vier Dezimalstellen aus und rundet die fünfte ab. Das fünfte Zeichen sollte für den korrekten Betrieb des Roboters beachtet werden.

Außerdem wird der Durchschnittspreis ein wenig aufgerundet. Außerdem wird der Durchschnittspreis auf die vierte Stelle aufgerundet.

Mit dem Taschenrechner erhalte ich unterschiedliche Zahlen.

NormalizeDouble() hat versucht, anzuwenden, aber ich habe noch keine Ergebnisse erhalten.

int Oldticketnumber;
double Unused = 0;
int Ticketnumber = 0;
RefreshRates();
for(int cnt = OrdersTotal()-1; cnt >= 0; cnt --)               //Для всехоткрытых ордеров
 {
  if (OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))  // Выбираем со всего масива ордеров
  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта
   {
   if(OrderType()==OP_BUY)                                              
    {

     BuyAP += OrderOpenPrice()*OrderLots();          // Средневзвешаная цена всех позиций  
  
     Oldticketnumber = OrderTicket();                               // присваиваем тикеты
     if (Oldticketnumber > Ticketnumber)                         //  ищем последний тикет 
      {
      LastPrise = OrderOpenPrice();                         // присваиваем последнюю цену
      Unused = LastPrise;                                       // задаем цену переменной
      Ticketnumber = Oldticketnumber;                          // последный заданый тикет
      }
// далее по  тексту---------------------------------------------------------------------

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

 
Limita:

Sagen Sie mir, wie ich dem Experten beibringen kann, wie man die Daten richtig extrahiert:

Ich bitte ihn, den Wert des letzten Preises zu ermitteln. Er findet sie, gibt sie aber mit vier Dezimalstellen aus und rundet die fünfte ab. Das fünfte Zeichen sollte für den korrekten Betrieb des Roboters beachtet werden.

Außerdem wird der Durchschnittspreis ein wenig aufgerundet. Außerdem wird derDurchschnittspreis auf die vierte Stelle aufgerundet.

Mit dem Taschenrechner erhalte ich unterschiedliche Zahlen.

NormalizeDouble() hat versucht, anzuwenden, aber ich habe noch keine Ergebnisse erhalten.

Wo sehen Sie das alles?
 
artmedia70:
Wo sehen Sie das alles?


An der Rundung führt kein Weg vorbei. Aber die Frage, was die Rundung von der 5. oder 4.
in dem unten stehenden Code:

Comment("Средняя цена Buy ",BuyAP, " Sell ",SellAP, " Последняя цена " ,LastPrise);
                                                                              // принтуем
 
Limita:


An der Rundung führt kein Weg vorbei. Aber die Frage ist, ob man von der 5. oder der 4. Stelle aus runden soll
im untenstehenden Code:

Ich habe es auf diese Weise versucht

Comment("Средняя цена Buy ",DoubleToStr(BuyAP,5), " Sell ",DoubleToStr(SellAP,5), " Последняя цена " ,DoubleToStr(LastPrise,5));

string DoubleToStr( double value, int digits)
Konvertiert einen numerischen Wert in eine Textzeichenfolge, die die Zeichendarstellung der Zahl im angegebenen Genauigkeitsformat enthält.

 

Hallo zusammen, ich habe diese Aufgabe:

Bestimmen Sie das Erscheinen eines neuen Balkens (synthetisch) mit einem Minimum an Code und ohne Verwendung von Variablen, die an die Öffnungszeit des Balkens gebunden sind. Die Lösung lautet wie folgt:

if (Bid>Open[0] || Bid<Open[0]) return;
Was sind die möglichen Fallstricke bei der Verwendung im Tester und in der Demo?
 
dmitriy086:

Hallo zusammen, ich habe diese Aufgabe:

Bestimmen Sie das Erscheinen eines neuen Balkens (synthetisch) mit einem Minimum an Code und ohne Verwendung von Variablen, die an die Öffnungszeit des Balkens gebunden sind. Ich habe das Problem auf folgende Weise gelöst:

Was sind die möglichen Fallstricke bei der Verwendung im Tester und in der Demo?


Beim Handel mit synthetischen Instrumenten haben Sie nicht nur einen einzigen Balken für dieses Instrument, sondern eine Reihe von Instrumenten, für die Sie jeweils versuchen können, einen neuen Balken zu identifizieren. Je mehr Instrumente gehandelt werden, desto wahrscheinlicher ist ein Fehler oder ein zeitlicher Versatz, da der EA an einem Paar hängt und andere Ticks nur dann sieht, wenn ein Tick für dieses Instrument eintrifft.
Sie können globale Variablen verwenden, aber das hilft nicht viel, denn wenn Sie einen neuen Tick bei einem anderen Währungspaar ohne den Roboter verfolgen, können Sie immer noch nicht handeln, weil es keinen Tick bei Ihrem Paar gibt. Wenn Sie nicht über viele Instrumente verfügen, ist es am einfachsten, einen Roboter zu schreiben, der überall gleichzeitig präsent ist.

Weiß jemand, ob es möglich ist, nicht alle Pufferwerte in einem separaten Anzeigefenster anzuzeigen? Es ist diese weiße Linie in der oberen linken Ecke des Anzeigefensters, es ist ärgerlich, so viele unnötige Ziffern in den 8 verwendeten Puffern zu sehen.

 
Desead:


Weiß jemand, ob es möglich ist, nicht alle Puffer in einem separaten Anzeigefenster anzuzeigen? Dies ist die weiße Linie, die in der oberen linken Ecke des Anzeigefensters steht. Es ist ärgerlich, so viele unnötige Zahlen in den 8 verwendeten Puffern zu sehen.


Inite SetIndexLabel(...,"), aber der Puffer wird auch aus dem Datenfenster verschwinden.