Fehler, Irrtümer, Fragen - Seite 2906

 
Die Website-Suche funktioniert einen zweiten Tag lang nicht.
 

Stops und Takes funktionieren beim Testen nicht. Auf dem Screenshot ein Beispiel für ein ausgelöstes Sell Limit mit gesetztem SL und TP, aber der Stop (und Take) wird nicht ausgelöst, egal wie der Preis gestiegen ist. Wo soll man graben?

Dateien:
Screenshot_1.jpg  177 kb
 

Für Positionen gibt es die Eigenschaft POSITION_TIME_UPDATE - der Zeitpunkt der letzten Positionsänderung.

Für Aufträge im Terminal gibt es keine solche Eigenschaft. Aber es gibt einen auf dem Server?


Verstehe ich das richtig, dass die Änderung einer Limit-Order an einer Börse eine Neuausgabe der Limit-Order ist: die alte löschen und eine neue einstellen?

Wenn ja, dann sollte die Änderung ORDER_TIME_SETUP ändern. Dies ist jedoch nicht der Fall.

 

Indikatordiagramme verschwinden

Oftmals verschwinden die Indikatordiagramme nach ein paar Stunden Arbeit.

Um die Daten wiederherzustellen und die Berechnung des Indikators zu minimieren, verwende ich die Phasen des Datenladens und der Berechnung.

Wenn ich den Indikator auf dem Diagramm installiere, funktionieren alle Phasen normal.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,  
                 const int prev_calculated, 
                 const datetime& time[], 
                 const double& open[], 
                 const double& high[], 
                 const double& low[], 
                 const double& close[], 
                 const long& tick_volume[], 
                 const long& volume[],
                 const int& spread[]  
)
{
  if(prev_calculated == 0)
  {
    switch (mar_data.stage)
    {
      case LOAD_TICKS:
        if(LoadTicks(time) == true)
        {
          //--- 
          mar_data.stage = READ_PRIM_TICKS;
        }
        return(0);
      break;
      case READ_PRIM_TICKS:
        if(ReadPrimTicks() == true)
        {
          //---
          mar_data.stage = READ_SEC_TICKS;
        }  
        return(0);
      break;
      case READ_SEC_TICKS:
        if(ReadSecTicks() == true)
        {
          //---
          mar_data.stage = FILL_DATA;
        }  
        return(0);
      break;
      case FILL_DATA:
        //---
        FillData();
        mar_data.stage = LOAD_TICKS;
      break;
    }
  } 
  else
  {
    //--- Live data ---
  }
  return(rates_total);
}

In der letzten Stufe wird die erste Stufe zugewiesen, so dass der Indikator (wenn er die Taste hat) die Daten neu laden kann.

mar_data.stage = LOAD_TICKS;

Wenn der Indikator zurückgesetzt wird, werden die Daten jedoch nicht wiederhergestellt.

Die Funktion

//+------------------------------------------------------------------+
//| Custom indicator Load ticks function                             |
//+------------------------------------------------------------------+
bool LoadTicks(const datetime &a_times[])
{
  int result = CopyTime(Symbol(), PERIOD_M1, start_time, end_time, mar_data.time_array);
  if(result > 0)
  {
    if(mar_data.time_array[result - 1] == a_times[ArraySize(a_times) - 1])
    {
      mar_data.b_cnt = result;
      result = CopyTicksRange(Symbol(), mar_data.pr_ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
      if(result > 0)
      {
        if(mar_data.pr_ticks[result-1].time >= mar_data.time_array[ArraySize(mar_data.time_array) - 1]) 
        {
          mar_data.pr_cnt = result;
          datetime sec_time_array[];
          result = CopyTime(sec_symbol, PERIOD_M1, start_time, end_time, sec_time_array);
          if(result > 0)
          {
            result = CopyTicksRange(sec_symbol, mar_data.sec_ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
            if(result > 0)
            {
              if(mar_data.sec_ticks[result-1].time >= sec_time_array[ArraySize(sec_time_array) - 1])
              {
                mar_data.sec_cnt = result;
                return(true);
              } else Print("Не хватает тиков ", sec_symbol, "!");
            } else Print("Не получены тики по символу ", sec_symbol, "!");
          } else Print("Не скопировано время баров по символу ", sec_symbol, "!");
        } else Print("Не хватает тиков ", Symbol(), "!"); 
      } else Print("Не получены тики по символу ", Symbol(), "!");
    } else Print("Не хватает баров по символу ", Symbol(), "!");
  } else Print("Не скопировано время баров по символу ", Symbol(), "!");
  return(false);
}

Gibt nur dies aus

"Zeitbalken werden nicht vom BR-1.21-Symbol kopiert!".

Aber es passiert nichts weiter.

Da es einen Aufruf von LoadTicks() gibt, müssen daher alle Schritte wiederholt werden, wie beim Laden des Indikators.

Liebe Entwickler, warum funktioniert der Indikator nicht mehr?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Каждый скрипт, сервис и эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока. В одном потоке с индикаторами также последовательно выполняются...
 

Bitte fügen Sie der Dokumentation eine Tabelle mit den Tastencodes der Tastatur hinzu.

Und Tastaturkürzel, die für OnChartEvent deaktiviert sind. Zum Beispiel CTRL+T.

 
fxsaber:
Seit zwei Tagen funktioniert die Website-Suche nicht mehr.

Die Suchbasis hat sich stark eingeengt. Viele Dinge werden nicht gefunden.

 
Woher weiß ich, wann die Position/der Auftrag zuletzt geändert wurde?
 
fxsaber:
Woher weiß ich, wann ich meine Position/ meinen Auftrag zuletzt geändert habe?

POSITION_ZEIT_AKTUALISIERUNG

 
Igor_Gagarin:

POSITION_ZEIT_AKTUALISIERUNG

Dies ist der Zeitpunkt der letzten Volumenänderung. Echo Netting.

 
fxsaber:

Dies ist der Zeitpunkt der letzten Volumenänderung. Echoes Netting.

Die Öffnungszeit der Stelle wird bekannt gegeben. Wonach haben Sie gefragt?

Grund der Beschwerde: