Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   iCustom, IndexBuffer verwenden für Order (http://www.expert-advisor.com/forum/showthread.php?t=5715)

Karabiner 08.06.17 15:44

iCustom, IndexBuffer verwenden für Order
 
Hallo,

ich bin neu hier und auch in der Programmierung von MQL4.
Der Zeit versuche ich einen einfachen EA zu programmieren und ihn mit dem Strategietester zu prüfen.
Folgendes Problem habe ich:
den icustom habe ich erstellt , den Buffer dort eingetragen den ich haben möchte (z.B. 3) und nun soll dieser Buffer, wenn er gefüllt/geschrieben wird durch die Berechnung des Indis, eine Buy oder Sell Order auslösen.

Für die Buy Order fällt mir nur nicht ein wie die (if) Bedingung aussehen muss ?

Code:

 
void OnTick()
 
 
 
 
{
  {
  double UP=iCustom(NULL,0,"Examples \\Indi-Name",21,14,3,1);
  double DN=iCustom(NULL,0,"Examples \\Indi-Name",21,14,2,1);
 

 }
 
  if (OrdersTotal ()<1)
    if(UP )

int buy = OrderSend(Symbol(),OP_BUY,0.10,Ask,3,(Ask - 0.0100),(Ask + 0.0025),NULL,0,0,clrNONE);

if (DN)
int sell = OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Bid + 0.0100),(Bid - 0.0025),NULL,0,0,clrNONE);


{

}
}


Wenn mir jemand weiterhelfen würde, wäre ich sehr froh darüber :)

Gruß der Karabiner

next user 08.06.17 17:52

Unter welchen Bedingungen, bzw. was willst du denn Abfragen, infolge dessen eine Order platziert werden soll?
Ich hab das irgendwie nicht richtig verstanden.

traderdoc 08.06.17 18:25

Als Erstes solltest Du Dir angewöhnen, einen strukturell klar gegliederten Code zu schreiben, auch wenn er nur kurz ist.

Code:

void OnTick() {
  double UP = iCustom(NULL,0,"Examples\\Indi-Name",21,14,3,1);
  double DN = iCustom(NULL,0,"Examples\\Indi-Name",21,14,2,1);
 
  if (OrdersTotal ()<1) {
      if (UP > ...)  {          //... ein Wert Deiner Wahl
        int buy = OrderSend(Symbol(),OP_BUY,0.10,Ask,3,(Ask - 0.0100),(Ask + 0.0025),NULL,0,0,clrNONE);
      }

      if (DN < ...)  {          //... ein Wert Deiner Wahl
        int sell = OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Bid + 0.0100),(Bid - 0.0025),NULL,0,0,clrNONE);
      }
  }
}

Die TP-Festlegung mit z.B. Ask + 0.0025 würde aber nur bei Wähungspaaren funktionieren, die mindestens 4 Kommastellen haben. Beim USDJPY mit einem Kurswert von z.B. 110.674 würde dann ein TP-Wert von 110.6765 resultieren, welchen der MT4 mit einem Fehler 130 quittiert (Invalid stops).

traderdoc

next user 08.06.17 19:42

Hey traderdoc,

hab erst durch deinen Code gesehen, das es wohl so
Code:

if(UP > ...)
if(DN < ...)

gemeint wahr.

@Karabiner:
Na siehst du, was das von traderdoc kritisierte anstellt :D

Karabiner 08.06.17 20:42

Hi,

schön das ihr geantwortet habt.:)

Also Hintergrund war das ich einen Signal Indi (Preis Signal, höchste und niedrigste =nen Pfeil) modifizieren wollte, in dem ich anstatt SetIndexArrow dort ne Zeit ausgeben wollte stattdessen. Das hab ich durch unwissen nicht auf die Reihe bekommen. Beim Googln und Youtuben bin ich dann über das automatisierte Traden gestolpert und das man sich diese EA selber erzeugen kann.

Also ich möchte immer, wenn der Iditor einen Pfeil setzt für long oder short, eine dementsprechende Order setzen ->buy oder sell. Um dann diesen EA auf seine profitabiltät zu testen.. Erstmal ne Spielerei .. Aber so lernt man es halt

Problem ist, wie setze ich die Order wenn ein z.B. "Up" Pfeil gesetzt wird? Das sollte im Buffer 3(oder 2, je nachdem wie es im Code des Indi geschrieben wurde) passieren

Gruß

Karabiner

Karabiner 08.06.17 20:43

Edit:

-Iditor
+ Indikator

Karabiner 08.06.17 20:47

Zitat:

Zitat von traderdoc (Beitrag 38859)
Als Erstes solltest Du Dir angewöhnen, einen strukturell klar gegliederten Code zu schreiben, auch wenn er nur kurz ist.

Code:

void OnTick() {
  double UP = iCustom(NULL,0,"Examples\\Indi-Name",21,14,3,1);
  double DN = iCustom(NULL,0,"Examples\\Indi-Name",21,14,2,1);
 
  if (OrdersTotal ()<1) {
      if (UP > ...)  {          //... ein Wert Deiner Wahl
        int buy = OrderSend(Symbol(),OP_BUY,0.10,Ask,3,(Ask - 0.0100),(Ask + 0.0025),NULL,0,0,clrNONE);
      }

      if (DN < ...)  {          //... ein Wert Deiner Wahl
        int sell = OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Bid + 0.0100),(Bid - 0.0025),NULL,0,0,clrNONE);
      }
  }
}

Die TP-Festlegung mit z.B. Ask + 0.0025 würde aber nur bei Wähungspaaren funktionieren, die mindestens 4 Kommastellen haben. Beim USDJPY mit einem Kurswert von z.B. 110.674 würde dann ein TP-Wert von 110.6765 resultieren, welchen der MT4 mit einem Fehler 130 quittiert (Invalid stops).

traderdoc

Genau das ist der Erleuchtungshaken if(UP> von was ?)

Karabiner 09.06.17 14:06

Hallo,

ich habe im Forum der forexfactory die passende Erklärung gefunden.
Trotzdem Danke für die Mühe und die Zeit meinen Beitrag zu lesen.
Vielleicht brauch ja jemand den Link zum Thema, daher häng ich ihn mal an.

https://www.forexfactory.com/showthread.php?t=285087

Gruß

Karabiner

traderdoc 09.06.17 17:03

Zitat:

Zitat von Karabiner (Beitrag 38872)
Hallo,

ich habe im Forum der forexfactory die passende Erklärung gefunden.
Trotzdem Danke für die Mühe und die Zeit meinen Beitrag zu lesen.
Vielleicht brauch ja jemand den Link zum Thema, daher häng ich ihn mal an.

https://www.forexfactory.com/showthread.php?t=285087

Gruß

Karabiner

Wofür die passende Erklärung?
Die Lösung für Deine Fragestellung im Eingangspost wurde doch umfänglich beantwortet.

traderdoc


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:26 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