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)
-   -   Abstand zu bestehenden Orders überprüfen (http://www.expert-advisor.com/forum/showthread.php?t=6153)

Hippo25 19.07.18 18:32

Abstand zu bestehenden Orders überprüfen
 
Hallo
Ich möchte, das bevor der EA eine Order öffnet, er überprüft ob schon eine order mit dem gleichen oder einem ähnliche wert besteht
Der abstand den er überprüfen soll ist in zwei Variablen gespeichert.
als wert soll true oder false herraus kommen.


PHP-Code:

bool AbstandStimmt

int AbstandOben
//mindestabstand über der Order
int AbstandUnten//mindestabstand unter der Order


void OnTick()
  {
//Abstand zu bestehenden Order ermitteln 
  
  
   
   
for(AbstandStimmt=true;)
     { 
      
bool Select OrderSelect(AbstandStimmtSELECT_BY_POSMODE_TRADES);

      if (
Select == True && OrderSymbol()== Symbol() && OrderMagicNumber()==MagicNumber && AktuellerKaufwert OrderPrice AbstandOben && AktuellerKaufwert OrderPrice AbstandUnten  
         
     }
   
   
  } 

Das mit den schleifen mit select Abfragen kapier ich nicht wirklich. Ich denke da immer an Mysql. Kann mir da jemand auf die sprünge helfen.
Für mich sieht stimmig aus. Aber metatrader sagt was anderes

gruss
Hippo

MA-EA 19.07.18 19:26

Was für ein Abstand? :confused:


Sollen mehrere Orders in die gleiche Richtung geöffnet werden?

Leopold 19.07.18 23:00

Ich weis zwar nicht was genau du vor hast, aber da sind einige Fehler drin. Bitte lese dir mal die Doku zu Schleifen und OrderSelect durch:

https://docs.mql4.com/basis/operators/for
https://docs.mql4.com/trading/orderselect

Ich weis nämlich wirklich nicht wie ich dir helfen kann, bei dem Code. :confused:

---Leopold---

Hippo25 20.07.18 12:11

Hallo

Allso, wenn ich da richtig verstanden habe dann wäre das eine Möglichkeit

Als erstes die Variablen
PHP-Code:

bool AbstandStimmt//gibt true oder false aus. wird später bei Order eröffnung abgefragt
double AktuellerKaufwert// Zu zahlender betrag bei order auslösung
int AbstandOben//mindestabstand über der zu Prüfenden Order. Ist der aktuelle Kaufkurs in diesem bereich soll die antwort false sein. 
int AbstandUnten//mindestabstand unter der zu Prüfenden Order. Ist der aktuelle Kaufkurs in diesem bereich soll die antwort false sein 

bool AbstandStimmt //gibt true oder false aus. wird später bei Order eröffnung abgefragt Nur bei True wird die Order ausgeführt.

int AbstandOben; //mindestabstand über der zu Prüfenden Order. Ist der aktuelle Kaufkurs in diesem bereich soll die antwort false sein.
int AbstandUnten; //mindestabstand unter der zu Prüfenden Order. Ist der aktuelle Kaufkurs in diesem bereich soll die antwort false sein.

nun wann es ausgefürt wird.
PHP-Code:

void OnTick() 

Die eröffnung der For schleife Standart ist "AbstandStimmt = Wahr. Wenn ergebniss false soll er dies in AbstandStimmt eintragen und kann aus der schleife aussteigen.

PHP-Code:

 for(AbstandStimmt =True;AbstandStimmt False;AbstandStimmt ++) // 
for schleife 

Jetzt soll das Ganze jede Order prüfen mit den vorgegebenen Bedingungen als ergebniss kommt true oder false raus

PHP-Code:

if (Select == True && OrderSymbol()== Symbol() && OrderMagicNumber()==MagicNumber && AktuellerKaufwert OrderPrice AbstandOben && AktuellerKaufwert OrderPrice AbstandUnten  ) ; 

Ist das so ungefähr richtig

gruss Micha

MA-EA 20.07.18 13:29

Hä? Was soll der Zweck von dem Ganzen sein? :confused:

Aber:

1. Order(s) suchen mit der for-Schleife
Code:

for(i=OrdersTotal()-1;i>=0;i--){
2. Order selektieren
Code:

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
3. Schaun was für Eine es ist. Bzw. wenns die Richtige zu sein scheint, danach Deine Bedingungen eintragen.
Code:

if((OrderType()==OP_SELL||OrderType()==OP_BUY)&&(OrderMagicNumber()==Buy_MagicNumber||OrderMagicNumber()==Sell_MagicNumber)&&OrderSymbol()==Symbol())bool IsInv=true;}}
So ganz seh ich da auch nicht durch. Aber aus Deinem Code werd ich noch weniger schlau. :confused:

Leopold 20.07.18 13:29

Hallo,

nein, ich glaube nicht dass du das so willst.
Ich denke das sollte ungefähr so aussehn:

Code:

void OnTick()
  {
  Schleife für OrderSelect benötigst du damit du die Orders abfragen kannst (wie beim letzen Thema) außer du weist die Ticketnummer, dann würdest du keine Schleife benötigen.
      {
      In dieser Schleife benötigst du dann die if Abfrage die oben steht mit einer Operation (AbstandStimmt = False;)(Nach einer if Bedingung muss eine Operation stehn da sonst nichts ausgeführt wird)
      }
  Dann kannst du außerhalb der Schleife den Code schreiben, wass passieren soll wenn AbstandStimmt = False.
  }

https://docs.mql4.com/basis/operators/if

---Leopold---

traderdoc 20.07.18 16:05

@Hippo25, ohne Dir jetzt zu Nahe zu treten, aber so wird das nichts.
Dir fehlen die elementaren Grundlagen in der MQL-Programmierung und uns fehlen Informationen zu Deiner Idee.

Deshalb wäre es sehr von Vorteil, wenn Du Dich erst einmal näher mit MQL beschäftigst, indem Du bestehenden Code Zeile für Zeile sezierst und verstehst, wie programmiert wird und wie bestimmte Idden umgesetzt werden.

Alles andere würde hier in ellenlange Posts ausarten und im Endeffekt kommt wahrscheinlich doch nicht das heraus, was gewünscht war.

Ich kann mich auch nicht als Autofahr-Anfänger plötzlich in einen Formel1-Wagen setzen und vernünftig damit fahren. Irgendwie evtl., aber richtig nicht.

traderdoc

Leopold 20.07.18 16:42

Stimmt!

Da ist auch das Helfen ziemlich mühsam.

---Leopold---

Hippo25 21.07.18 17:54

OK werde das ganze nochmal am
 
OK
werde das ganze nochmal am nachlesen und Probieren
und melde mich danach nochmal.

danke
Hippo


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