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
Hallo mladen, leider habe ich es gerade noch einmal versucht und es funktioniert immer noch nicht.
Gibt es eine andere Möglichkeit, wie ich meinen Handel basierend auf einem bestimmten Zeitpunkt schließen kann?
Mit freundlichen Grüßen
RyanIch habe diesen Code verwendet:
int init() { return(0); }
int deinit() { return(0); }
void start(void)
{
bool result;
if(OrdersTotal()>0)
{
if (TimeCurrent()>= StrToTime("07:00:00"))
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if (!UseCurrSymbol || OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
double pBid=MarketInfo(OrderSymbol(),MODE_BID);
result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);
}
if (OrderType()==OP_SELL)
{
double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);
}
}
}
}
return;
}
Um zu testen, und es schloss die Bestellung (siehe das Beispiel)
Ich habe diesen Code verwendet:
int init() { return(0); }
int deinit() { return(0); }
void start(void)
{
bool result;
if(OrdersTotal()>0)
{
if (TimeCurrent()>= StrToTime("07:00:00"))
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if (!UseCurrSymbol || OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
double pBid=MarketInfo(OrderSymbol(),MODE_BID);
result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);
}
if (OrderType()==OP_SELL)
{
double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);
result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);
}
}
}
}
return;
}
Zu testen, und es schloss den Auftrag (siehe das Beispiel)
Hallo mladen, danke. Das Problem wurde bei mir gelöst. Nur eine Randbemerkung, können Sie mir ein wenig erklären, was der Zweck dieser wenigen Zeilen in Ihrem Code ist?
extern bool UseCurrSymbol = false; und
if (!UseCurrSymbol || OrderSymbol()==Symbol())
Mit freundlichen Grüßen
Ryan
Hallo mladen, danke. Das Problem wurde bei mir gelöst. Nur eine Randbemerkung, kannst du mir ein wenig erklären, was der Zweck dieser wenigen Zeilen in deinem Code ist?
extern bool UseCurrSymbol = false; und
if (!UseCurrSymbol || OrderSymbol()==Symbol())
Gruß
RyanSie haben die Variable UseCurrSymbol und genau diese Zeile in Ihrem Code verwendet
Ich musste diese Variable erstellen, damit der Code die gleichen Variablen wie dein Code verwendet
Du hast die UseCurrSymbol-Variable verwendet und genau diese Zeile in deinem Code musste ich zu einer Variablen machen, damit der Code die gleichen Variablen wie dein Code verwendet
Hallo mladen, entschuldige, ich habe diesen Teil des Codes aus den Quellen, die du mir vorhin gegeben hast.
was ich meinte war, warum müssen wir ein bool UseCurrSymbol auf false setzen und was ist der Zweck der 2. Zeile für --> if (!UseCurrSymbol || OrderSymbol()==Symbol())
Hallo mladen, entschuldige, ich habe diesen Teil des Codes aus den Quellen, die du mir vorhin zur Verfügung gestellt hast. Was ich meinte, war, warum müssen wir ein bool UseCurrSymbol auf false setzen und was ist der Zweck der zweiten Zeile für --> if (!UseCurrSymbol || OrderSymbol()==Symbol())
Es ist nicht nötig, diese Option auf false zu setzen.
Wenn Sie diese Option auf true setzen, wird nur das aktuelle Symbol auf Aufträge geprüft. So können Sie auswählen, welche Aufträge Sie verarbeiten wollen.
Hallo Leute!
Ich habe das folgende Problem.
Ich möchte, dass ein Wert eines icustom indi z.B. iCustom(NULL,0, "MACD",12,26,9,0,i) in einer Unterfunktion wie verwendet wird:
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
um den Impuls des "iCustom(NULL,0, "MACD",12,26,9,0,i)" zu erhalten...
Wenn ich es normal mit Mom(High,22,Bars,i) aufrufe
aufrufe, funktioniert es, aber wenn ich den benutzerdefinierten indi anstelle des "High" verwende, funktioniert es natürlich nicht.
Meine Frage ist also, wie kann ich das implementieren, damit der Code funktioniert?
Danke für jede Hilfe!
Auf Wiedersehen, AT
Hallo Leute!
Ich habe das folgende Problem.
Ich möchte einen Wert eines icustom indi z.B. iCustom(NULL,0, "MACD",12,26,9,0,i) in einer Unterfunktion verwenden wie:
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
um den Impuls des "iCustom(NULL,0, "MACD",12,26,9,0,i)" zu erhalten...
Wenn ich es normal mit Mom(High,22,Bars,i) aufrufe
aufrufe, funktioniert es, aber wenn ich den benutzerdefinierten indi anstelle des "High" verwende, funktioniert es natürlich nicht.
Meine Frage ist also, wie kann ich das implementieren, damit der Code funktioniert?
Danke für jede Hilfe!
Tschüss, ATbei120
Haben Sie überhaupt einen Indikator namens "macd" im Indikatorenordner (ich meine nicht den eingebauten macd, sondern einen benutzerdefinierten macd)? Wenn ja, überprüfen Sie, ob die Parameter korrekt sind.
Hallo Mladen!
Danke für die schnelle Wiederholung!
Sorry MACD war ein schlechtes Beispiel, nehmen Sie eine andere indi eine benutzerdefinierte MACD oder etwas ähnliches.
Ich habe die Ausgabe über extra Fenster und Testindi /Output überprüft, um die richtigen Einstellungen zu setzen,
um sicher zu sein, dass "iCustom(NULL,0, "myIndi",0,i)" die richtigen Parameter hat. Natürlich ist es kompiliert, der richtige Ordner, usw...
Ich bekomme immer den Fehler (wenn ich eine Variable verwende) - z.B.
double mom1 = iCustom(NULL,0, "myIndi",0,i); -> mom(mom1,Bars,20,i)
-> "mom" - Parameter conversation nicht erlaubt oder wenn ich ihn direkt verwende ->
mom( iCustom(NULL,0, "meinIndi",0,i),Balken,20,i)
Fehler: iCustom - Parameter als Referenz übergeben, Variable erwartet
Danke für Hilfe und Infos!
Tschüss, AT
Hallo Mladen!
Danke für die schnelle Wiederholung!
Sorry MACD war ein schlechtes Beispiel, nehmen Sie eine andere indi eine benutzerdefinierte MACD oder etwas ähnliches.
Ich habe die Ausgabe über das Extra-Fenster und Testindi /Output überprüft, um die richtigen Einstellungen zu setzen,
um sicher zu sein, dass "iCustom(NULL,0, "myIndi",0,i)" die richtigen Parameter hat. Natürlich ist es kompiliert, der richtige Ordner, usw...
Ich bekomme immer den Fehler (wenn ich eine Variable verwende) - z.B.
double mom1 = iCustom(NULL,0, "myIndi",0,i);-> mom(mom1,Bars,20,i)
-> "mom" - Parameter conversation nicht erlaubt oder wenn ich ihn direkt verwende ->
mom( iCustom(NULL,0, "meinIndi",0,i),Balken,20,i)
Fehler: iCustom - Parameter als Referenz übergeben, Variable erwartet
Danke für die Hilfe und Info!
Tschüss, ATWenn Sie einen einfachen iCustom() Aufruf verwenden, kann der Fehler nur bei den Parametern auftreten.
Sie können iCustom() nicht als Parameter für die mom()-Funktion verwenden (sehen Sie sich den Kopf der mom-Funktion an und Sie werden sehen, welche Parameter und welche Art von Parametern die mom()-Funktion akzeptiert). Das Ergebnis von iCustom() ist als "double" definiert - es kann nicht die Geschwindigkeit eines per Referenz übergebenen Arrays annehmen. Schau dir auch diesen Thread an: https: //www.mql5.com/en/forum/173108 - vielleicht hilft er dir
Hallo Mladen!
Ich denke der Aufruf meines iCustoms ist richtig, denn im Test und im Normalbetrieb( Datenexportieren oder als indi verwenden)
funktioniert es bis jetzt einwandfrei. Ich denke das Problem ist wie du erwähnt hast value double/array.
Wenn ich jetzt einen
double mom1[];
mom1 = iCustom(NULL,0, "myIndi",0,i);
und als ein -> mom(mom1,Bars,20,i);
-> "mom" - Parameter conversation nicht erlaubt
Wie schreibe ich das richtig?
Vielen Dank und auf Wiedersehen, AT