Bitte erklären Sie mir, was an dieser Funktion falsch sein könnte? - Seite 5

 
Karputov Vladimir:
Sagen Sie uns lieber, was der Kundendienst Ihnen geraten hat - Sie haben ja weiter mit ihm gesprochen, nicht wahr?
Aus irgendeinem Grund klopfe ich nicht mehr als dreimal an eine geschlossene Tür. Keine einzige Antwort auf meine drei Kommentare... Und warum in die Leere schreien?
 
Alexey Viktorov:
Aus irgendeinem Grund klopfe ich nicht mehr als dreimal an eine geschlossene Tür. Nicht eine einzige Antwort auf meine drei Kommentare... Und warum in die Leere schreien?

CopyRates() auf jedem Tick, die auf M15 ausgeführt wird, unterstützt den History-Cache nach nicht-nativen Perioden (Zeitrahmen) (H1 und D1).

Und es ist auch möglich, statt Serien über CopyRates() zu kopieren, einfach die

SYMBOL_ZEIT

Letzte Angebotszeit

datetime

und diese Zeit nutzen, um festzustellen, ob es ein neuer Tag oder eine neue Stunde ist... In diesem Fall wird die Reihe nicht kopiert, sondern nur das Terminal abgefragt und eine einfache Zeitanalyse durchgeführt. Sie können auch ein informativeresSymbolInfoTick verwenden.

 
Karputov Vladimir:

CopyRates() in jedem Tick, der auf M15 läuft , unterstützt den History-Cache nach nicht-nativen Perioden (Zeitrahmen) (H1 und D1).

Und es ist auch möglich, statt Serien über CopyRates() zu kopieren, einfach die

SYMBOL_ZEIT

Letzte Angebotszeit

datetime

und diese Zeit nutzen, um festzustellen, ob es ein neuer Tag oder eine neue Stunde ist... In diesem Fall wird die Reihe nicht kopiert, sondern nur das Terminal abgefragt und eine einfache Zeitanalyse durchgeführt. Sie können auch das informativereSymbolInfoTick verwenden.

Vladimir, die Frage nach dem Ruckeln war nicht zufällig. In dem EA, in dem solche Probleme gefunden wurden, wird CopyRates() bei jedem Tick aufgerufen, so dass die Theorie des Ruckelns in der Geschichte darauf hinausläuft, die Katze an ihrem kausalen Platz zu zupfen... Ich will nicht unhöflich sein...

Und selbst jetzt, wo Sie verstanden haben, dass das Problem besteht, wird die Anwendung in SD hartnäckig weiter ignoriert. Ich bin nicht wirklich daran interessiert, eine Lösung wurde gefunden und man kann sich an andere Probleme gewöhnen und die Dummheit einiger Funktionen in Kauf nehmen, aber mein Wunsch, die CA über irgendwelche Probleme zu informieren, geht gegen Null.

Ich schreibe jetzt von einem anderen Computer, kein Code, aber Sie können es selbst überprüfen... Wie viele Tagesbalken gibt es Ihrer Meinung nach zwischen dem 27.06.2016 00:00:00 Uhr und dem 27.06.2016 00:00:00 Uhr?

Du denkst, dass Null??? Du liegst falsch, überprüfe es mit Bars() Dummheit, aber du kannst es einfach berücksichtigen, wenn nötig, und wenn sie daran denken, es zu reparieren... Nun, wir werden unseren eigenen Code reparieren...

 
Alexey Viktorov:

Vladimir, die Frage nach dem Ruckeln war nicht zufällig. In diesem EA, in dem solche Probleme festgestellt wurden, wird CopyRates() bei jedem Tick aufgerufen, so dass die Theorie des Zuckens der Geschichte darauf hinausläuft, die Katze am kausalen Ort zu zupfen... Betrachten Sie es nicht als unhöflich...

Und selbst jetzt, wo Sie das Problem erkannt haben, wird die Anwendung in der SD-Karte hartnäckig ignoriert. Es interessiert mich nicht wirklich, die Lösung ist gefunden, man kann sich an andere Probleme gewöhnen und sich die Dummheit bestimmter Funktionen vor Augen halten, aber der Drang, irgendwelche Probleme an die CA zu melden, geht schnell gegen Null.

Ich schreibe jetzt von einem anderen Computer, kein Code, aber Sie können es selbst überprüfen... Wie viele Tagesbalken gibt es Ihrer Meinung nach zwischen dem 27.06.2016 00:00:00 Uhr und dem 27.06.2016 00:00:00 Uhr???

Du denkst Null??? falsch, überprüfe mit Bars() Dumm, aber du kannst es einfach berücksichtigen, wenn nötig, und wenn du auf die Idee kommst, es zu reparieren... Nun, wir werden unseren eigenen Code reparieren...

Sie brauchen nichts zu erfinden - Sie haben einen EA OHNECopyRates() bereitgestellt.
 
Karputov Vladimir:
Sie brauchen nichts zu erfinden - Sie haben einen EA OHNE CopyRates() bereitgestellt.
Ich habe den Code gegeben, als noch keine Rede von Ruckeln war. Ich wiederhole, ich schreibe von einem Computer, wo ich keinen Code und MT5 installiert haben, so machen Sie bitte Änderungen selbst, nicht in der Funktion der Bestimmung eines neuen bar, aber vor seinem Aufruf in den Hauptcode OnTick(). und wiederholen Sie das Experiment.
 
Alexey Viktorov:
Ich habe den Code gegeben, als noch keine Rede von Ruckeln war. Ich wiederhole, ich schreibe von meinem PC aus, wo ich keinen Code habe und MT5 installiert ist. Deshalb bitte ich Sie, die Änderungen nicht in der Funktion vorzunehmen, die einen neuen Balken definiert, sondern vor ihrem Aufruf im OnTick()-Hauptcode und das Experiment erneut zu versuchen.

Wenn es einen Kodex gibt, gibt es auch ein Urteil. Wenn es keinen Code gibt, geht alles in den Kaffeesatzmodus. Wenn Sie am Computer sitzen, erstellen Sie einen Code mit meinen Empfehlungen

Forum zum Thema Handel, automatische Handelssysteme und Strategietester

Ich habe es versucht, und ich weiß nicht, was mit der Funktion falsch ist, werde ich versuchen, es als Ersatz für die Strategie zu verwenden, werde ich es als Eingabe für den Gewinn verwenden.

Karputov Vladimir, 2016.06.27 13:36

***

Oder Sie können CopyRates() verwenden, anstatt Serien zu kopieren, können Sie einfach die

SYMBOL_ZEIT

Letzte Angebotszeit

datetime

und diese Zeit nutzen, um festzustellen, ob es ein neuer Tag oder eine neue Stunde ist... In diesem Fall wird die Reihe nicht kopiert, sondern nur das Terminal abgefragt und eine einfache Zeitanalyse durchgeführt. Sie können auch ein informativeresSymbolInfoTick verwenden.


und überprüfen Sie es selbst.

 

Es ist mehr oder weniger wie folgt

datetime oldDay, oldHour;
MqlDateTime mqlDateTime;
MqlRates    mqlRates;
/*******************Expert initialization function*******************/
int OnInit()
{
   return(INIT_SUCCEEDED);
}/*******************************************************************/

/************************Expert tick function************************/
void OnTick()
{
  bool newDay, newHour;
   TimeToStruct(TimeCurrent(), mqlDateTime);
   CopyRates(_Symbol, PERIOD_H1, 0, 1 mqlRates);
    if((int)mqlDateTime.hour == 0)
     {
      newDay = IsNewBar(_Symbol, PERIOD_D1, oldDay);
   if(newDay)
    Print("***** newDay ", newDay, " mqlDateTime.hour ", mqlDateTime.hour); // Судя по распечатке newDay = true
       newHour = IsNewBar(_Symbol, PERIOD_H1, oldHour); // А это совсем другая переменная
    if(newHour)
     Print("***** newHour ", newHour); // Судя по распечатке newHour = true
        if(newDay && newHour) // A ЭТО УСЛОВИЕ НЕ ВЫПОЛНЕНО НЕСМОТРЯ НА ПРЕДЫДУЩИЕ РАСПЕЧАТКИ.
         {
          Print("Ордер должен откыться. ");
         }
     }
}/*******************************************************************/

/*****************Определение появления нового бара******************/
bool IsNewBar(string symbol, ENUM_TIMEFRAMES timeframe, datetime &m_tOld)
 {
  datetime tNew = (datetime)SeriesInfoInteger(symbol, timeframe, SERIES_LASTBAR_DATE);
   if(tNew > m_tOld)
    {
     m_tOld = tNew;
     return(true);
    }
   return(false);
 }
/********************************************************************/

/******************Expert deinitialization function******************/
void OnDeinit(const int reason)
{
 Comment("");
}/*******************************************************************/
 
Alexey Viktorov:

Es ist mehr oder weniger wie folgt

Wo sind die Antwortprüfungen von CopyRates()?
 
Karputov Vladimir:

Es gibt einen Kodex - es gibt ein Urteil. Wenn es keinen Code gibt, geht alles in den Kaffeesatzmodus. Wenn Sie am Computer sitzen, erstellen Sie einen Code mit meinen Empfehlungen


und sehen Sie es sich selbst an.

Ja, nun... Die Unschuldsvermutung in Aktion...

Brauche ich das? Das MQ-Programm ist fehlerhaft. Ich kann sie selbst oder mit Ihren Ratschlägen umgehen, aber die Fehler und der Unsinn in der MQ-Software werden weiterhin Fehler und Unsinn sein.

Ich werde erst nächsten Freitag wieder an den Computer gehen. Und das Ruckeln der Katze ist bereits getestet worden. Und es macht keinen Unterschied, ob Sie mit der rechten oder der linken Hand daran ziehen... Fehler sind Fehler, Dummheit ist Dummheit.

 
Karputov Vladimir:
Wo sind die Antwortprüfungen von CopyRates()?
Ich verstehe, dass Ihr Interesse an der Bestätigung des Fehlers gleich Null ist. Deshalb können Sie nichts alleine tun... Und das muss ich nicht, ich werde es Ihnen nicht beweisen. Was springt für mich dabei heraus? Nichts...