Ein Fehler in der Funktion OrderSend() ? - Seite 5

 
Sepulca:

Die Statik funktioniert zu 100 %. Hier ist der Test:

Und die Ergebnisse:


Nun, bei mir funktioniert es genauso wie früher... Keine Änderung! Ich habe sogar die Funktion, eine neue Leiste zu öffnen:

bool isNewBar()
   {
      static datetime lastBar;                                   // Задаём переменную для времени открытия последнего бара
      datetime currBar;                                                  // Задаём переменную для времени открытия текущего бара
      currBar = iTime(Symbol(),PERIOD_M1,0);          // Находим время открытия текущего бара
      if(lastBar!=currBar)                                               // Если время открытия последнего бара не равно времени открытия текущего бара, то...
         {
            lastBar=currBar;
            return(true);
         }
      return(false);
   }

die ebenfalls ordnungsgemäß funktioniert. Deshalb wird mein Code ohne Grund angegriffen. Und die Frage war im Allgemeinen richtig. Offenbar ist das Prüfgerät defekt, so dass die Messwerte alle falsch sind. Auf der M5 ist es irgendwie sauberer, auf der M15 ist auch die H1 schon ähnlich.

 
hoz:


Nun, es funktioniert noch genauso wie vorher... Es gibt keine Veränderung! Ich habe sogar eine neue Funktion zum Öffnen von Bars:

was auch gut funktioniert. Deshalb ist die Kritik an meinem Code unbegründet. Aber die Frage war im Allgemeinen richtig. Offenbar ist das Prüfgerät fehlerhaft und die Messwerte sind falsch. Auf der M5 ist es etwas übersichtlicher, und auf der M15 ist auch H1 schon miserabel.


Ich würde raten, if(lastBar<currBar) gleich zu schreiben, obwohl es kaum etwas ändern wird. Ich werde Ihre Beiträge weiter durchgehen, vielleicht sage ich noch etwas.
 
hoz:


Nun, es funktioniert noch genauso wie vorher... Es gibt keine Veränderung! Ich habe sogar eine neue Funktion zum Öffnen von Bars:

was auch gut funktioniert. Deshalb ist die Kritik an meinem Code unbegründet. Aber die Frage war im Allgemeinen richtig. Offenbar ist das Prüfgerät defekt und die Messwerte sind falsch. Auf der M5 ist es irgendwie sauberer, auf der M15 ist auch H1 schon miserabel.



Das kann helfen. Ihre start()-Funktion ist ein wenig überarbeitet worden. Ich bin nicht tief in die Materie eingestiegen, aber immerhin:

int start()
{
   fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   
 /*  Print("Bid = ", Bid);
   Print("Ask = ", Ask);
   Print("fastMa = ", fastMa);
   Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
   */
// Отслеживание открытия нового бара
   static datetime lastBarTime = iTime(NULL, 0, 1));    // Время проведения последних рассчётов, изначально принимаем предыдущий бар
   
   if (lastBarTime < iTime(NULL, 0, 0))         // Если случился новый бар
 // Рассчёт сигнала 
    {
     if("На этом баре случилось что-то, что вынуждает ждать следуещего бара")
      {
       ..........// Выполняем действия открытия/закрытия или что-то там ещё...
       lastBarTime = iTime(NULL, 0, 0);              // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
      }
     else
      {
       "Ничего не случилось, ждем до следуещего тика"
      }
    }
                                       // .. успешно выполнены
  return (0);
}
 
Sepulca:



Das könnte helfen. Ihre start()-Funktion ist ein wenig überarbeitet worden. Ich bin nicht tief in die Materie eingestiegen, aber immerhin:


Nun, hier wird die Berechnungszeit vom vorherigen Takt genommen. Das erscheint nicht logisch. Wir brauchen die aktuelle Bar.
 
PapaYozh:

Ich persönlich habe noch nie eine Statik gesehen, die nicht funktioniert hat.

Hier ist ein Beispiel für einen Experten, wenn Sie es in einem Diagramm überprüfen möchten:

1. Starten Sie den Expert Advisor.

2. Ändern Sie die TF.

3. Stellen Sie sicher, dass cc nicht wieder 20 wird.

 
hoz:


Nun, es funktioniert noch genauso wie vorher... Es gibt keine Veränderung! Ich habe sogar eine neue Funktion zum Öffnen von Bars:

was auch gut funktioniert. Deshalb ist die Kritik an meinem Code unbegründet. Aber die Frage war im Allgemeinen richtig. Offenbar ist das Prüfgerät fehlerhaft und die Messwerte sind falsch. Auf der M5 ist es irgendwie sauberer, auf der M15 ist auch H1 schon miserabel.

Im Hinblick auf Ihre Situation:

Die Zeit wurde einmal initialisiert - wenn Sie den EA starten, wird sie nicht erneut initialisiert, so dass Sie, wenn Sie von M1 zu D1 wechseln, etwa einen Tag auf die Aktualisierung des Charts warten müssen :(

 
tara:

Trifft auf Ihre Situation zu:

Die Zeit wurde einmal initialisiert - wenn Sie den EA starten, wird sie nicht erneut initialisiert. Wenn Sie also von M1 zu D1 wechseln, müssen Sie etwa einen Tag warten, bis das Diagramm aktualisiert wird :(



Der Expert Advisor arbeitet mit einem bestimmten TF. Warum sollte ich sie austauschen müssen?
 
tara:

3. Vergewissern Sie sich, dass cc nicht wieder 20 geworden ist.

Dies ist ein dokumentiertes Merkmal von EAs.
 
TheXpert:
Dies ist ein dokumentiertes Merkmal von EAs.


Was ist dann Static? Es ist eher ein Fatalic...


Übrigens, wo ist das dokumentiert?

 
hoz:

Der Expert Advisor arbeitet mit einem bestimmten TF. Warum sollte ich sie plötzlich wechseln müssen?

Sie können einfach einige Parameter ändern. Die Reaktion erfolgt erst nach dem ersten Tick eines neuen Balkens auf der eingestellten TF.

Aber Sie selbst haben sich gefragt, warum der EA auf einer höheren TF unerklärlich ist:)