Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36908
Benutzer: 6.076
Aktive Benutzer: 496
Links: 80
Wir begrüßen unseren neuesten Benutzer: Spitzmaus
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 6 Stunden
- Spitzmaus
vor 9 Stunden
- juleslesqu...
vor einem Tag
- hmf44
vor einem Tag
- Crossa
vor einem Tag
- snatshit

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 35
Gesamt: 35
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 29.07.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,0);
double sl = TrailingStopLoss;
if (Bid > sl) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My Order",16384,0,Green);

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #12 (permalink)  
Alt 29.07.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Hey,
danke für die Antwort.
Ich habe den Code implimentiert, aber er will trotzdem nicht.
Jetzt wirft er mir den Fehlercode 4051 hinterher, aber die Lotanzahl ist per extern double Lots
festgelegt...
Angehängte Dateien
Dateityp: mq4 Neuer Versuch Long only.mq4 (4,0 KB, 4x aufgerufen)
  #13 (permalink)  
Alt 29.07.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,0);
double sl = TrailingStopLoss;
Den Teil unbedingt in die Funktion start() unter double Ticket; schreiben.

Ich gehe mal davon aus, dass die Custom-Werte des Super-Indis Kurswerte sind!?
Ansonsten mal auslesen über
double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,0);
Print (DoubleToStr(TrailingStopLoss, Digits);

Ansonsten ticket und ticket2 mit int deklarieren!

bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Open[0]-Point*sl,OrderTakeProfit(),0);

sl liegt bereits als subtrahierbarer Wert vor. Das Point müßte schon mal gelöscht werden, nur dann würde der modifizierte sl sehr, sehr tief liegen!!

Wozu aber OrderModify(), wenn der sl bereits bei OrderSend() angegeben wurde und das OrderTakeProfit() ergibt eh 0, weil nicht gesetzt.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #14 (permalink)  
Alt 30.07.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Hi,

suuuuper, hat mein erstes Problem gelöst!

Kurz zu dem sl:

Die Idee ist, einen TrailingStop auf Basis des SuperTrend-Indikators zu haben.
Deshalb soll der StopLoss immer mit dem SuperTrend verändert werden.

Mein Problem ist, dass er das nicht macht. Er lässt den StopLoss immer an der gleichen Stelle, nämlich an dem Ort, wo der ST stand, als die Position eröffnet wurde. Er zieht aber den Stopp nicht nach. Eigentlich müsste er ja jede Periode überprüfen, wie der ST steht und dann nachziehen. Das mit dem Überprüfen steht drin, er greift nämlich auf die Variable zu.
Code:
 bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Open[0]-sl,0,0);
Nur müsste er ja mit diesem Code auch den StopLoss der Order ändern.
Code:
if (Bid > sl) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My Order",16384,0,Green);
Möchte er aber irgendwie nicht. Habe ich was übersehen, oder fehlt ein Code?

LG

(PS: Meinst du wirklich, dass der SL zu tief sei?)
Angehängte Dateien
Dateityp: mq4 Neuer Versuch Long only.mq4 (4,4 KB, 5x aufgerufen)
  #15 (permalink)  
Alt 30.07.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Wenn eine! Order offen ist wird ab hier

if(ord > 0) return (0); //Abbrechen, es ist schon eine Position eröffnet.

das Programm verlassen. Damit kann der SL auch nicht verändert werden.

Außerdem greift der EA nicht nur jede Periode auf den Super-Indi zu, sondern mit jedem Tick. Soll er nur am Anfang jeder Kerze zugreifen, dann sollte das so aussehen: OldBar vorher global int datetime deklarieren.

if (Time[0] != OldBar) {
...
OldBar = Time[0];
}

Die Punkte sind nun der Platz, wo einmalig genau zu Beginn einer neuen Kerze eine Aktion stattfindet. Also bei Dir die Indikatorabfrage! Aber Achtung die letzte Ziffer muß eine 1 sein, weil auf den Wert der letzten geschlossenen! Kerze Bezug genommen wird.

double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,1);

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #16 (permalink)  
Alt 31.07.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Ich meine, nicht das ich mich beklagen würde:


Ich habe den Kontostandt verzehnfacht, aber gewollt waren so viele Positionen nicht
Vielen Dank für den Tipp mit if return(0), dass habe ich völlig übersehen.
Den Teil habe ich jetzt verübergehend entfernt, nur jetzt habe ich wieder das Problem mit den vielen Orders, siehe Bild.
Ich hatte auch mal daran gedacht, in die Einstiegsbedingung das zu schreiben:
Code:
if(rsio() == true && BBo() == true && sto() == true && OrdersTotal == 0)  
//Wenn Alle Indikatoren true sind und die offenen Positionen in diesem Markt 0 sind, eröffne eine long - Position.
Das hat aber leider irgendwie auch nicht funktioniert, auch wenn ich nicht weiß, warum.
Was mich auch wundert, ist, dass er zum Teil Positionen eröffnet, wo er keine Positionen eröffnen darf, also von den Startbedingungen her, die ich global definiert habe.
Das mit dem RSI habe ich noch nicht korrekt definiert (Weil ich noch herausfinden muss, wie ich das mit der Kreuzung der 70er Linie schreibe.),
aber das BollingerBand ist eigentlich korrekt definiert, und wird trotzdem oft einfach ignoriert.

LG
TrololoTromberino

Edit: Nachziehen mag er den SL immernoch nicht. Das kann vielleicht aber auch daran liegen:

Code:
2015.07.30 15:48:54.125 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Fehler beim Positionsliquidieren.
2015.07.30 15:48:54.125 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Open - Supertrend #-2147483645.8823
2015.07.30 15:48:54.125 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Openprice #1.1177
2015.07.30 15:48:54.125 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Supertrend #2147483647
2015.07.30 15:48:54.061 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Fehler beim Positionsliquidieren.
2015.07.30 15:48:54.054 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Open - Supertrend #-2147483645.8823
2015.07.30 15:48:54.054 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Openprice #1.1177
2015.07.30 15:48:54.054 2015.06.26 16:30  Neuer Versuch Long only EURUSD,M15: Supertrend #2147483647
2015.07.30 15:48:54.045 Neuer Versuch Long only inputs: Lots=1; Slip=2; 
2015.07.30 15:48:54.041 TestGenerator: unmatched data error (volume limit 623 at 2015.07.24 13:00 exceeded)
2015.07.30 15:48:54.039 TestGenerator: unmatched data error (volume limit 349 at 2015.07.23 22:00 exceeded)
2015.07.30 15:48:51.939 TestGenerator: current spread 16 used
Kann man einen solchen Wert konvertieren?
Angehängte Grafiken
Dateityp: jpg Bild 2.jpg (30,4 KB, 53x aufgerufen)
Angehängte Dateien
Dateityp: mq4 Neuer Versuch Long only.mq4 (4,7 KB, 5x aufgerufen)

Geändert von trololotromberino (31.07.15 um 10:22 Uhr) Grund: Hatte noch etwas hinzuzufügen.
  #17 (permalink)  
Alt 01.08.15
Mitglied
 
Registriert seit: Sep 2010
Beiträge: 34
flotschi befindet sich auf einem aufstrebenden Ast
Standard

equity sieht aber schon etwas brutal aus
  #18 (permalink)  
Alt 01.08.15
Mitglied
 
Registriert seit: May 2015
Beiträge: 124
yytrader befindet sich auf einem aufstrebenden Ast
Standard

Hallo trololotromberino,

in der OrderModify Funktion benötigst du einen absoluten Kurs.
Diesen hast du schon in der Variable sl, daher entferne mal das Open[0] - und schon sollte es funktionieren.
Ich habe das nicht getestet, nur durch hinsehen, könnte also falsch sein.

Tip: Verwende doch den Debugger oder nutze Print-Statements,um dir die momentenen Werte anzuzeigen.

gruß

yytrader
  #19 (permalink)  
Alt 03.08.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Hi,

danke, der Tipp hat immerhin dafür gesorgt, dass ich überhaupt wieder Orders reinkriege.
Das Problem: Er schießt mir immernoch 10000 Orders pro Signal an die Börse und den Stopp zieht er leider nicht nach. Will er einfach nicht.
Ich bin den Stopp Zeile für Zeile durchgegangen, finde aber einfach nicht heraus, wo der Fehler liegt.

LG
Angehängte Dateien
Dateityp: mq4 Neuer Versuch Long only.mq4 (4,7 KB, 2x aufgerufen)
  #20 (permalink)  
Alt 03.08.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von trololotromberino Beitrag anzeigen
Hi,

danke, der Tipp hat immerhin dafür gesorgt, dass ich überhaupt wieder Orders reinkriege.
Das Problem: Er schießt mir immernoch 10000 Orders pro Signal an die Börse und den Stopp zieht er leider nicht nach. Will er einfach nicht.
Ich bin den Stopp Zeile für Zeile durchgegangen, finde aber einfach nicht heraus, wo der Fehler liegt.

LG
Das witzige an der Sache ist ja auch noch:
Ich lasse eine einzige Order erstellen (eigentlich):
Code:
if(rsio() == true && BBo() == true && sto() == true && OrdersTotal()== 0)  //Wenn Alle Indikatoren true sind und die offenen Positionen in diesem Markt 0 sind, eröffne eine long - Position.
{
         
         
         if (Bid > sl) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My Order",16384,0,Green);  //Order soll erstellt werden. 
         if(ticket == 0)
             {
                   Print("OrderSend failed with error #",GetLastError());
                
              }
          else
          Print("OrderSend placed successfully #" + string(ticket));
Danach kommt ja nur eine kleine Sicherung.
Und danach lasse ich einen Stoploss, den ich iniziiert habe, einfach nachziehen:
Code:
if (Time[0] != OldBar) {
         
   if( OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()==0 ) //Trailingstop, der auf Basis des SuperTrend Indikators nachgezogen werden soll. (Nur für Long)
   {
      if( OrderType()==OP_BUY ) 
      {
        bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),sl,0,0);
        if (ordermodify == false)
        {Alert ("Stoploss NICHT nachgezogen! ERROR!");}
        else
        {Alert ("StopLoss nachgezogen");}
      }           
   }  
OldBar = Time[0];
}
Aus mehr besteht ja der Quelltext noch gar nicht! Deshalb weiß ich auch nicht wo der Fehler liegen soll, weil meiner Meinung nach alles korrekt ist.
Angehängte Dateien
Dateityp: mq4 Neuer Versuch Long only.mq4 (4,8 KB, 2x aufgerufen)
Thema geschlossen

Lesezeichen

Stichworte
k.g. trololotromberino system, mql4, programmierung, programmierung metatrader, trading system, tradingsystem


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------