Letzte Werte aus der History
Hallo,
ich möchte die letzten paar Werte der History überprüfen. Gesucht wird dabei der OpenPrice der (je nachdem!) letzten OP_BUYSTOP oder OP_SELLSTOP-Order. Beide werden immer vorliegen. Meine Idee ist, ein Array über z. B. die letzten sechs Werte zu erstellen, aus dem dann je nach erfüllter Bedingung die Buy- oder Sell-Order selektiert wird. Die Situation im Tester ist so, dass es zwei Deleted-Positionen gibt (ein OP_BUYSTOP und eine OP_SELLSTOP-Position). Das Problem: die for-Schleife wird nicht verlassen. Wenn ich die Daten nach der Schleife printe, sehe ich, dass er immer wieder nur eine der beiden Orders listet... Anbei der Code und Danke im Voraus! Code:
int ArOrdersHistory[]; |
Du kannst iPos_H doch nicht NACH jedem Schleifendurchlauf verringern und gleichzeitig im Schleifenkörper jedesmal erhöhen.
Außerdem ist dein Array unnötig groß. Beim ersten Durchlauf ist er so groß wie OrderHistoryTotal() und bei jedem weiteren +1. Alle vorherigen Plätze im Array (also 0 - OrdersHistoryTotal()-1) sind bei dir leer. Das ist echte Verschwendung. Dein Code würde so "richtiger" sein. Code:
int ArOrdersHistory[], arr_count = 0; |
Wenn tatsächlich nur die letzte PendingOrder gesucht wird, dann geht das ganz einfach:
Code:
double lastopenprice; |
Naja, wenn er immer die letzte BUY und SELL meint, so könnte man deinen Code
z.B. so erweitern Code:
double lastopenprice_b = 0, lastopenprice_s = 0; |
Zitat:
Anders beschrieben (also das, was ich am Ende eigentlich will): Jeden Abend soll die jeweils eine bestehende SELLSTOP und BUYSTOP gelöscht werden. Beim Handelsbeginn sollen beide wieder geöffnet werden, abhängig davon, wo der Eröffnungskurs liegt. Also z. B. Ask>OpenPrice der gel. BUYSTOP, dann BUYSTOP x Punkte höher in den Markt legen. Letzteres krieg ich schon hin. Was ich nicht hinkriege: Ich dachte, aus der Long-Richtung lösche ich einfach zuerst den SELL, dann den BUY und habe den BUY als letzte Position in der History. Aber Pustekuchen: obwohl die Delete-Anweisungen chronologisch nacheinander im Code stehen, wird zuerst die BUY gelöscht... (also grob: for-Schleife über OrdersTotal, dann OrderSelect, if SELL dann löschen, danach if BUY dann löschen. Gelöscht wird aber in der Reihenfolge des Anlegens der STOPs. Wenn ich sicherstellen kann, dass zuletzt die eigentlich gewünschte STOP-Order gelöscht wird, dann, TraderDoc, ist dein Code der richtige. Gelöst werden muss also das eine oder das andere Problem... Danke nochmal für eure Hilfe. P.S. für next user: Habe im Körper iPos_H++ in iPos_H-- geändert, nützte aber nichts... |
Zitat:
Wenn hier Handelsbeginn ein Neustart heißt, könntest du die Ordernummern vielleicht auch einfach in einer Datei speichern, wobei bei dieser Kleinigkeit auch einfach in einer Schleife abgefragt werden kann. Zitat:
Somit macht der Code genau das, was er soll. Er ermittelt den Preis der letzten gelöschten Order entsprechenden Typs. Also nochmal kurz mit Kommentar Code:
double lastopenprice; Zitat:
brauchst du es garnicht zu machen. So wie du es jetzt gemacht hast, verringerst du iPos_H jedesmal um 2. |
Zitat:
Jetzt steh ich aber doch wegen der vorhin beschriebenen Absicht auf dem Schlauch: "if ask>lastopenprice" dann "lastopenprice+10" und nochmal gucken, wenn wieder ask>[lastopenprice+10] dann wieder +10, alles bis ask<lastopenprice, dann OrderSend BUYSTOP...: Wie macht man das (ich dachte, ich hätt ne Schleife, hab ich aber nicht...)? OrderSend kann ich dabei selber schon prima erstellen! Danke wieder im Voraus!! |
Ich versteh grad nicht, wieso du in einer Schleife lastopenprice solange um 10 erhöhen willst, bis es über ask ist.
Wieso machst du nicht einfach sowas wie Code:
if(Ask > lastopenprice) |
Zitat:
Unabhängig davon, ob man das für dumm erachtet: Wie erhöht man den Wert...? THX!! |
Zitat:
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:02 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum