Hallo und danke für deine Antwort Ich konnte ein Skript erstellen, das meinen Erwartungen entspricht Leider gibt es noch zwei Fehler, die ich nicht verstehen und korrigieren kann, könntest du mir helfen, es handelt sich nur um zwei Zeilen Code, die nach der Kompilierung als Fehler angezeigt werden...
Hallo an alle und frohes neues Jahr! Könnt ihr mir sagen: wie kann ich realisieren, dass mein Skript einen Indikator aus dem Markt verwenden würde?
Genauer gesagt: gibt es einen Indikator "Automatic Trendline" auf dem Markt. Ich möchte einen darauf basierenden Roboter erstellen, der eine Position in dem Moment eröffnet oder schließt, wenn der Preis diese Linien auf dem Indikator kreuzt (und unter bestimmten zusätzlichen Bedingungen).
Hallo an alle und frohes neues Jahr! Können Sie mir sagen: wie kann ich realisieren, dass mein Skript einen Indikator aus dem Markt verwenden würde?
Genauer gesagt: gibt es einen Indikator "Automatic Trendline" auf dem Markt. Ich möchte einen darauf basierenden Roboter erstellen, der eine Position in dem Moment eröffnet oder schließt, wenn der Preis diese Linien auf dem Indikator kreuzt (und unter bestimmten zusätzlichen Bedingungen).
Für mich selbst ist das kein Problem. Für den Markt oder CodeBase können Sie nicht verwenden, jemand anderes Handwerk aus dem Markt ...
Für dich selbst, kein Problem. Du kannst nicht das Handwerk von jemand anderem vom Marktplatz oder von CodeBase verwenden...
Für dich selbst. Ich weiß nicht, wie man es macht. Ich kann den Code nicht in Open Source finden. Oder wie ich in meinen Code schrauben kann, damit er die Position der Zeilen erfasst.
Hier ist ein Beispiel für das Hinzufügen eines vom Markt heruntergeladenen Indikators zu einem Expert Advisor
// Глобальная переменная для хендла индикатораint tlHandle;
intOnInit() {
// Создаем хендл индикатора
tlHandle = iCustom(Symbol(), PERIOD_CURRENT, "Market\\Automatic Trendlines", false, 5, 15, clrRed, clrBlue, 2, "My Support", "My Resistance");
// Можем добавить индикатор на график, если хотим. // Для использования в расчетах это необязательноChartIndicatorAdd(ChartID(), 0, tlHandle);
// Вызовем один раз OnTick(), чтобы на выходных у нас что-то в логе отобразилосьOnTick();
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason) {}
voidOnTick() {
// Объявляем массивы для буферов индикатораdouble tlBuffer0[], tlBuffer1[]; // ,tlBuffer1, ...int res;
// Копируем нужное количество значений из индикаторных буферов в массивы
res = CopyBuffer(tlHandle, 0, 0, 100, tlBuffer0);
res = CopyBuffer(tlHandle, 1, 0, 100, tlBuffer1);
// У разных индикаторов различное количество индикаторных буферов, // числа из которых используются для построения линий, значков, цветовых меток на графике// Сколько их у данного индикатора и как используются их числа исследуйте самостоятельно// res = CopyBuffer(tlHandle, 2, 0, 100, tlBuffer2);// Пользуемся полученными значениямиArrayPrint(tlBuffer0);
ArrayPrint(tlBuffer1);
}
Wie kann man Speicher für das E_NAME[] Array zuweisen, so dass genügend Speicher für alle möglichen ENUM_NAME Werte (ohne Wiederholungen) vorhanden ist?
ENUM_NAME E_NAME[];
Und E_NAME[] mit allen möglichen Werten initialisieren?
Wenn Sie die Zuweisung numerischer Werte zu den Aufzählungselementen nicht erzwingen wollen (nach dem Beispiel zu urteilen, werden Sie das nicht tun), können Sie es so machen:
// Объявляем перечислениеenum ENUM_NAME {
ENAME_1,
ENAME_JSDF,
ENAME_ERT,
ENAME_QWERTY,
ENAME_FEF
};
// Обявляем константу, хранящую количество элементов перечисления#define ENUM_NAME_SIZE 5// Массив для хранения элементов перечисления
ENUM_NAME E_NAME[ENUM_NAME_SIZE];
intOnInit() {
// Заполняем массив значениями, преобразуя к типу ENUM_NAMEfor(int i = 0; i < ENUM_NAME_SIZE; i++) {
E_NAME[i] = (ENUM_NAME) i;
}
// Пользуемся массивомArrayPrint(E_NAME);
for(int i = 0; i < ENUM_NAME_SIZE; i++) {
Print(EnumToString(E_NAME[i]));
}
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason) {}
In diesem Fall müssen Sie auch die Konstante ändern, die die Anzahl der Elemente speichert, wenn Sie Elemente zur Aufzählung hinzufügen.
Außerdem ist es besser, das Präfix ENUM_ nur für den Namen der Aufzählung selbst zu verwenden und ein anderes Präfix für ihre Elemente zu benutzen. Diese Konvention wird in allen Standard-MQL-Aufzählungen verwendet.
Wenn Sie die Zuweisung von numerischen Werten zu den Aufzählungselementen nicht erzwingen wollen (nach dem Beispiel zu urteilen, werden Sie das nicht tun), können Sie es so machen:
In diesem Fall müssen Sie auch die Konstante ändern, die die Anzahl der Elemente speichert, wenn Sie Elemente zur Aufzählung hinzufügen.
Außerdem ist es besser, das Präfix ENUM_ nur für den Namen der Aufzählung selbst zu verwenden und ein anderes Präfix für ihre Elemente zu benutzen. Diese Konvention wird in allen Standard-MQL-Aufzählungen verwendet.
Vielen Dank für Ihre Hilfe. Ich verwende ENUM seit so vielen Jahren, dass ich gar nicht auf die Idee gekommen bin, die Hilfe zu lesen.
Nur für den Fall, dass es einfacher ist, sie in einer Zeile zu schreiben, wie ich gezeigt habe, als ein Array von separaten Zeilen.
Hallo,
Versuchen Sie, den Markt nach fertigen Lösungen zu durchsuchen - https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market
Sie können auch eine individuelle Lösung bei Freelance bestellen - https://www.mql5.com/fr/job
Hallo an alle und frohes neues Jahr! Könnt ihr mir sagen: wie kann ich realisieren, dass mein Skript einen Indikator aus dem Markt verwenden würde?
Genauer gesagt:
gibt es einen Indikator "Automatic Trendline" auf dem Markt. Ich möchte einen darauf basierenden Roboter erstellen, der eine Position in dem Moment eröffnet oder schließt, wenn der Preis diese Linien auf dem Indikator kreuzt (und unter bestimmten zusätzlichen Bedingungen).
Hallo an alle und frohes neues Jahr! Können Sie mir sagen: wie kann ich realisieren, dass mein Skript einen Indikator aus dem Markt verwenden würde?
Genauer gesagt:
gibt es einen Indikator "Automatic Trendline" auf dem Markt. Ich möchte einen darauf basierenden Roboter erstellen, der eine Position in dem Moment eröffnet oder schließt, wenn der Preis diese Linien auf dem Indikator kreuzt (und unter bestimmten zusätzlichen Bedingungen).
Für mich selbst ist das kein Problem. Für den Markt oder CodeBase können Sie nicht verwenden, jemand anderes Handwerk aus dem Markt ...
Für dich selbst, kein Problem. Du kannst nicht das Handwerk von jemand anderem vom Marktplatz oder von CodeBase verwenden...
Für dich selbst. Ich weiß nicht, wie man es macht. Ich kann den Code nicht in Open Source finden. Oder wie ich in meinen Code schrauben kann, damit er die Position der Zeilen erfasst.
Hallo, @Rad89
Sie benötigen die Funktionen iCustom() und CopyBuffer().
Hier ist ein Beispiel für das Hinzufügen eines vom Markt heruntergeladenen Indikators zu einem Expert Advisor
enum ENUM_NAME { ENUM_1, ENUM_jsdf .... ENUM_FEF; };Wie kann man Speicher für das E_NAME[] Array zuweisen, so dass genügend Speicher für alle möglichen ENUM_NAME Werte (ohne Wiederholungen) vorhanden ist?Und E_NAME[] mit allen möglichen Werten initialisieren?
Hallo, @pivomoe
Wenn Sie die Zuweisung numerischer Werte zu den Aufzählungselementen nicht erzwingen wollen (nach dem Beispiel zu urteilen, werden Sie das nicht tun), können Sie es so machen:
In diesem Fall müssen Sie auch die Konstante ändern, die die Anzahl der Elemente speichert, wenn Sie Elemente zur Aufzählung hinzufügen.
Außerdem ist es besser, das Präfix ENUM_ nur für den Namen der Aufzählung selbst zu verwenden und ein anderes Präfix für ihre Elemente zu benutzen. Diese Konvention wird in allen Standard-MQL-Aufzählungen verwendet.
Hallo, @pivomoe
Wenn Sie die Zuweisung von numerischen Werten zu den Aufzählungselementen nicht erzwingen wollen (nach dem Beispiel zu urteilen, werden Sie das nicht tun), können Sie es so machen:
In diesem Fall müssen Sie auch die Konstante ändern, die die Anzahl der Elemente speichert, wenn Sie Elemente zur Aufzählung hinzufügen.
Außerdem ist es besser, das Präfix ENUM_ nur für den Namen der Aufzählung selbst zu verwenden und ein anderes Präfix für ihre Elemente zu benutzen. Diese Konvention wird in allen Standard-MQL-Aufzählungen verwendet.
Vielen Dank für Ihre Hilfe. Ich verwende ENUM seit so vielen Jahren, dass ich gar nicht auf die Idee gekommen bin, die Hilfe zu lesen.