[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 401

 

hoz:

1. Если эксперт снять с графика тоже поступит команда ТРУ от IsStopped() ?

2. d.h. häufiger nur beim Entfernen von Eulen oder Skripten aus der Karte, gibt es einen anderen Grund für die Auslösung dieser Funktion?

3. Wo kann ich darüber lesen?

4. und im Körper der Funktion bereits eine Bedingung erstellen, wenn die Bedingung erfüllt ist, dann ist IsStopped() = true, richtig?

1. Ja.

2. ich weiß nur, wie man die Karte abnimmt.

3. ich weiß es nicht.

4. Ja, es kann und wird funktionieren.

 
4. ?
 
tara:
4. ?

?
 
tara:
4. ?

Ich habe die Frage wohl missverstanden. Wenn Sie IsStopped()=true selbst einstellen, ist das nicht möglich.
 
hoz:

?

Zeigen Sie mir die Umsetzung, denn ich kann mir nicht einmal vorstellen, dass es sich um ein quadratisches Trinom handelt.
 
Integer:

Ich habe die Frage wohl missverstanden. Wenn Sie IsStopped()=true selbst einstellen, ist dies nicht möglich.

Das ist alles. Die Frage ist damit vom Tisch.
 
Integer:

Ich habe die Frage wohl missverstanden. Wenn Sie IsStopped()=true selbst einstellen, ist es unmöglich.


Das ist verständlich. Ich wollte es nicht selbst tun. Wenn etwas in der Schleife ausgeführt wird, wird es so lange ausgeführt, bis der Expert Advisor oder das Skript aus dem Diagramm entfernt wird, und dementsprechend wird zu diesem Zeitpunkt ein Befehl an den Server gesendet:

IsStoped() = true;

Ich habe Funktionen geöffnet, die von TarasBy geschrieben wurden (ich schreibe meine selbst, aber ich schaue mir das regelmäßig an, denn er hat einen interessanten Ansatz). Dort hat er also eine solche Funktion:

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Запускаем в цикл получение рыночной цены.                                  |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fGet_TradePrice (int fi_Price,           // Цена: 0 - Bid; 1 - Ask
                        bool fb_RealTrade,      // реальная торговля или оптимизация\тестирование
                        string fs_Symbol = "")  // валютная пара
{
    double ld_Price = 0.0;
//----
    if (fs_Symbol == "")
    {
       fs_Symbol = Symbol();
    }
    //RefreshRates();
    switch (fi_Price)
    {
       case 0:
          if (fb_RealTrade)
          {
             while (ld_Price == 0.0)
             {
                if (fs_Symbol == Symbol())
                {
                   ld_Price = Bid;
                }
                else
                {
                   ld_Price = MarketInfo (fs_Symbol, MODE_BID);
                }
                if (!IsExpertEnabled() || IsStopped())
                {
                   break;
                }
                Sleep (50);
                RefreshRates();
             }
          }
          else
          {
             if (fs_Symbol == Symbol())
             {
                return (Bid);
             }
             else
             {
                return (MarketInfo (fs_Symbol, MODE_BID));
             }
          }
          break;
       case 1:
          if (fb_RealTrade)
          {
             while (ld_Price == 0.0)
             {
                if (fs_Symbol == Symbol())
                {
                   ld_Price = Ask;
                }
                else
                {
                   ld_Price = MarketInfo (fs_Symbol, MODE_ASK);
                }
                if (!IsExpertEnabled() || IsStopped())
                {
                   break;
                }
                Sleep (50);
                RefreshRates();
             }
          }
          else
          {
             if (fs_Symbol == Symbol())
             {
                return (Ask);
             }
             else
             {
                return (MarketInfo (fs_Symbol, MODE_ASK));
             }
          }
          break;
   }
//----
   return (ld_Price);
}

Ich frage mich, warum es eine Bedingung gibt?

if (!IsExpertEnabled() || IsStopped())

Wir erhalten sofort BID und dann werden die Flags der Funktionen IsStopped( ) und IsExpertEnabled() überprüft. Wo ist die Logik? Meiner Meinung nach ist es einfacher, alles auf einmal zu überprüfen und, wenn etwas nicht stimmt, die Funktion zu beenden.

Dann haben wir den Befehl RefreshRates(). Am Anfang wurden die Marktdaten nicht aktualisiert, und am Ende, als wir die Daten der BID-Variablen bereits erhalten hatten, wurden sie aktualisiert. Entweder denke ich falsch oder der Autor hat eine bestimmte Denkweise, die nicht mit meiner übereinstimmt. Was ist der Sinn?

 
hoz:

Ich habe Funktionen entdeckt, die von TarasBy geschrieben wurden (ich schreibe meine eigenen, aber ich überprüfe sie von Zeit zu Zeit, da er einen interessanten Ansatz hat). Er hat dort also eine solche Funktion:

Ich frage mich, warum es eine Bedingung gibt?

Wir erhalten sofort BID und dann werden die Flags der Funktionen IsStopped( ) und IsExpertEnabled() überprüft. Wo ist die Logik? Meiner Meinung nach ist es einfacher, alles auf einmal zu überprüfen und, wenn etwas nicht stimmt, die Funktion zu beenden.

Dann haben wir den Befehl RefreshRates(). Am Anfang wurden die Marktdaten nicht aktualisiert, und am Ende, als wir die Daten der BID-Variablen bereits erhalten hatten, wurden sie aktualisiert. Entweder denke ich falsch oder der Autor hat eine bestimmte Denkweise, die nicht mit meiner übereinstimmt. Was ist der Grund?

Vielleicht wird Igor morgen antworten...

Ich hätte das getan:

switch (fi_Price)
 {
  case 0: return(MarketInfo(fs_Symbol, MODE_BID));
  case 1: return(MarketInfo(fs_Symbol, MODE_ASK));
 }

Alles andere ist meiner Meinung nach überflüssig.
 

Grüße an alle!

Können Sie mir sagen, ob es möglich ist, einem EA beizubringen, sich auf den zuletzt ausgelösten Alarm zu beziehen?

 
Zhunko:

Vielleicht wird Igor morgen antworten...

Ich würde das tun:

Alles andere ist meiner Meinung nach überflüssig.


Vadim, ich hätte genau das getan, was du geschrieben hast! Deshalb habe ich die Frage gestellt. Ich dachte, vielleicht habe ich etwas übersehen. Ich beobachte immer noch meine eigene Logik und die der anderen Programmierer. Denn ich sehe, dass ich neben der grundlegenden Logik noch eine Reihe von Faktoren berücksichtigen muss.