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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4245
Beiträge: 39284
Benutzer: 6.551
Aktive Benutzer: 258
Links: 80
Wir begrüßen unseren neuesten Benutzer: Jonnes
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 2 Tagen
- Jonnes
vor 2 Tagen
- bluesdd
vor 4 Tagen
- KEY
vor 5 Tagen
- aliconii
vor einer Woche
- Matthias

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 135
Gesamt: 137
Team: 0
Team:  
Benutzer:  TraderDirk, traderdoc
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 16.04.19
Neues Mitglied
 
Registriert seit: Apr 2019
Beiträge: 12
Tox01 befindet sich auf einem aufstrebenden Ast
Standard OpenRangeBreakOut funktioniert nicht

Hallo zusammen,

ich bin Anfänger in Sachen Programmierung und versuche mich Schritt für Schritt an die Materie einzuarbeiten.
Aktuell versuche ich mich an einem Expert Advisor, welcher allerdings nicht das tut, was er soll. Und ich komme einfach nicht darauf, an was es liegen könnte.

Was er tun soll:
- von 8-9 Uhr das höchste Hoch und das tiefste Tief erfassen
- ab 9 Uhr einen Trade eingehen, sobald der Kurs über oder unter das Hoch bzw. Tief steigt oder sinkt, welches er zwischen 8 und 9 Uhr erfasst hat.
- er soll nur 1 Trade am Tag eingehen

Was er tut:
- er erfasst von 8-9 Uhr das höchste Hoch und das tiefste Tief
- ab 9 Uhr geht er eine Vielzahl von Trades ein

Woran könnte das liegen? Über Hilfe wäre ich sehr dankbar.

Code:
string Anfangszeit_alsString = "08:00";
string Endzeit_alsString = "09:00";
string EndeDesTages_alsString = "21:00";
datetime CurrentTime;
datetime Anfangszeit_alsZeit;
datetime Endzeit_alsZeit;
datetime EndeDesTages_alsZeit;

extern int StartHour = 8;
extern int EndHour = 21;
extern int MagicNumber=12345;
double pips, ticksize;
extern double LotSize=0.1;
bool TimeShift=false;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ticksize = MarketInfo(Symbol(),MODE_TICKSIZE);
   if(ticksize==0.00001 || ticksize==0.001 || ticksize== 0.1)
   pips=ticksize*10;
   else pips=ticksize;

   return(INIT_SUCCEEDED);
//---

  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
      Anfangszeit_alsZeit = StringToTime(Anfangszeit_alsString);
      Endzeit_alsZeit = StringToTime(Endzeit_alsString);
      EndeDesTages_alsZeit = StringToTime(EndeDesTages_alsString);
      
      double Hoechstkurs=0;
      double Tiefstkurs=0;
      
      if (TradingTime() == true)
      {    
         for (int i=0;i<60;i++)
         {
            datetime zeit =iTime(_Symbol,PERIOD_CURRENT,i);
         
            if(zeit <=Endzeit_alsZeit)
            {
               double hoch = iHigh(_Symbol,PERIOD_CURRENT,i);
            
               if(hoch>Hoechstkurs)Hoechstkurs=hoch;
            
               double tief = iLow(_Symbol,PERIOD_CURRENT,i);
            
               if(tief<Tiefstkurs||Tiefstkurs==0)Tiefstkurs=tief;
            }
      
            if(Anfangszeit_alsZeit==zeit)
            {
               Comment(Hoechstkurs," ", Tiefstkurs);
               break;
            }  
         }
      }
      else return;
      
      datetime aktuellerzeitstempel = iTime(_Symbol,PERIOD_CURRENT,0);
      
      if(aktuellerzeitstempel>Endzeit_alsZeit&&Hoechstkurs>0&&Tiefstkurs>0)
      {
         ObjectCreate("OpenRange "+TimeToString(TimeCurrent(),TIME_DATE),
                  OBJ_RECTANGLE,0,Anfangszeit_alsZeit,Tiefstkurs,
                  Endzeit_alsZeit, Hoechstkurs);
      }
      
      if(aktuellerzeitstempel>Endzeit_alsZeit&&Hoechstkurs>0&&Tiefstkurs>0&&iClose(NULL,0,0)>Hoechstkurs&&TimeShift==false)
      {
         OrderEntry(0);
      }
      if(aktuellerzeitstempel>Endzeit_alsZeit&&Hoechstkurs>0&&Tiefstkurs>0&&iClose(NULL,0,0)<Tiefstkurs&&TimeShift==false)
      {
         OrderEntry(2);
      }
  }
//+------------------------------------------------------------------+
//| TradingTime-Funktion                                             |
//+------------------------------------------------------------------+
bool TradingTime()
{
 CurrentTime = TimeHour(TimeCurrent());
 if (StartHour < EndHour)
    {
     if ((CurrentTime < StartHour) || (CurrentTime >= EndHour)) return(false);
    }      
 if (StartHour > EndHour)
    {
     if ((CurrentTime < StartHour) && (CurrentTime >= EndHour)) return(false);
    }
 return(true);
}
//+------------------------------------------------------------------+
//| Pair-FUnktion                                                    |
//+------------------------------------------------------------------+
int OpenOrdersThisPair(string pair)
{
   int total=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==pair)total++;
   }
   return(total);
}
//+------------------------------------------------------------------+
//| OrderEntrys                                                      |
//+------------------------------------------------------------------+
void OrderEntry(int direction)
{
   if(direction==0)
      if(OpenOrdersThisPair(Symbol())<=0)
         if(!OrderSend(Symbol(),OP_BUY,LotSize,Ask,3,Ask-20,Ask+20,NULL,MagicNumber,0,Green))
            Print("Order #",IntegerToString(OrderTicket())," Error in Ordersend. Error code=",GetLastError());

   if(direction==2)
      if(OpenOrdersThisPair(Symbol())<=0)
         if(!OrderSend(Symbol(),OP_SELL,LotSize,Bid,3,Ask+20,Ask-20,NULL,MagicNumber,0,Red))            
            Print("Order #",IntegerToString(OrderTicket())," Error in Ordersend. Error code=",GetLastError());
}
Mit Zitat antworten
  #2 (permalink)  
Alt 18.04.19
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 160
AVT befindet sich auf einem aufstrebenden Ast
Standard

Du mußt ihm verbieten, weitere Orders zu öffnen, sobald die erste rausging. Also nimmst Du eine Variable GenugGetan, die setzt Du am Tagesanfang auf =false. Dann erweiterst Du Deine Eintrittsbedingung um diese Variable.
Also: wenn wir innerhalb der Tradingzeit sind und die Range vorhanden ist und GenugGetan=false und der Preis außerhalb der Range ist, dann kann eine Order abgesetzt werden. Ist das ein Erfolg, setzt Du die Variable auf =true, damit ist für heute genug getan.
Ich hoffe, das hilft. AVT
Mit Zitat antworten
  #3 (permalink)  
Alt 21.04.19
Neues Mitglied
 
Registriert seit: Apr 2019
Beiträge: 12
Tox01 befindet sich auf einem aufstrebenden Ast
Standard

Danke dir, hab einiges noch verändert und nach bestem Wissen und Gewissen verbessert. Deinen Vorschlag habe ich nun eingebaut. Funktioniert wie es soll. Danke
Mit Zitat antworten
Antwort

Lesezeichen


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 +2. Es ist jetzt 18:46 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2019 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.
-----------------------------------------------------------------------------------------------------------------------------