Guten Tag. Ich habe eine Frage: Wo kann ich ein Beispiel für einen Code sehen, um die Werte eines Indikators aus verschiedenen Zeitrahmen auf einem Preisdiagramm auszugeben?
Ich kann es nicht googeln, vielleicht mache ich eine falsche Anfrage.
Ich möchte in der zweiten Spalte des Preisdiagramms die Standardabweichung der Bollinger-Bänder von H1 bis W1 ausgeben. Die zweite Spalte zeigt die Werte, die man durch Multiplikation der Standardabweichung mit den Koeffizienten erhält.
Bollinger Bands geändert.
Schlüsselwörter für die Codobase-Suche "Multi timeframe".
1. Versuchen Sie es in MetaEditor: Datei --> Gemeinsamen Datenordner öffnen. Sie sehen dann den Pfad zum Ordner. Dieses Thema wurde bereits mehrfach erörtert, hier zum Beispiel ein Link
2. Versuchen Sie es zunächst ohne Einschluss. Wenn Sie es debuggen werden, werden Sie es einbauen.
Geben Sie hier Ihre Quellen ein, entweder über die Schaltfläche SRC oben oder über die Schaltfläche Datei anhängen unten.
Wie kann man eine horizontale Linie zum Eröffnungskurs des Balkens um 07:00 Uhr ziehen?
Ich habe diesen Code geschrieben, aber die Linie wird aus irgendeinem Grund nicht gezeichnet. Wo liegt der Fehler?
externstring StartTime = "07:00"; //Начальное время для анализа, 00:00 ESTexternstring AlTime = "18:55"; //Время для трейдингаexternstring EndTime = "20:00"; //Время экспирации//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
ObjectCreate(ChartID(),"CORDON",OBJ_HLINE,0,0,Ask); //созд гор линию по цене AskObjectSetInteger(ChartID(),"CORDON",OBJPROP_COLOR,clrDarkBlue); //цвет темно-сиийObjectSetInteger(ChartID(),"CORDON",OBJPROP_WIDTH,1); //толщина линии 1ObjectSetInteger(ChartID(),"CORDON",OBJPROP_STYLE,STYLE_SOLID); //линия сплошint IndexOfBar = iBarShift(ChartID(),PERIOD_H1, StringToTime(StartTime), true); //Считаем индекс бара по заданному времени StartTimedouble StartPrice = Open[IndexOfBar]; //Получаем цену по индексуObjectMove(ChartID(),"CORDON", 0, 0, StartPrice); // меняем распол линии return(0);
}
LRA: Wenn Sie ObjectMove entfernen, ist die Zeile sichtbar? Versuchen Sie Alert(StartPrice);
Wenn Sie ObjectMove entfernen, können Sie die Linie nicht sehen, aber wennSie anstelle von "IndexOfBar" einen numerischen Wert schreiben, z. B. "double StartPrice = Open[5];", wird die Linie beim Eröffnungskurs des fünften Balkens gezeichnet.
Danke für die Idee mit dem Alert - er zeigt den Wert "0" an.
Übrigens, die Zeile existiert auch in der Liste der Objekte mit dem Wert 0.
Wie kann man eine horizontale Linie zum Eröffnungskurs des Balkens um 07:00 Uhr ziehen?
Ich habe diesen Code geschrieben, aber die Linie wird aus irgendeinem Grund nicht gezeichnet. Wo liegt der Fehler?
Man kann nicht in der Inite zeichnen und rechnen, das ist ein grober Fehler. Der Inite muss seine Arbeit so schnell wie möglich beenden.
Der Fehler hier -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //den Index des Balkens um die angegebene Zeit lesen StartTime
Die Uhrzeit kann direkt im Datetime-Format eingestellt werden, so dass keine Zeit für die Konvertierung verschwendet werden muss:
#property strict#property show_inputs
externdatetime StartTime = D'07:00'; //Начальное время для анализа, 00:00 ESTexterndatetime AlTime = D'18:55'; //Время для трейдингаexterndatetime EndTime = D'20:00'; //Время экспирации//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart()
{
ObjectCreate(0,"CORDON",OBJ_HLINE,0,0,Ask); //созд гор линию по цене AskObjectSetInteger(0,"CORDON",OBJPROP_COLOR,clrDarkBlue); //цвет темно-сиийObjectSetInteger(0,"CORDON",OBJPROP_WIDTH,1); //толщина линии 1ObjectSetInteger(0,"CORDON",OBJPROP_STYLE,STYLE_SOLID); //линия сплошint IndexOfBar = iBarShift(_Symbol,0, StartTime, false); //Считаем индекс бара по заданному времени StartTimedouble StartPrice = Open[IndexOfBar]; //Получаем цену по индексуPrint(IndexOfBar,", ",StartPrice);
ObjectMove(0,"CORDON", 0, 0, StartPrice); // меняем распол линии
}
Man kann im init nicht zeichnen und rechnen, das ist ein grober Fehler. Das init sollte seine Arbeit so schnell wie möglich abschließen.
Der Fehler hier -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //den Index des Balkens um die angegebene Zeit lesen StartTime
Die Uhrzeit kann direkt im Datetime-Format eingestellt werden, so dass keine Zeit für die Konvertierung verschwendet werden muss:
Vielen Dank für die wertvollen Tipps für mich.
Und besonderen Dank dafür, dass Sie meine Moral gesteigert haben, indem Sie den Fehler gefunden haben. Ich beginne wieder daran zu glauben, dass ich mich mit MQL4 anfreunden kann.
RichLux: Version des Codes funktioniert nicht. Die Linie im Diagramm erscheint immer noch nicht...
// Вставил такой код в скрипт - линию рисует синюю на черном графике слабо видно
#property strict // -------- Возможно, Дело в этой строке
externstring StartTime = "07:00"; //Начальное время для анализа, 00:00 ESTexternstring AlTime = "18:55"; //Время для трейдингаexternstring EndTime = "20:00"; //Время экспирацииvoidOnStart()
{
ObjectCreate("CORDON",OBJ_HLINE,0,0,Ask); //созд гор линию по цене Ask --- Для текущего графика ID пропускаемObjectSetInteger(0,"CORDON",OBJPROP_COLOR,DarkBlue); //цвет темно-сиий --- 0 = текущий график DarkBlue - то же самоеObjectSetInteger(0,"CORDON",OBJPROP_WIDTH,1); //толщина линии 1ObjectSetInteger(0,"CORDON",OBJPROP_STYLE,STYLE_SOLID); //линия сплош
// Первый параметр нужен типа string, а функция ChartID возвращает long
int IndexOfBar = iBarShift(NULL,PERIOD_H1, StringToTime(StartTime), true); // --- NULL = текущий график ЗДЕСЬ И БЫЛА ОШИБКА???
double StartPrice = Open[IndexOfBar]; //Получаем цену по индексуObjectMove(ChartID(),"CORDON", 0, 0, StartPrice); // меняем распол линии
}
Man kann im init nicht zeichnen und rechnen, das ist ein grober Fehler. Das Init sollte so schnell wie möglich abgeschlossen werden.
Und wenn Sie die Berechnungen aus dem Inite in eine separate Funktion übernehmen und diese Funktion dann in das Inite einfügen, ist das kein grober Fehler?
Und wenn Sie die Berechnungen aus dem inite in eine separate Funktion übernehmen und diese Funktion dann in das inite einfügen, ist das kein grober Fehler?
Wenn der Code zu lange ausgeführt wird, bricht das Inite zwangsweise ab und der Code kann nicht mehr ausgeführt werden. Der ausgeführte Code, einschließlich der Aufrufe von sekundären Funktionen, muss in den vordefinierten Funktionen von MQL sein - OnTick() für Expert Advisors, OnStart() für Skripte, OnCalculate() für Indikatoren.
Das inite muss ein Minimum an Code enthalten, nur die Dinge, die einmal ausgeführt werden müssen, direkt vor dem Start des Programms. Zum Beispiel die Initialisierung von globalen Variablen, Arrays, Indikatorpuffern.
Guten Tag. Ich habe eine Frage: Wo kann ich ein Beispiel für einen Code sehen, um die Werte eines Indikators aus verschiedenen Zeitrahmen auf einem Preisdiagramm auszugeben?
Ich kann es nicht googeln, vielleicht mache ich eine falsche Anfrage.
Ich möchte in der zweiten Spalte des Preisdiagramms die Standardabweichung der Bollinger-Bänder von H1 bis W1 ausgeben. Die zweite Spalte zeigt die Werte, die man durch Multiplikation der Standardabweichung mit den Koeffizienten erhält.
Bollinger Bands geändert.
Schlüsselwörter für die Codobase-Suche "Multi timeframe".
Text kann mit OBJ_LABEL angezeigt werden.
1. Versuchen Sie es in MetaEditor: Datei --> Gemeinsamen Datenordner öffnen. Sie sehen dann den Pfad zum Ordner. Dieses Thema wurde bereits mehrfach erörtert, hier zum Beispiel ein Link
2. Versuchen Sie es zunächst ohne Einschluss. Wenn Sie es debuggen werden, werden Sie es einbauen.
Geben Sie hier Ihre Quellen ein, entweder über die Schaltfläche SRC oben oder über die Schaltfläche Datei anhängen unten.
Wie kann man eine horizontale Linie zum Eröffnungskurs des Balkens um 07:00 Uhr ziehen?
Ich habe diesen Code geschrieben, aber die Linie wird aus irgendeinem Grund nicht gezeichnet. Wo liegt der Fehler?
Wie kann man eine horizontale Linie zum Eröffnungskurs des Balkens um 07:00 Uhr ziehen?
Ich habe diesen Code geschrieben, aber die Linie wird aus irgendeinem Grund nicht gezeichnet. Wo liegt der Fehler?
Wenn Sie ObjectMove entfernen, ist die Zeile sichtbar? Versuchen Sie Alert(StartPrice);
Wenn Sie ObjectMove entfernen, können Sie die Linie nicht sehen, aber wennSie anstelle von "IndexOfBar" einen numerischen Wert schreiben, z. B. "double StartPrice = Open[5];", wird die Linie beim Eröffnungskurs des fünften Balkens gezeichnet.
Danke für die Idee mit dem Alert - er zeigt den Wert "0" an.
Übrigens, die Zeile existiert auch in der Liste der Objekte mit dem Wert 0.
Wie kann man eine horizontale Linie zum Eröffnungskurs des Balkens um 07:00 Uhr ziehen?
Ich habe diesen Code geschrieben, aber die Linie wird aus irgendeinem Grund nicht gezeichnet. Wo liegt der Fehler?
Man kann nicht in der Inite zeichnen und rechnen, das ist ein grober Fehler. Der Inite muss seine Arbeit so schnell wie möglich beenden.
Der Fehler hier -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //den Index des Balkens um die angegebene Zeit lesen StartTime
Die Uhrzeit kann direkt im Datetime-Format eingestellt werden, so dass keine Zeit für die Konvertierung verschwendet werden muss:
Man kann im init nicht zeichnen und rechnen, das ist ein grober Fehler. Das init sollte seine Arbeit so schnell wie möglich abschließen.
Der Fehler hier -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //den Index des Balkens um die angegebene Zeit lesen StartTime
Die Uhrzeit kann direkt im Datetime-Format eingestellt werden, so dass keine Zeit für die Konvertierung verschwendet werden muss:
Vielen Dank für die wertvollen Tipps für mich.
Und besonderen Dank dafür, dass Sie meine Moral gesteigert haben, indem Sie den Fehler gefunden haben. Ich beginne wieder daran zu glauben, dass ich mich mit MQL4 anfreunden kann.
Man kann im init nicht zeichnen und rechnen, das ist ein grober Fehler. Das Init sollte so schnell wie möglich abgeschlossen werden.
Und wenn Sie die Berechnungen aus dem Inite in eine separate Funktion übernehmen und diese Funktion dann in das Inite einfügen, ist das kein grober Fehler?
Es funktioniert bereits.
Und wenn Sie die Berechnungen aus dem inite in eine separate Funktion übernehmen und diese Funktion dann in das inite einfügen, ist das kein grober Fehler?
Wenn der Code zu lange ausgeführt wird, bricht das Inite zwangsweise ab und der Code kann nicht mehr ausgeführt werden. Der ausgeführte Code, einschließlich der Aufrufe von sekundären Funktionen, muss in den vordefinierten Funktionen von MQL sein - OnTick() für Expert Advisors, OnStart() für Skripte, OnCalculate() für Indikatoren.
Das inite muss ein Minimum an Code enthalten, nur die Dinge, die einmal ausgeführt werden müssen, direkt vor dem Start des Programms. Zum Beispiel die Initialisierung von globalen Variablen, Arrays, Indikatorpuffern.