Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Hilfe bei Programmierung

Geschrieben

MQL Anfänger hat eine Bitte an euch,ich habe versucht ein für euch leichten E/A zu schreiben.

Der E/A besteht aus drei MA.

Die 1 Funktion Long

sollte wenn der kurzfristiger gl.D.(ma1)über dem mittelfristigen(ma2),und der mittefristige über dem langfristigen (ma3)ist,Long gehen also Buy. und den Trade schließen wenn (ma1) unter (ma2) fällt.

 

Die 2 Funktion Short

wenn der kurzfristiger (ma1)unter dem mittelfristigen(ma2),und der mittelfristige

unter dem langfristigen(ma3) ist, Short gehen also Sell.

und den Trade schließen wenn (ma1)über den (ma2) steigt.

 

So die Beschreibung,

der Editor meldet keine Fehler,aber das hat ja für die Funktionen keine

Bedeutung.

Im Long bereicht kauft er und verkauft auch.das wars aber schon,

Ich muß in der Logik,oder im Programmcode fehler haben,

kann einer von euch mir weiterhelfen.das der E/A Funktioniert.?

Bis bald

karlos10

 

-------------------------------------------------------------------------------------

extern int Profit= 80;
extern int Stopp = 25;
extern int MagicNumber = 700;
extern int ima1 = 5;
extern int ima2 = 35;
extern double lot = 0.1;
extern int Slippage = 2;


int CalcCurOrd(string symbol)
 {
  int buys=0,sells=0;

  for(int i=0;i<OrdersTotal();i++)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
     if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
       {
        if(OrderType()==OP_BUY) buys++;
        if(OrderType()==OP_SELL) sells++;
       }
    }

  if(buys>0) return(buys);
  else       return(-sells);
 }


bool Funktion_1_Long()    
 {
  double ma1 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0);
  double ma2 = iMA(NULL,0,40,0,MODE_SMA,PRICE_CLOSE,0);
  double ma3 = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
  
  if (ma1>ma2 && ma2 > ma3)   // kurzfristiger gl.D. liegt über dem mittelfristigen
                            // und der mittefristige über dem langfristigen
  
  return(true); else return(false);
  }
 
   
bool Funktion_2_Short()    
 {
  double ma1 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0);
  double ma2 = iMA(NULL,0,40,0,MODE_SMA,PRICE_CLOSE,0);
  double ma3 = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
  
  if (ma1<ma2 && ma2<ma3)   // kurzfristiger gl.D. liegt unter dem mittelfristigen
                            // und der mittefristige unter dem langfristigen
  
  return(true); else return(false);
   
 
 }

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen() 
 {
  int res;
  
     if(Funktion_1_Long())
    
        {
         res=OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,
                       0,0,"long",MagicNumber,0,White);
        }
 //----OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,
 //                   0,0,"long",MagicNumber,0,White);
 //                   prevtime = Time[0]; return;

    if(Funktion_2_Short())
    
     
        {
         res=OrderSend(Symbol(),OP_SELL,lot,Bid,Slippage,
                       0,0,"short",MagicNumber,0,Red);
        }
       
  }
  
// Check for close order conditions

void CheckForClose()
 {    
  for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)     break;
      if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;     
      
      // Check order type
            
      if(OrderType()==OP_BUY)
        {      
         if (Bid>(OrderOpenPrice()+Profit*Point)) 
           {
            OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Green);
            return(0);
           }
        }
        
         
      if(OrderType()==OP_SELL)
        {    
         if (Ask<(OrderOpenPrice()-Profit*Point))
           {
            OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
            return(0);
           }
        }
                
     }
  return(0);
 }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start()
 {
   
  if(CalcCurOrd(Symbol())==0) CheckForOpen();
  if(CalcCurOrd(Symbol())!=0) CheckForClose();

 }
//+------------------------------------------------------------------+

karlosMA.mq4

Bearbeitet von whipsaw
mql tag hinzugefügt

  • Antworten 98
  • Aufrufe 10,8Tsd
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Most Popular Posts

  • Das Selbe macht Ehlers auch mit US Treasury Bond Futures. Die Zeitachse wird in Sektoren von z.B. 10 Bars eingeteilt und es wird für jeden Bar geschaut, wo - bezogen auf das Hoch und das Tief innerha

Veröffentlichte Bilder

Featured Replies

Geschrieben
  • Autor
Dass diese Datei oder diese Dateien 534,33kB groß sind von erlaubten 500, ergo zu groß :empathy2:

Ich hatte doch geschrieben,die letzte Datei war ca.160 Kb groß,und es ging auch nicht?

Geschrieben
  • Autor
Ich hatte doch geschrieben,die letzte Datei war ca.160 Kb groß,und es ging auch nicht?

 

Oh jetzt steht da

 

Speicher für Anhänge: 0Byte von 500KB

 

ich glaube jetzt ist es wieder in ortnung

alle okay

Geschrieben
Hmm wenn ich das richtig sehe,wird wieder am ende der ersten Kerze gekauft.?oder

ich weiss nicht genau ob wir von gleichen Dingen reden,

auf jedem Fall hatte ich dir doch einen vollfunktionstüchtigen EA nach deinen Signaldefinitionen geschrieben

und da sind alle Variationen wann der Signal getriggert wird schon integriert,

mehr Möglichkeiten gibt es meines Wissens nicht, wie man Indikatorsignal noch auswerten kann.

Bitte lese meinen Post mit den Parametererklärungen noch mal durch,

da ich schwer auf einen Anwenderfehler tippe

 

.. sonst versuche deine Frage etwas detailierter darzustellen, wenn du eine

in deiner Problemlösung weiterkommen möchtest und eine Antwort erwartest

 

hier ist noch mal ein Screenshot mit dargestelltem Signalshift

 

tom_01.png

Geschrieben
  • Autor
.. sonst versuche deine Frage etwas detailierter darzustellen, wenn du eine

in deiner Problemlösung weiterkommen möchtest und eine Antwort erwartest

 

Hallo Titanfx

nochmals Danke für deine Arbeit! ( oder reicht der THANKS Button )?

klar dein prog funktioniert richtig.

Ich glaube ich habe einen Weg gefunden das zu zeigen was ich will,ich hoffe das das jetzt

ersichtlich ist.

 

Ich habe noch eine andere frage

 

@Mythos

 

hatte geschrieben " zählen negative Performancezahlen jetzt zu Programmierfehlern?"

 

verstehe ich da etwas grundlegend falsch, wenn die Logig des Progamms richtig im Code umgesetzt ist,

muß doch zwangsläufig auch die Performans positiv sein. oder?

den mit dem Strategietester wird ja auch die richtige funktion der Logig getestet,nur wenn die stimmt kommt eine positive Performans heraus.

naja vielleicht liege ich da vollkommen falsch?

post-780-1259237712_thumb.png

Bearbeitet von ronner
Quote-Tags hinzugefügt

Geschrieben
verstehe ich da etwas grundlegend falsch, wenn die Logig des Progamms richtig im Code umgesetzt ist,

muß doch zwangsläufig auch die Performans positiv sein. oder?

 

Nur wenn die Logik für positive Performance sorgt.

Du musst unterscheiden zwischen "ob die Logik passt" und "ob der EA die Logik richtig umsetzt". Und die Frage "Ob die Logik passt" kann man iA sehr schwer beantworten.

 

krasses Bsp:

neue Logik: Eröffne Position am Open, schließe Position sobald sie im Minus ist.

 

Ein EA der diese Logik einwandfrei umsetzt wird trotzdem keine positive Performance machen.

Geschrieben
Oh ich wollte nur einen Fehler berichtigen,kann mann den doppelten Post löschen ??

beschreibe bitte detailierter wo du den Fehler siehst,

füge bitte einen Candle- oder Bar-Chart ein

und deine Vorstellung wie die Signale generiert werden sollten

und wie die auf dem Chart "fehlerhaft" audgelöst waren.

mit welchen Einstellungen hast du eigentlich getestet?

Geschrieben
  • Autor

@ titanfx

ne jetzt kommen wir etwas durcheinander

das Zitat (karlos10 @ Nov 26 2009, 02:41 PM)

war nicht für dich bestimmt,das war für den Admin,da ich Doppelt gepostet hatte.der Admin hat es korregiert.

der Post 56 ist die Antwort und eine Frage an Dich,bitte Lese es nochmal,da mich auch deine Antwort Interessiert.

 

 

in diesem Chart habe ich extra keine Candle oder Bar angezeigt,da ich ja sofort nachdem das Prog die Kreuzung

Bestätigt hat Ordern will,also vielleicht in Sekundenbruchteile nach der Kreuzung,gibt es in MQL4 nicht einen Passenden befehl,oder Funktion oder einen Schalter?

Geschrieben

@karlos:

 

Noch ein letztes mal langsam:

Bitte schau dir mal detailiert im Strategietester an, wie die Kreuzungen zustande kommen.

 

Wenn ich dich richtig verstehe, willst du das die Order beim Open von dem Bar gemacht wird, der direkt nach der Kreuzung der GDs ist richtig?

Also zB

Bar1 :

GD1: 10

GD2: 15

Bar2:

GD1: 20

GD2: 15

 

Du hättest gern das hier am Open von Bar2 eine long order eröffnet wird oder?

Folgendes Problem: Beim Open von Bar2 weißt du noch nicht welche Werte die GD am Ende haben werden. Du weißt also erst das es vor diesem Bar eine Kreuzung gab, wenn der Bar vorbei ist, kannst also frühestens am Open des nächsten Bars eine Order eröffnen.

 

Wie gesagt, lass mal den Strategietester laufen und schreib dir mit wann du genau die Order eröffnen würdest. Dann schau dir den fertigen Chart an und schreib dir auf wann du aufgrund des fertigen Charts die Orders öffnen würdest. Und dann vergleich die Zeitpunkte und Anzahl der Orders.

Geschrieben
  • Autor

Hallo, ja es hat etwas gedauert ich habe jetzt gesehen das das Kreuzen und die Kerze sich gleichzeitig aufbauen.

jetzt habe ich es verstanden.Danke

Geschrieben
  • Autor

jetzt habe ich natürlich einige Fragen,wie muß ich weiter vorgehen um aus diesem Grundgerüßt einen positiven

E/A zu programmieren,zum beispiel wie optimiert mann richtig für einem TF 15.

ist es überhaupt möglich aus diesem Grundgerüßt einen Positiven E/A zu programmieren?

mfg

Geschrieben
wie muß ich weiter vorgehen um aus diesem Grundgerüßt einen positiven E/A zu programmieren

Das ist die Frage aller Fragen ;) Ich glaub patentlösung gibt es nicht. Der erste Schritt ist sicher mal den Markt beobachten, das Verhalten des EA analysieren (wodurch ist er negativ?) etc.

 

zum beispiel wie optimiert mann richtig für einem TF 15.

 

Was meinst du mit "richtig"? In MT kannst du mit dem Strategietester diverse Parameterkombinationen durchrechnen lassen. damit siehst du auf alle Fälle mal in welchem Bereich dein EA gar nicht geht, und wo er möglicherweise Potential hat.

Geschrieben
  • Autor

das es keine Patentlösung gibt ist mir schon klar,aber ich Denke das erfahrene Programmierer wie Ihr mir vielleicht etwas von eurer Erfahrung mit-zu-teilen

" ich weiß bei dem Wort Teilen gehen manschen Menschen die Nackenhaare hoch ",

ich möchte nur nicht das Rad neu-erfinden müßen.kann es sein das jeder neuling in dieser Programmierung von Handelsystemen mit dem MACD anfängt???

mfg

Bearbeitet von karlos10

Geschrieben
ich möchte nur nicht das Rad neu-erfinden müßen.

 

Also meine bisherige Erfahrung in dem Bereich zeigt: wenn du Erfolg haben willst, musst du im Prinzip das Rad neu erfinden bzw. mindestens selber drauf kommen bzw. verstehen wie man das Rad erfinden würde (oder jemandem viel Geld dafür geben das er dir erzählt wie er denkt das es geht, was aber meist dann nit stimmt). Weil sobald du ein funktionierendes Rad hast, brauchst du nimmer mehr. Und die Leute die eines erfunden haben, haben soviel Zeit und meist auch Geld reingesteckt das sie es nicht einfach so an den nächstbesten verschenken.

 

Es läuft leider nicht nach dem Motto "Wenn einer was tolles erfunden hat, zeigt er es der Welt damit alle davon profitieren können"

 

Was du aber sicher leicht findest sind viele "kleine" Hinweise und Antworten auf einzelne Fragen. Aber die "Masterfrage" werden dir nur wenige direkt frei beantworten. Beim Trading muss man einfach sehr viel selber herausfinden.

Geschrieben
  • Autor

ich habe mal versucht das Prog zu Optimieren,vor der Optimierung war ma1=8, ma2=34,ma3=144.

Bild 1

nach der Optimierung.ma1=8,ma2=34,ma3=148.

Bild 2

beide habe einen Profit Faktor über 1.

 

wie könnte ich das ergebnis verbessern.?

post-780-1260291913_thumb.png

post-780-1260291940_thumb.png

Geschrieben
wie könnte ich das ergebnis verbessern.?

 

Analysiere mal die Stärken und Schwächen des EA.

Macht er viele kleine Gewinne, oder wenige große?

In welchen Marktphasen/Zeiten macht er Gewinne, in welchen Verluste?

Wie siehts mit MoneyManagement aus?

Auf welchen Märkten funktioniert er gut und warum?

 

Sobald du den EA (und das was er tut) verstehst, beginnst du automatisch ihn zu verbessern.

Geschrieben
  • Autor

Hallo,ich habe ein Problem beim versuch zu Optimieren.

nach der Optimierung die drei mas angeklickt Anfangswert ma1= 1,ma2=1,ma3=1,und Schritt alle 1,und stop

ma1=13,ma2=39.ma3=149.und Profitmaximum.

das ergebnisfenster bleibt leer.??

weiß einer warum.

Geschrieben
  • Autor

Hmmm was ist das den,im Historyortner Videodateien,das muß bestimmt ein anderes Prog gemacht haben.?

ich habe eine neuinstallation gemacht aber wieder das gleiche Videodateien.?

Kann da der Metatrader überhaupt noch richtig funktionieren.?

und wie kriege ich die Dateien wieder in Ortnung??

kann mir einer Helfen

post-780-1260705153_thumb.png

Geschrieben

Das es als Videodateien angezeigt wird liegt nur an deinen Windowseinstellungen, das ist dem MT ziemlich egal, beeinträchtigt ihn also normalerweise überhaupt nit.

Die Dateiendung die MT verwendet ist scheinbar zufällig die gleiche wie ein Videoformat das eine Software von dir verwendet.

Geschrieben
"DAT" wird eigentlich für viele sachen benutzt. Schon mutig von dir es vom System her bereits als Video zu deklarieren.
Geschrieben
  • Autor
"DAT" wird eigentlich für viele sachen benutzt. Schon mutig von dir es vom System her bereits als Video zu deklarieren.

Ich habe das nicht gemacht,das ist aufeinmal so passiert.

du schreibst mann kann das deklarieren,und wie kann ich das rückgängig machen?

oder sollte ich das so lassen????

Geschrieben
du schreibst mann kann das deklarieren,und wie kann ich das rückgängig machen?

 

Explorer-> Extras-> Ordneroptionen->Dateitypen

 

aber wenns dich nicht stört (den programmen ist es voll egal), würd ich an deiner Stelle nix ändern.

  • 2 Wochen später...
Geschrieben
  • Autor

Guten Abend zusammen!

Ich habe hier den Befehl "Crossed" gelesen,wäre es nicht besser den zu benutzen als ma1 größer oder kleiner < ma2, bzw kreuzen ?

bis dann

  • 2 Wochen später...
Geschrieben
  • Autor

Hallo ich habe jetzt gemerkt das das Prog so nicht gut funktioniert.

meine Idee einen ma als SL zu nehmen, mit der Periode 2 und Ebene 25/ -25.long/short

nur ich weiß nicht das in einen Code zu bringen,kann einer da mir weiterhelfen.?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.