Fehler, Irrtümer, Fragen - Seite 886

 
Yedelkin:
Dafür kann es eine Reihe von Gründen geben... Die bekanntesten sind die Division durch Null und das Verlassen des Feldes.

Ich danke Ihnen.

Was wird außerhalb des Arrays ausgegeben? Ich entschuldige mich für meine Unwissenheit.

Ich habe nur 3 Abteilungen:

TradeLot=AccountInfoDouble(ACCOUNT_BALANCE)*(PercentSize/100)/(100); 
MaxLotAllowed=MathFloor((MeansFree/MeansOneLot)*100)/100;
(PositionVolume()+Volume())*(100)*(100))/AccountInfoDouble(ACCOUNT_BALANCE)
 
G001: Ich habe nur 3 Abteilungen:

Hier kann es zu einer Division durch Null kommen:

/AccountInfoDouble(ACCOUNT_BALANCE)

Eine grundlegende Überprüfung ist erforderlich.

G001 : Was wird außerhalb des Arrays ausgegeben? Ich entschuldige mich für meine Unwissenheit.

Das ist zum Beispiel der Fall, wenn:

double array[3];
for (int i=0; i<=3; i++) array[i];

Bei der letzten Iteration wird es einen Ausgang außerhalb des Arrays geben.

 
Yedelkin:

Hier kann es zu einer Division durch Null kommen:

Eine grundlegende Überprüfung ist erforderlich.

Das ist zum Beispiel der Fall, wenn:

Bei der letzten Iteration wird es einen Ausgang außerhalb des Arrays geben.

Ich danke Ihnen.

Cool, sollen wir prüfen, ob die Funktion richtig funktioniert?

AccountInfoDouble(ACCOUNT_BALANCE)

 
G001: Cool, Sie müssen überprüfen, ob die Funktion richtig funktioniert?
Was passiert nun, wenn der Saldo auf Null geht und die Funktion korrekt funktioniert? :)
 

Gibt es keine Probleme mit einem solchen Messgerät?

int TotalBullStopOrders()
{
  int BullCounter=0;
  int Total = OrdersTotal();
  for(i = 0; i < Total; i++)
  {
    if(OrderSelect(OrderGetTicket(i)))
    {
      if(OrderGetString(ORDER_SYMBOL)==Symbol() && OrderGetInteger(ORDER_MAGIC)==Magic)
      {
        if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP)
        {
          BullCounter++;
        }
      }
    }
  }
  return(BullCounter);
}
 
Yedelkin:
Was passiert nun, wenn der Saldo auf Null geht und die Funktion korrekt funktioniert? :)
Sie haben Recht, ich werde es dort korrigieren.
Aber jetzt mein Gleichgewicht ist nicht Null und meine EA lächelt grün, aber nicht mehr arbeiten, abnormal und ohne Warnungen, wäre es besser, nicht zu lächeln... :)
 
G001: Es gibt kein Problem mit diesem Zähler?

In der for-Anweisung ist der Typ der Variablen i nicht definiert. Die Variable Magic ist nicht definiert. In der Reihe.

if(OrderSelect(OrderGetTicket(i)))
Die Funktion OrderSelect() ist nicht erforderlich. Ich habe nichts anderes bemerkt.
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
AndreyS:

Problem mit Fehler (Error CopyBuffer - Fehlernummer: 4806) - ich entferne ihn, ich heile ihn durchSleep(1000); - ich führe es darauf zurück, dass der Indikator nicht genug Zeit zum Erstellen hat.

Das Problem mit dem Fehler (4194304 Bytes nicht verfügbar) bleibt bestehen.

Sie wird höchstwahrscheinlich erstellt werden. Bevor wir die Daten kopieren, müssen wir jedoch prüfen, ob die Daten, die wir erhalten wollen, auch wirklich vorliegen (hatte der Indikator Zeit, um zu rechnen?). Die Funktion BarsCalculated sollte dabei helfen.

Dann fragen Sie alle Zeitrahmen nach Symbolen ab. Wenn diese Daten bereit sind, werden sie von der Festplatte in den Speicher heruntergeladen, wenn nicht, beginnt der Aufbau (der Speicher wird ebenfalls verbraucht) + 100 Indikatoren mit einem unterschiedlichen Zeitraum für jede TF, und all dies im Speicher. Die Daten werden nicht sofort aus dem Speicher entladen (für den Fall, dass Sie sie erneut anfordern wollen)...

Reduzieren Sie die Anzahl der Balken im Diagramm.

Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
Документация по MQL5: Доступ к таймсериям и индикаторам / BarsCalculated
  • www.mql5.com
Доступ к таймсериям и индикаторам / BarsCalculated - Документация по MQL5
 
Yedelkin:

In der for-Anweisung ist der Typ der Variablen i nicht definiert. Die Variable Magic ist nicht definiert. In der Zeile

OrderSelect() ist überflüssig. Ich habe nichts anderes bemerkt.

Ich danke Ihnen.

Es gibt eine außerhalb des Betreibers.

input int    Magic          = 55;

MqlTradeRequest request={0};
MqlTradeResult result={0};
MqlTradeCheckResult check={0};
//-----
int LotsDigits;
int Indicator;
double IndicatorVal[5];
double Ask;
double Bid;
int i;
int pos;
double TradeLot;
ulong StopLevel;
double MeansFree;
double MaxLotAllowed;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
 
alexvd:

Es ist wahrscheinlich, dass es geschaffen wurde. Nur vor dem Kopieren der Daten sollten Sie prüfen, ob die Daten verfügbar sind (hat sich das Kennzeichen erledigt?). Die Funktion BarsCalculated sollte dabei helfen.

Dann fragen Sie alle Zeitrahmen nach Symbolen ab. Wenn die Daten bereit sind, werden sie von der Festplatte in den Speicher heruntergeladen, wenn nicht, beginnt der Aufbau (der Speicher wird ebenfalls verbraucht) + 100 Indikatoren mit einem unterschiedlichen Zeitraum für jede TF, und all dies im Speicher. Die Daten werden nicht sofort aus dem Speicher entladen (für den Fall, dass Sie sie erneut anfordern wollen)...

Reduzieren Sie die Anzahl der Balken im Diagramm.

        while(BarsCalculated(m_handle)==-1 && !IsStopped()) Sleep(1); // Спасибо alexvd - откоректировал строку с учётом замечаний

Die Anzahl der Balken ändert daran nichts,

Das Problem liegt in den Zeiträumen verborgen, denn die Variante

for(int iperiod=5; iperiod<=19; iperiod++) 

funktioniert nicht, 19-5=14 - unterschiedliche Zeiträume,

Wenn sie auf 4 reduziert werden, dann funktioniert zum Beispiel alles:

for(int iperiod=16; iperiod<=19; iperiod++)

Obwohl foru IndicatorRelease(m_handle) - tatsächlich falsch verwendet wird.

Ich denke, auch wenn Sie die Griffe nicht mit der Funktion IndicatorRelease freigeben, sollte es trotzdem funktionieren,

Das Problem liegt also in der Anzahl der verschiedenen Zeiträume.

Oder...