Wie programmiert man? - Seite 336

 
tkuan77:
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

Ryan

Ich habe diesen Code verwendet:

extern bool UseCurrSymbol = false;

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)

Dateien:
test_closed.gif  63 kb
 
mladen:
Ich habe diesen Code verwendet:
extern bool UseCurrSymbol = false;

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

 
tkuan77:
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ß

Ryan

Sie 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

 
mladen:
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())

 
tkuan77:
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

 
at120:
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, AT

bei120

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

 
at120:
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, AT

Wenn 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

Grund der Beschwerde: