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: 4973
Beiträge: 43257
Benutzer: 7.220
Aktive Benutzer: 82
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

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

Empfehlungen

Like Tree33Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #31 (permalink)  
Alt 19.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Gar keinen.

traderdoc
Lampe likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #32 (permalink)  
Alt 19.01.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

eine if-Abfrage braucht natürlich auch Rechenleistung, bei einer Einzelnen ist diese aber verschwindend gering.
Wenn Dein EA aber mal grösser wird, und Du 50 if-Abfragen pro Tick hast, Du den EA vielleicht noch in mehreren Chars laufen lässt und dann noch Wirtschaftszahlen kommen, so dass sehr viele Tick pro Sekunde kommen, dann kann Dein PC schonmal hinterherhinken.
Deshalb ist es sinnvoll, alles was auch OnTimer() oder OnChartEvent() laufen kann, dort auszuführen.
Z.B. ist es Unsinn die Daten vergangener Kerzen bei jedem Tick abzufragen.
Lampe likes this.
  #33 (permalink)  
Alt 19.01.18
Auf eigenen Wunsch deaktiviert
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Was mir zu diesem Thema seit längerem durch den Kopf geht und auch zum Thema passt, wo liegen eigentlich die Grenzen von dem was son Computer binnen einen Ticks berechnen kann?

Wie du eben sagtest wenn man einen großen EA hat mit vielen if Abfragen und Berechnungen ist das dann überhaupt zu schaffen pro Tick?

Der Großteil meines EAs ist so aufgebaut das ich jeder Handlung eine Uhrzeit davorschiebe. Also beginnt praktisch jede OnTick Zeile mit

if(„Uhrzeit“==Uhrzeit)

Und dann kommen eben die entsprechend auszuführenden Handlungen da rein.

Aber ich Frage mich halt, wieviele Berechnung wohl binnen eines Ticks möglich sind, immerhin sind das teilweise ja mehrere die Sekunde. Manchmal denke ich wenn ich jetzt noch paar Zeilen schreibe schafft er das vielleicht nicht mehr alles zu berechnen...

Ist da was dran, oder sind diese Bedenken unbegründet?
  #34 (permalink)  
Alt 19.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Völlig unbegründet.
Wenn eine Handlung tickgesteuert sein muss, dann ist das so. Klar kann man auch den Timer von der Frequenz in den Millisekundenbereich runterschrauben, aber auch die Timerausführung kostet Kapazität und Rechenleistung.
Und ich denke nicht, dass Du in naher Zukunft einen EA schreiben wirst, bei dem der Prozessor in die Knie geht. Also, bleib entspannt, poste hier und dann wird man weitersehen.

traderdoc
Lampe likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #35 (permalink)  
Alt 21.01.18
Auf eigenen Wunsch deaktiviert
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Hallo Leute, ich brauche nochmal euren Rat.

Undzwar geht es nochmal um das Thema "viele if Abfragen in einem EA".

Du Doc sagtest ja das meine Bedenken vorerst unbegründet sind, ich möchte aber für meinen Fall nochmal genau nachfragen.

Ich bin grade dabei die LotSize Berechnung umzusetzen, und verfolge dabei das Prinzip, ist ein Kontostand X erreicht = Y LotSize.

Da ich ohne Rückschritte arbeite, also ausschließlich mit LotSize Erhöhungen arbeite, bin ich nun dabei sehr viele if Abfragen zu schreiben, um einen langen Weg von LotSize 10 bis LotSize 200 abzudecken.
In der Praxis sieht das folgendermaßen aus:

Code:
if(t==0)
       {
       LotSize();
       LongOrder1=OrderSend(NULL,OP_BUYSTOP,LotSize,KaufPreis,NULL,VerkaufPreis,0,"DAX_H1_StrategieLong",MagicNummer,0,clrGreenYellow);
       ShortOrder1=OrderSend(NULL,OP_SELLSTOP,LotSize,VerkaufPreis,NULL,KaufPreis,0,"DAX_H1_StrategieShort",MagicNummer,0,clrRed);
         {
         if((LongOrder1>0)&&(ShortOrder1>0))
           {
           TradeActionVierZehnUhr++;
           }
         } 
       }

double LotSize()
         {
         if(KontoHoch<8250)
            {
            LotSize=10.0;
            }
         if(KontoHoch>=8250&&KontoHoch<9000)
            {
            LotSize=11.0;
            }
         if(KontoHoch>=9000&&KontoHoch<9750)
            {
            LotSize=12.0;
            }
         if(KontoHoch>=9750&&KontoHoch<10500)
            {
            LotSize=13.0;
            }
         if(KontoHoch>=10500&&KontoHoch<11250)
            {
            LotSize=14.0;
            }
         if(KontoHoch>=11250&&KontoHoch<12000)
            {
            LotSize=15.0;
            }
         usw usw usw
         }
Wie man hier sieht gehe ich immer in +1 Lot Schritten vor, das heißt es ergeben sich um die 200 if Abfragen um die entsprechende LotSize zu finden.

Ich könnte natürlich den Code von Zeit zu Zeit anpassen, allerdings würde ich es lieber einmal komplett machen, um dann erstmal ruhe zu haben wenn der EA ohne mein raufschauen läuft.

Seht ihr in der schieren Menge an if Abfragen ein Problem?

MfG
Lampe
  #36 (permalink)  
Alt 21.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Statt der if-Abfragen könnte man auch eine for-Schleife benutzen:

Code:
void LotSize() {
   int start = 8250;
   int step = 750;
   if (KontoHoch < start) LotSize = 10.0;
   for (int i = 0; i <= 10; i++) {
      if (KontoHoch >= i*step+start && KontoHoch < (i+1)*step+start) {
         LotSize = 10.0+i+1;
         break;
      }
   }
}
traderdoc
Lampe likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #37 (permalink)  
Alt 21.01.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

kleine Aufgabe zum Frühstück ..))

hier das Ganze als Funktion:

PHP-Code:
void OnStart()
  {
   
double Lotgroesse LotSize(AccountEquity(), 7501); // Funktionsaufruf
   
Alert(Lotgroesse);
  }
//+------------------------------------------------------------------+
   
double LotSize(double Bezugsgroessedouble Guthabenschrittdouble Lotschritt)   // die Funktion
     
{
      
double Zwischengroesse Guthabenschritt;
      
double Lotgroesse 0;
      while (
Zwischengroesse Bezugsgroesse)
        {
         
Zwischengroesse Zwischengroesse Guthabenschritt;
         
Lotgroesse Lotgroesse Lotschritt;
        }
      return(
Lotgroesse);
     } 
kannst Du so in eine Script-Vorlage kopieren, um es erstmal zu testen...
Lampe likes this.
  #38 (permalink)  
Alt 21.01.18
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Statt der if-Abfragen könnte man auch eine for-Schleife benutzen:

Code:
...
   for (int i = 0; i <= 10; i++) {
...
traderdoc
Warum i <= 10; ???
Was ist, wenn das Konto bzw. die Equity (jenachdem worauf er sich beziehen will) grösser als 16000 ist ?
Lampe likes this.
  #39 (permalink)  
Alt 21.01.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Die 10 ist hier als exemplarisches Beispiel gewählt, da kann auch 1000 stehen.
Wenn die entsprechende KontoHoch-Range erreicht wurde, wird eh aus der Schleife gesprungen.
Und mittels while-Schleife geht das auch. Wie immer führen viele Wege nach Rom.
Nun hat er zwei Schulbeispiele, wie man viele if-Abfragen umschrieben kann.

traderdoc
Lampe likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #40 (permalink)  
Alt 22.01.18
Auf eigenen Wunsch deaktiviert
 
Registriert seit: Jan 2018
Beiträge: 40
Lampe befindet sich auf einem aufstrebenden Ast
Standard

Ja... Also erstmal danke an euch beide, für die Hilfe!

Ich steige leider bei beiden Varianten nicht durch.

Bei Doc´s Variante muss ich mich wohl mit den * auseinandersetzen, was wie ich rausgefunden habe Pointer sind. Das erste Utube Video dazu brachte leider noch nicht den gewünschten Durchblick.

Bei Adlerauges Variante muss ich mich auch erstmal durchkämpfen.

Ich melde mich wieder.

MfG
Lampe
Thema geschlossen

Lesezeichen

Stichworte
hilfe, lernen, mql4, mql4 aufbau, mql4 hilfe, mql4 lernen, programmierung, programmierung metatrader, programmierung mql4, starthilfe

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 23:16 Uhr.





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