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: 37902
Benutzer: 6.074
Aktive Benutzer: 496
Links: 80
Wir begrüßen unseren neuesten Benutzer: hmf44
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 4 Stunden
- hmf44
vor 8 Stunden
- Crossa
vor 9 Stunden
- snatshit
vor einem Tag
- Roerich
vor einem Tag
- John_Liver...

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 49
Gesamt: 51
Team: 0
Team:  
Benutzer:  bfranz, traderdoc
Freunde anzeigen

Empfehlungen

Werbung

Like Tree1Likes
  • 1 Post By Thilo1979
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.09.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard EA nach Voigt zur automatischen SL-Veränderung...kleines Problemchen

Hi Leute,

ich habe mich mal hingesetzt und versucht für ein anderes Forumsmitglied einen EA zu schreiben, der nach dem Buch von Voigt "Das große Buch der Markttechnik" den SL verändert.

Eigentlich ist mit dem Code alles super, nur irgendwie erkennt er den vorher gesetzten SL nicht.
Also man eröffnet eine Order mit SL und dann sollte der EA erkennen, dass man eine Order mit SL offen hat, und diesen SL automatisch verändern, trailingstop-mäßig.
Aber leider hat der EA überhaupt keine Lust, die gesetzte Order, oder den gesetzten SL zu verändern. Ich kriege keine Errormeldungen raus, aber etwas bewirken tut er auch nicht.

Wäre cool, wenn Ihr euch das mal kurz anschauen könntet.

Was ich auch noch machen wollte, ist, dass sollte eine Order ohne Stoploss gesetzt sein, dass der EA automatisch einen Stoploss setzt. Ich habe leider nur keinen Parameter gefunden, der sagt, ob ein SL gesetzt ist oder nicht. Kann mir den jemand sagen? Dann bau ich ihn noch ein.

LG

TrololoTromberino

Für die, die den Code nicht herunterladen wollen:
Code:
//+------------------------------------------------------------------+
//|                                          Stoploss nach Voigt.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Idea by Michael Voigt | Code by Korbinian Gabriel"
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
//---Prüfen, ob Order offen ist:
int total = OrdersTotal();

//-----------------------------------------------------------------------------------------
//---Sollte eine Order offen sein, aber kein Stoploss besitzen, soll einer erstellt werden.
//   if(total > 0 && ) WICHTIG: HIER KOMMT NOCH DER PARAMETER ZUR SL-ERKENNUNG REIN!!!
//   {
//      if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)
//      {
//         bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Low[1],0,0);
//               if (ordermodify == false)
//                  Print("Stoploss ",OrderTicket()," NICHT erstellt! ERROR!");
//               else
//                  Print("StopLoss ",OrderTicket()," erstellt");
//      }
//      
//      if(OrderSymbol() == Symbol() && OrderType() == OP_BUY)
//      {
//         bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Low[1],0,0);
//               if (ordermodify == false)
//                  Print("Stoploss ",OrderTicket()," NICHT erstellt! ERROR!");
//               else
//                  Print("StopLoss ",OrderTicket()," erstellt");
//      }
//   }
//   else Print("Keine Order offen"); return(0);    
   

//-----------------------------------------------------------------------------------------     
//---Außen- & Innenstäbe erkennen
      if (OrderSymbol() == Symbol() && OrderType() == OP_BUY && Low[2] < Open[1] && High[2] > Close[1])
      {
         Print ("Außen- & Innenstab erkannt! Stopänderung wird jetzt ausgeführt!");
         bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Low[3],0,0);
               if (ordermodify == false)
                  Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
               else
                  Print("StopLoss ",OrderTicket()," nachgezogen");
      }
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_SELL && High[2] > Open[1] && Low[2] < Close[1])
      {
         Print ("Außen- & Innenstab erkannt! Stopänderung wird jetzt ausgeführt!");
         bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),High[3],0,0);
               if (ordermodify == false)
                  Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
               else
                  Print("StopLoss ",OrderTicket()," nachgezogen");
      }
      

//-----------------------------------------------------------------------------------------      
//---Longorder Stop nachziehen      
      
      
      if (total > 0 && OrderType() == OP_BUY && Low[2] < Open[1] && High[2] < Close[1])
      {
         Print ("Stop wird nachgezogen");
         bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Low[1],0,0);
               if (ordermodify == false)
                  Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
               else
                  Print("StopLoss ",OrderTicket()," nachgezogen");         
      }

//-----------------------------------------------------------------------------------------      
//---Shortorder Stop nachziehen      
      if (total > 0 && OrderType() == OP_SELL && High[2] > Open[1] && Low[2] > Close[1])
      {
         Print ("Stop wird nachgezogen");
         bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),High[1],0,0);
               if (ordermodify == false)
                  Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
               else
                  Print("StopLoss ",OrderTicket()," nachgezogen");         
      }

//-----------------------------------------------------------------------------------------            
   return (0);   
  }
//+------------------------------------------------------------------+

__________________________________________________ _________
Wäre auch dankbar, wenn Ihr euch mal meinen EA anschaut und mir weiterhelfen könntet:
Expert-Advisor.com/EigenesTradingSystembrauchtHilfe
Angehängte Dateien
Dateityp: mq4 Stoploss nach Voigt.mq4 (5,0 KB, 57x aufgerufen)
  #2 (permalink)  
Alt 23.09.15
Mitglied
 
Registriert seit: Mar 2012
Ort: Wien
Beiträge: 191
Deepack befindet sich auf einem aufstrebenden Ast
Deepack eine Nachricht über Skype™ schicken
Standard

du musst die order erst auswählen
woher soll denn der EA wissen welche order verändert werden soll?!

Code:
OrderSelect(
  #3 (permalink)  
Alt 24.09.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Mucho Gracias amigo
Funktioniert jetzt!
__________________
Ich arbeite aktuell an einem eigenen EA und komme nicht weiter!
Wäre cool, wenn mir Coder ein wenig weiterhelfen könnten:
www.expert-advisor.com/etsbh
  #4 (permalink)  
Alt 10.11.15
Neues Mitglied
 
Registriert seit: Oct 2015
Beiträge: 1
Katana befindet sich auf einem aufstrebenden Ast
Standard

Ich Grüße Dich

Hast Du den EA nun fertig so das er funktioniert?

Wenn ja, könntest Du ihn dann bitte posten, da ich so was schon die ganze Zeit suche.

Danke im Voraus
  #5 (permalink)  
Alt 12.11.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Katana Beitrag anzeigen
Ich Grüße Dich

Hast Du den EA nun fertig so das er funktioniert?

Wenn ja, könntest Du ihn dann bitte posten, da ich so was schon die ganze Zeit suche.

Danke im Voraus
Leider nein, weil ich ein Problem habe:
Wenn ein Außenstab erkannt wurde, müsste ich den ja eigentlich irgendwie einspeichern können, damit ich abprüfen kann, ob auch die 20 Periode danach noch ein Innenstab ist.
Ich hab aber leider keine Ahnung, wie ich die Werte einer Periode abspeichern kann, sodass ich die immer vergleichen kann.
Kann mir da einer der alten Hasen weiterhelfen?
__________________
Ich arbeite aktuell an einem eigenen EA und komme nicht weiter!
Wäre cool, wenn mir Coder ein wenig weiterhelfen könnten:
www.expert-advisor.com/etsbh
  #6 (permalink)  
Alt 15.11.15
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

kann man das nicht über eine Funktion mit einer for ... Schleife lösen

also ungefähr so:


bool Innenstab = true;

for (int i=1;i< 20 ;i++)
{
if (iHigh(NULL,0,i+1)<iHigh(NULL,0,i) && (iLow(NULL,0,i+1)>iLow(NULL,0,i))
{
Innenstab=false;
return(Innenstab);
}
return(Innenstab)
}

also sinngemäß so, wenn in den letzten 20 Perioden kein Stab höher und tiefer als der Vorgänger war liefert die Variable Innenstab den Wert true, ansonsten false
  #7 (permalink)  
Alt 15.11.15
Benutzerbild von trololotromberino
Mitglied
 
Registriert seit: Jul 2015
Beiträge: 56
trololotromberino befindet sich auf einem aufstrebenden Ast
Standard

Ich habs so gemacht (Eigentlich ist es damit meiner Meinung nach gelöst):
Code:
//---Trailing - Stoploss
int total = OrdersTotal();
for(int i=0;i<=total-1;i++) {
//Stoploss für Long-Positionen
   if (OrderSelect(i,SELECT_BY_POS) && OrderType() == OP_BUY){  
      int a = 2;
      int b = 3;
      if(High[a] > Close[1] && Low[a] < Open[1]){
            bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Low[b],0,0);
               if (ordermodify == false)
                  Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
               else
                  Print("StopLoss ",OrderTicket()," nachgezogen");
            a++; b++;     

      }
      else {
         bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Low[1],0,0);
            if (ordermodify == false)
               Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
            else
               Print("StopLoss ",OrderTicket()," nachgezogen");
         }
      }

//Stoploss für Shortpositionen
      if (OrderSelect(i,SELECT_BY_POS) && OrderType() == OP_SELL){
         int a = 2;
         int b = 3;
         if(High[a] > Open[1] && Low[a] < Close[1]){
               bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),High[b],0,0);
                  if (ordermodify == false)
                     Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
                  else
                     Print("StopLoss ",OrderTicket()," nachgezogen");
                  a++; b++;
         }
         else {
            bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),High[1],0,0);
               if (ordermodify == false)
                  Print("Stoploss ",OrderTicket()," NICHT nachgezogen! ERROR!");
               else
                  Print("StopLoss ",OrderTicket()," nachgezogen");
            }
      }

}
Hoffe, dass das weiterhilft
__________________
Ich arbeite aktuell an einem eigenen EA und komme nicht weiter!
Wäre cool, wenn mir Coder ein wenig weiterhelfen könnten:
www.expert-advisor.com/etsbh
  #8 (permalink)  
Alt 15.11.15
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

jo sieht auf'm ersten Blick aus als wäre es dasselbe
  #9 (permalink)  
Alt 21.06.16
Mitglied
 
Registriert seit: Jan 2016
Beiträge: 31
Thilo1979 befindet sich auf einem aufstrebenden Ast
Standard

Auch wenn ich damit etwas spät komme - so einen EA gibt es doch schon (von divebubble aus der Forexfabrik). Der hat(te) auch ein Innenstabproblem, wenn ich mich recht entsinne.
Crashbulle likes this.
  #10 (permalink)  
Alt 07.12.16
Gesperrter Benutzer
 
Registriert seit: Dec 2016
Beiträge: 1
boomo befindet sich auf einem aufstrebenden Ast
Standard

Stimmt Thilo. Das Ding von divebubble war's nicht wirklich. Hab ich ausprobiert.

Bin nach längerer Suche fündig geworden:

Habe den "InsideBarStop" seit längerer Zeit im Einsatz.
Zwar nicht ganz umsonst, funzt aber einwandfrei.

Im mql5-Market gibts for free den "InsideBarStop"-Indikator zum EA.
Damit kann man testen wie der Stop-Algorithmus funktioniert.

Den zugehörigen Expert für den halbautomatischen Handel
- man eröffnet die Position selbst und der EA handelt die Position durch -
gibt's für faire 39 Dollar.

Die Firma bietet seit kurzer Zeit auch eine Version 2.0 für den vollautomatische Handel mit integriertem Moneymanagement an. Is super, da wird die Positionsgröße automatisch berechnet. Als Käufer der mql5-Version hab ich den Upgrade umsonst bekommen.

Kann ich allen empfehlen die nicht unbedingt was selbstgebasteltes brauchen
Thema geschlossen

Lesezeichen

Stichworte
ea voigt, expert advisor voigt, mql4, programmierung, programmierung metatrader, sl voigt, stoploss voigt, voigt


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 20:09 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.
-----------------------------------------------------------------------------------------------------------------------------