Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
in einem EA zu erfassen und so die Notwendigkeit von Eingabewerten für jeden Indikator zu umgehen.
Die Alternative in seinem Backtester ist, jeden Indikator
mit einem Signalpuffer manuell zu bearbeiten.
Versuchen Sie es mit diesem etwas einfachen, aber bisher einzig möglichen Ansatz.
Ausgaben:
ENUM-Elemente:
Anzahl=3
0 x1=-10
1 x2=0
2 x3=11
Es ist wichtig, vernünftige Werte für die Parameterstart undstop anzugeben, da der Zyklus vom minimalen zum maximalen ganzzahligen Wert (der standardmäßig verwendet wird, wenn die Parameter übersprungen werden) zu langsam ist, wenn man bedenkt, dass darin String-Funktionen verwendet werden.
bool AddEnum(ENUMTYPE enumIn) {
enumIn = 0;
//iterate through enum and add as combo box
for(int i = 0; i<sizeof(enumIn); i++, enumIn++) {
m_list.AddItem(EnumToString(enumIn),i);
PrintFormat("adding %i = %s", i, EnumToString(enumIn));
}
return(0);
}
Ich habe dies der Klasse CComboBox hinzugefügt, damit ich einen beliebigen ENUM-Typ übergeben kann und er als Kombinationsfeld hinzugefügt wird.
Aber Sie können es so ändern, dass es das tut, was Sie brauchen.
Das Problem ist, wenn Sie kein ENUM übergeben und etwas wie ein Double oder Float übergeben, könnte Ihre Anwendung abstürzen.
Ich glaube nicht, dass es eine Möglichkeit gibt, den übergebenen Datentyp zu überprüfen.
bool AddEnum(ENUMTYPE enumIn) {
enumIn = 0;
//iterate through enum and add as combo box
for(int i = 0; i<sizeof(enumIn); i++, enumIn++) {
m_list.AddItem(EnumToString(enumIn),i);
PrintFormat("adding %i = %s", i, EnumToString(enumIn));
}
return(0);
}
Ich habe dies der Klasse CComboBox hinzugefügt, so dass ich einen beliebigen ENUM-Typ übergeben kann und er als Kombinationsfeld hinzugefügt wird.
Aber Sie können es ändern, um das zu tun, was Sie brauchen.
Das Problem ist, wenn Sie kein ENUM übergeben und etwas wie ein Double oder Float übergeben, könnte Ihre Anwendung abstürzen.
Ich glaube nicht, dass es eine Möglichkeit gibt, den übergebenen Datentyp zu überprüfen.
Ja, das tut es, ups. Das ist mir gerade aufgefallen.
Zufälligerweise hatte die ENUM, die ich verwendet habe, 4 Eigenschaften:\
enum Combolist1{item1, item2, item3, item4, item5};
for(int i = 0; GetLastError()==0; i++) {Zum Beispiel gibt es eine Enum-Definition:
enum ENUM_FRUIT {APPLE, BANANA, GRAPE};
Als nächstes möchte ich sie in einer Schleife verwenden:
FRUIT_FIRST=APPLE, FRUIT_LAST=GRAPE};
for (ENUM_FRUIT i = APPLE; i <= FRUIT_LAST; ++i) {
Print(EnumToString(i));
}
#define FRUIT_FIRST APPLE
#define FRUIT_LAST GRAPE
for (ENUM_FRUIT i = APPLE; i <= FRUIT_LAST; ++i) {
Print(EnumToString(i));
}
PERIOD_M1, PERIOD_M2, PERIOD_M3, PERIOD_M4, PERIOD_M5, PERIOD_M6,
PERIOD_M10, PERIOD_M12, PERIOD_M15, PERIOD_M20, PERIOD_M30, PERIOD_H1,
PERIOD_H2, PERIOD_H3, PERIOD_H4, PERIOD_H6, PERIOD_H8, PERIOD_H12,
PERIOD_D1, PERIOD_W1, PERIOD_MN1};
ENUM_TIMEFRAMES next(ENUM_TIMEFRAMES curr){
for(int i=0; gcPeriods[i] != curr; ++i){}
return gcPeriods[i+1];
}
Schlechtes Design von was?
es bedeutet, dass die Anzahl der Mitglieder in enum speichern?
Ich weiß, dieses Gespräch ist ziemlich alt, aber hier ist ein einfacher Weg, um ein Array von jedem enum Typ zu füllen.
Ich füge nur meine Lösung für zukünftige Generationen hinzu, wie ich das Problem gelöst habe.
Das Problem ist also, die Anzahl der Einträge in der Enum dynamisch mit der Fähigkeit zu wissen, Enum-Werte hinzufügen oder entfernen. Ich muss dies für die Erstellung von festen Größe Arrays mit enum Werte als Array-Index wissen. Ich neige dazu, einen reservierten Wert am Ende der Aufzählung hinzuzufügen, der immer nur als Längenwert verwendet wird. Hier ist ein Beispiel.
Das ist schön und einfach, weil man nicht überall auf den letzten Eintrag fixiert sein muss wieSie können auch weitere Einträge am Ende der Aufzählung hinzufügen und das Array und die Schleife funktionieren trotzdem.