Fehler, Irrtümer, Fragen - Seite 39

 
Ich habe es auf einem anderen Blatt durch Kopieren reproduziert und werde eine Anfrage an den Kundendienst stellen.
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
alexvd:

Wissen Sie noch genau, wo DebugBreak() gesetzt wurde?

Es gibt noch keine Möglichkeit, sie zu replizieren.

Hat eine Anfrage in servicedesk #18435 gestellt

Ich habe DebugBreaks vor allen Schleifen gesetzt.

 
Urain:

Anfrage bei servicedesk #18435 gestellt

Zy DebugBreaks werden vor allen Zyklen eingefügt.

Ja, ich danke Ihnen.

Ich habe es schon wieder getan.

 
alexvd:

Ja, ich danke Ihnen.

Ich habe es schon wieder getan.

Später fügte ich zwei weitere kompilierte Versionen hinzu, eine funktionierende und eine defekte, aus irgendeinem Grund unterscheidet sich ihr Gewicht um fast das Doppelte.
 
ddd06:

Ich würde gerne wissen, was mit der Anfrage#18261 füreinen Indikatoraufruf aus einem EA geschieht (der Wert stimmt nicht mit dem Indikator überein).

Es wäre schön, wenn sie auf irgendeine Weise reagieren würden...

Überprüfen Sie bitte noch einmal Ihren Service Desk, das Problem ist gelöst
 

Ich habe eine Frage zum MACD Sample.

Ich habe einen Expert Advisor mit SL 50 und TP200 in der Alpari-Demo eingestellt.

Ich habe eine Position auf GBPUSD eröffnet und nach einiger Zeit hat der Expert Advisor die Position geändert und die folgenden Daten in das Protokoll eingegeben

> 2010.07.08 20:01:46 Trades '3037120' : failed modify sell 0.10 GBPUSD sl: 1.51740, tp: 1.49868 -> sl: 1.51740, tp: 1.49868 [Invalid stops]

Die Frage ist, warum SL behindert wurde? Die Position scheint geändert worden zu sein (oder zumindest wurde sie vorher nach BU verschoben)...

Gleichzeitig fluchte der Strategietester überhaupt nicht...

PS

Die Datei mit den Einstellungen des Indikators ist beigefügt...

 

Es gibt ein zweidimensionales Array maVal[a][b] . Wie kopiere ich muVal-Werte nach [b], wenn ich das Array nach [a] durchsuchen und [b]-Werte vergleichen muss?

CopyBuffer(maHandle,0,0,3,maVal); Nicht geeignet. Das ist ein schwerfälliger Code.

   bool Buy_Condition_1=((ma1Val[2]<ma1Val[1]) && (ma1Val[1]<ma1Val[0])||
                         (ma2Val[2]<ma2Val[1]) && (ma2Val[1]<ma2Val[0])||
                         (ma3Val[2]<ma3Val[1]) && (ma3Val[1]<ma3Val[0])||
                         (ma4Val[2]<ma4Val[1]) && (ma4Val[1]<ma4Val[0])||
                         (ma5Val[2]<ma5Val[1]) && (ma5Val[1]<ma5Val[0])); // MA растет
 
Interesting:

sl: 1,51740, tp: 1,49868 -> sl: 1,51740, tp: 1,49868 [Ungültige Haltestellen]

Die Frage ist, warum SL behindert wurde? Es scheint, dass diese Position geändert wurde (zumindest wurde sie vorher nach BU verschoben)...

Auch mein Tagebuch runzelte die Stirn, wenn sich durch die Änderung des Auftrags weder SL noch TP änderten.
 

Wir schreiben ein einfaches Skript:

void OnStart(){
  Alert("-----------------------------------");
  Alert("Period() = ",Period()," минут");
  Alert("------------ ",Symbol()," ------------");
}

Wir werfen sie nacheinander auf verschiedene Zeitrahmen desselben Handelsinstruments, beginnend mit M1 und aufsteigend. Ergebnis: Für den Zeitrahmen von M1 bis M30 ist der Zeitraum korrekt:

Aber auf den H1-Zeitrahmen wird eine absolut fantastische Zahl geworfen.

Das Interessanteste ist, dass der H2-Zeitrahmen (wie auch der nachfolgende Stundenrahmen) nicht weit vom H1-Zeitrahmen entfernt ist.


Bei H1 ist der Zeitraum = 16386, bei H2 = 16387, bei H3 = 16388 und so weiter - die Zahlen unterscheiden sich durch die letzte Ziffer.

Ich bin nicht an der Methode zur Umgehung dieses Fehlers interessiert, sondern an der Behebung des Fehlers selbst. Ich möchte, dass sie überhaupt entfernt wird.

 
drknn:

Wir schreiben ein einfaches Skript:

Wir werfen sie nacheinander auf verschiedene Zeitrahmen desselben Handelsinstruments, beginnend mit M1 und aufwärts. Ergebnis: Für den Zeitrahmen von M1 bis M30 ist der Zeitraum korrekt:

Aber im Zeitrahmen H1 wird eine absolut fantastische Zahl herausgeworfen.

Das Interessanteste ist, dass der H2-Zeitrahmen (wie auch die nachfolgenden stündlichen Zeitrahmen) nicht weit vom H1-Zeitrahmen entfernt ist.


Bei H1 ist der Zeitraum = 16386, bei H2 = 16387, bei H3 = 16388 und so weiter - die Zahlen unterscheiden sich durch die letzte Ziffer.

Ich bin nicht an der Methode zur Umgehung dieses Fehlers interessiert, sondern an der Behebung des Fehlers selbst. Sie war also gar nicht vorhanden.

> Ich bin nicht an einer Umgehung dieses Fehlers interessiert, sondern an der Behebung des Fehlers selbst. Ich möchte nicht, dass es überhaupt dort ist.

Denken Sie nicht, dass ich unhöflich oder aufdringlich bin, aber ich weise darauf hin, dass dieser Fehler, den Sie gerade verursacht haben, mich umgebracht hat...

Zum Kern der Frage (Anregungen):

Dies ist nicht MQL4, und Period() stellt nicht die Anzahl der Sekunden/Minuten in TF dar.

Um die Anzahl der Sekunden in einer Periode zu erhalten, müssen Sie die Funktion PeriodSeconds verwenden.


Und wenn Sie versuchen, Period als Zahl auszudrücken, erhalten Sie den numerischen Wert, der dem Bezeichner der Periode in der Aufzählung ENUM_TIMEFRAMES entspricht.


PS

Wenn ich einen Zeitraum im MQL4-Format übersetzen muss, verwende ich diese Funktion:

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
//Возвращает число секунд в периоде
{
//----------------------------------------------------------------------------//
//Служебные переменные
int Result;
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

Und um unnötige Fragen zur "Periodisierung" zu vermeiden, hier zwei weitere Funktionen: MinuteToPeriod und PeriodToStr.

//Fumction MinuteToPeriod
ENUM_TIMEFRAMES MinuteToPeriod(int Value)
//Преобразовывает число сикунд в период, возвращаемый как ENUM_TIMEFRAMES
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
ENUM_TIMEFRAMES Result;
//----------------------------------------------------------------------------//
  switch(Value)
  {
  //Перирд текущещего графика
  case   0: return(PERIOD_CURRENT); break;
  //Минуты
  case   1: return(PERIOD_M1);  break;   //1 минута
  case   2: return(PERIOD_M2);  break;   //2 минуты
  case   3: return(PERIOD_M3);  break;   //3 минуты
  case   4: return(PERIOD_M4);  break;   //4 минуты
  case   5: return(PERIOD_M5);  break;   //5 минуты
  case   6: return(PERIOD_M6);  break;   //6 минуты
  case  10: return(PERIOD_M10); break;   //10 минуты
  case  12: return(PERIOD_M12); break;   //12 минуты
  case  15: return(PERIOD_M15); break;   //15 минуты
  case  20: return(PERIOD_M20); break;   //20 минуты
  case  30: return(PERIOD_M30); break;   //30 минуты
  //Часы
  case  60: return(PERIOD_H1); break;    //60 минут  - 1 час
  case 120: return(PERIOD_H2); break;    //120 минут - 2 часа  
  case 180: return(PERIOD_H3); break;    //180 минут - 3 часа
  case 240: return(PERIOD_H4); break;    //240 минут - 4 часа
  case 360: return(PERIOD_H6); break;    //360 минут - 6 часов
  case 480: return(PERIOD_H8); break;    //480 минут - 8 часов
  case 720: return(PERIOD_H12); break;   //720 минут - 12 часов
  //Старшие ТФ
  case 1440: return(PERIOD_D1); break;   //1 день
  case 10080: return(PERIOD_W1); break;  //1 неделя 
  case 43200: return(PERIOD_MN1); break; //1 месяц 
  //Default
  default: return(PERIOD_CURRENT);
  }
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}
//Function PeriodToStr
string PeriodToStr(ENUM_TIMEFRAMES Value)
//Функция возвращает тексовое представление ТФ (периода)
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
string Result; //Возвращаемое значение
//----------------------------------------------------------------------------//

  switch(Value)
  {
  //Минуты
  case PERIOD_M1:  Result = "M1";  break; //1 минута
  case PERIOD_M2:  Result = "M2";  break; //2 минуты
  case PERIOD_M3:  Result = "M3";  break; //3 минуты  
  case PERIOD_M4:  Result = "M4";  break; //4 минуты    
  case PERIOD_M5:  Result = "M5";  break; //5 минут
  case PERIOD_M6:  Result = "M6";  break; //6 минут
  case PERIOD_M10: Result = "M10"; break; //10 минут
  case PERIOD_M12: Result = "M12"; break; //12 минут
  case PERIOD_M15: Result = "M15"; break; //15 минут
  case PERIOD_M20: Result = "M20"; break; //20 минут
  case PERIOD_M30: Result = "M30"; break; //30 минут
  //Часы
  case PERIOD_H1:  Result = "H1";  break; //60 минут   - 1 час
  case PERIOD_H2:  Result = "H2";  break; //120 минут  - 2 часа
  case PERIOD_H3:  Result = "H3";  break; //180 минут  - 3 часа
  case PERIOD_H4:  Result = "H4";  break; //240 минут  - 4 часа
  case PERIOD_H6:  Result = "H6";  break; //360 минут  - 6 часов  
  case PERIOD_H8:  Result = "H8";  break; //480 минут  - 8 часов
  case PERIOD_H12: Result = "H12"; break; //720 минут  - 12 часов
  //Старшие ТФ
  case PERIOD_D1:  Result = "Day";   break; //День
  case PERIOD_W1:  Result = "Week";  break; //Неделя
  case PERIOD_MN1: Result = "Month"; break; //Месяц
  //Unknown
  default: Result = "Unknown";
  break;
  }
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}
Grund der Beschwerde: