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)
-   -   Scalper (http://www.expert-advisor.com/forum/showthread.php?t=5493)

MA-EA 19.02.17 22:14

Scalper
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Fang mal nen extra Thema an.

Das steht zu For Schleifen in meinem neuen tollen Buch drin:

http://www.imgbox.de/users/public/th...ab5wqPGO_t.gif

Kurz gefasst gehts um nen automatischen Scalper, der, wenn gerade keine Order offen ist, 1x Buy UND 1x Sell mit selben Parametern, Einstellungen etc. öffnet. Ausser dass, wenn einstellbare Werte der Posi über- oder unterschritten werden, diese jeweils seperat dicht gemacht werden. Nach Möglichkeit so, dass die Gewinner-Richtung Verluste, Spesen und ein paar Pipen Gewinn wieder rein holt.

Prinzip hin o. her, mein EA öffnet derzeit gar nix und ich kann noch nicht mal ne Meldung o. so finden, warum. :confused:

MA-EA 20.02.17 12:04

Das Bild müsste besser sein:
http://www.imgbox.de/users/public/images/Qmab5wqPGO.jpg

:D :rolleyes:

pascalper 20.02.17 13:28

Hin und Her macht Taschen leer :)
Unterschiedliche Orders (Parameter) würde ich ja noch verstehen, aber identische Parameter?
Das haben tausende schon probiert und niemand hat das geschaft.

MA-EA 23.02.17 16:56

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Hab die Schleifen und so aus meinen alten EAs eingebaut und immerhin öffnet er jetzt 2 Orders, 1 Buy und 1 Sell, wie er soll.

Allerdings hat er eben Keine davon geschlossen, obwohls höchste Zeit war. Liegts vielleicht an OrderClosePrice()? Kapiert er da was nicht? Besser mit OrderProfit() schließen?

Befürchte aber eher, dass die sch... Schleifen nicht richtig eingebunden wurden...

MA-EA 24.02.17 18:31

Ganz kurz gefragt: was ist falsch? Oder richtig? :confused:
Code:

//Close Buy
  for(j=OrdersTotal()-2;j>=1;j--){
    if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)){
      if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MagicNumber&&OrderSymbol()==Symbol()){//                          | Close Buy
        if((OCP<CPL)||(OCP>CPP)||(CAA=true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,DarkBlue);}}}
       
//Close Sell
    if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)){
      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MagicNumber&&OrderSymbol()==Symbol()){//                          | Close Sell
        if((OCP<CPL)||(OCP>CPP)||(CAA=true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,FireBrick);}}


MA-EA 02.03.17 00:23

Hallo.

Noch mal zusammen fassend:

for ist der Befehl und Start der (verhassten :mad: ) for Schleife

(i=OrdersTotal() deklariert i als OrdersTotal in der Schleife, weil OT() im EA allgemein ja schon mit int deklariert wurde

-1 daneben bedeutet, dass er von 0 offenen Orders ausgehn, also quasi von 0 offenen Orders zu zählen anfangen soll. Was für uns 0 (keine Orders offen) bedeutet, ist für ihn -1.

i>=0 solange mehr als -1 Orders offen sind, soll er mit den Zeilen darunter Buy und Sell Orders selektieren, und schließen, wenn die Bedingungen erfüllt sind. Da für ihn irgendwie 0 bedeutet, dass eine Order offen ist, wäre, wenn er beim zählen auf -1 kommt, gar keine Order offen.

i-- nach jedem Durchzählen soll der Startwert um 1 verringert werden. Also er zählt 1x durch. 2 Orders offen. Findet den Buy und schließt ihn. Startet die Schleife von vorne, fängt jetzt aber von 0 Orders an zu zählen.
1 Sell ist noch offen, für ihn also OrdersTotal()=0 (für uns wärs OT()=1, für uns wäre also eine Order offen). :wonder:

Er schließt den Sell, damit ist für ihn eigentlich OT()= -1. Für uns wärens OT()=0. Verringert den Startwert auf -1. Er zählt noch mal, findet keine Order mehr und beendet daher die Schleife.

Wenns nen anderen Weg gibt, sagts mir bitte, ich seh nämlich immer noch nicht durch. :confused: :(
Code:

//Close Buy
    if(OrderSelect(Ticket,SELECT_BY_TICKET)){
      if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MagicNumber&&OrderSymbol()==Symbol()){
        if((ORPR<CML)||(ORPR>CMP)||(CAA=true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,DarkBlue);}}
       
//Close Sell
    if(OrderSelect(Ticket,SELECT_BY_TICKET)){
      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MagicNumber&&OrderSymbol()==Symbol()){
        if((ORPR<CML)||(ORPR>CMP)||(CAA=true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,FireBrick);}}



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