|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Bid Zwischen Rectangle Widerstand Unterstützung
Hallo,
wie könnte man eine "If" Abfrage formulieren, wenn der Bidkurs zwischen einem eingezeichneten Rectangle Objekt liegt. Begründung: Ich habe in einem Chart verschiedene Widerstände und Unterstützungen eingezeichnet mit Rectangle Objekten. Jedesmal wenn der Kurs nun irgend eines der Objecte berührt oder darin liegt, soll ein EA eine Funktion ausführen. Problem: Zum einen habe ich zahlreiche Rectangles eingezeichnet, und die if Abfrage soll bei JEDEM Rectangle funktionieren Mein Ansatz geht irgendwie nicht: Code:
if (OB_Check(ZwischenRectangle)!=true)break; Code:
bool OB_Check(double ZwischenRectangle) { for (int vv = 0; vv <= 300; vv++) { ObereRectangleLinie[vv] = NormalizeDouble(ObjectGetDouble(0,vv,OBJPROP_PRICE1),NACHKOMMA); UntereRectangleLinie[vv] = NormalizeDouble(ObjectGetDouble(0,vv,OBJPROP_PRICE2),NACHKOMMA); if(Bid>ObereRectangleLinie[vv]&&Bid<UntereRectangleLinie[vv]) return(false); } } } } return(true); } |
|
|||
Dann nimm mal statt && die Zeichen || für die logische ODER-Verknüpfung.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke! Geht leider nicht
Habe die Rectangles von 1 bis n durchnummeriert - geht aber nicht. Zur Vereinfachung hier das vollständige TestProgramm Eigentlich müsste der Comment, wenn Bid zwischen einem Rectangle ist, auf 1 umspringen.... macht es aber nicht Code:
int ObereRectangleLinie[111],UntereRectangleLinie[111]; int start() { double ZwischenRectangle; if (PO_Check(ZwischenRectangle)!=true)Comment(1); if (PO_Check(ZwischenRectangle)==true)Comment(0); } bool PO_Check(double ZwischenRectangle) { for(int i = OrdersTotal()-1; i >= 0; i--) {ObereRectangleLinie[i] = NormalizeDouble(ObjectGetDouble(0,i,OBJPROP_PRICE1),1); UntereRectangleLinie[i] = NormalizeDouble(ObjectGetDouble(0,i,OBJPROP_PRICE2),1); if(Bid>ObereRectangleLinie[i]||Bid<UntereRectangleLinie[i]) return(false); } return(true); } |
|
|||
Ich verstehe den Iterator in deinem Testprogramm nicht:
for(int i = OrdersTotal()-1; i >= 0; i--) OrdersTotal() liefert dir doch die Anzahl deiner Orders zurück. Wenn du keine Order im Markt hast, kommst du gar nicht in die Schleife rein bzw. falls du weniger Orders im Markt hast als Rectangles, werden gar nicht alle Objekte getestet. Müsst hier nicht i mit der Anzahl deiner Objekte initialisiert und iteriert werden, in deinem Fall 111? |
|
|||
Dass das so nicht ging, war klar, denn das war auch nur der Hinweis auf die korrekte Logik der Abfrage bzgl. der Position des aktuellen Kurses.
Wie @FatSpiderman schon richtig bemerkte, hat da OrdersTotal() nichts zu suchen. Es muss nach den Objekten gesucht werden und bei ObjectGetDouble() muss u.a. der Parameter des ObjectNamens!! angegeben werden und ein Index. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Aaaah ja, stimmt
So geht´s Code:
int ObereRectangleLinie[111],UntereRectangleLinie[111]; int start() { double ZwischenRectangle; if (PO_Check(ZwischenRectangle)!=true)Comment(1); if (PO_Check(ZwischenRectangle)==true)Comment(0); } bool PO_Check(double ZwischenRectangle) { for(int i = 111; i >= 0; i--) {ObereRectangleLinie[i] = NormalizeDouble(ObjectGetDouble(0,i,OBJPROP_PRICE1),1); UntereRectangleLinie[i] = NormalizeDouble(ObjectGetDouble(0,i,OBJPROP_PRICE2),1); if(Bid<ObereRectangleLinie[i]&&Bid>UntereRectangleLinie[i]) return(false); } return(true); } |
|
|||
Wenn das tatsächlich gehen sollte, dann hättest Du den Objekten die Namen "0" bis "111" gegeben müssen, was etwas ungewöhnlich wäre.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
JA habe ich, die werden automatisch eingezeichnet und durchnummeriert - alternativ zeichne ich die manuell ein und gebe den Rectangles auch eine Nummer....
DANKE nochmal |
|
|||
hier den geändert:
Download Forex Indicator "SS SupportResistance v04c", Support and Resistance levels bzw SS_SupportResistance_v04c.mq4--MetaTrader 4/5 robots,Experts and Indicators source code advisors,Forex Automated Trading Systems. dort aber dann statt den Namen, die Widerstände und Unterstützungen durchnummerieren |
Lesezeichen |
Stichworte |
rectangle widerstand unterstützung |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|