Wer kann helfen...bin neu hier.

 
Hallo, ich würde gerne in den Code folgendes einfügen.

MA 200 Ansatz 4 Simple open

MA 100 Ansatz 1 Simple Weighted Close

und er soll wenn der schnelle MA den langsamen Kreuzt genau eine Long order auf machen. Kann mir da einer Helfen ? Bin neu im Programmieren und suche einen ansatz.

Code:

//+------------------------------------------------------------------+
//| EA_CROSS.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#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 |
//+------------------------------------------------------------------+
void OnTick()
{
//---

}
//+------------------------------------------------------------------+
Automatischer Handel und Strategietests
Automatischer Handel und Strategietests
  • www.mql5.com
MQL5: eine Sprache von Handelsstrategien, eingebaut in die Handelsplattform MetaTrader 5, mit der man eigene Handelsroboter, technische Indikatoren, Skripte und Funktionsbibliotheken
 

Hallo Forexman, 

 

dein gesuchter Code ist doch schon verfügbar in der Codebase.

Siehe Link :  https://www.mql5.com/de/code/1203 

Ist MQL5 aber das spielt für dich als Anfänger ja keine Geige.

Ich empfehle sowieso MQL5 zu lernen da es die Zukunft im Metatrader werden wird.

Schau dir den Code an ....und versuche zu verstehen was dort genau passiert.

Danach kannst du ihn nach deinen Wünschen anpassen.

 

 Ps:   Der Code ist nach der Installation von MT5 gleich im Programm verfügbar. Eventuelle etwas Unterschied drin

Gruß Christian 

Exp_MAMA
Exp_MAMA
  • Stimmen: 22
  • 2016.05.04
  • Nikolay Kositsin
  • www.mql5.com
Der Exp_MAMA Expert Advisor wird unter Verwendung der Kreuzung des gleitenden Durchschnitts und des MAMA Indikator gezeichnet
 

Hallo, herzlich willkommen!

1) Kleiner Hinweis, wenn Du Code postest gibt es den Code-Button "SRC" - das macht alles viel leichter lesbar.

2) Ich habe am meisten gelernt, wenn ich bestehenden Code nehme und anpasse - so wie Christian gesagt. Und glaube mir, es gibt für mt4/mt5 fast alles! Wenn u einen Tag suchst findest Du sicherlich 100 interessante Expert Advisor, von denen vielleicht 10 - 20 interessant sein dürften - so schnell kann niemand programmieren, auch die Code-Gurus nicht!!

3) Fragen zum Code lassen sich meist viel schneller beantworten,, wenn Du einen Blick in die Referenz des Editors riskierst: Maus über einen Befehl platzieren und F1 drücken - dort gibt es auch viele Beispiele!

4) Und wenn es mal nicht läuft: Error-Code (_LastError) beachten und den Debugger verwenden - der funktioniert aber bei mt4 nicht gut mit Indikatoren. Ich probiere dann Code-Snippets schnell mal in einem Skript:

Viel Erfolg,

Calli

 
int signal;
extern double LotSize = 0.1; // number of lots
extern int MagicNumber = 123;
extern int PeriodSlowMA = 8; //choose the period
extern int PeriodFastMA = 5; //choose the period
int cnt;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   double SlowMA = iMA(NULL,0,PeriodSlowMA,0,MODE_SMMA,PRICE_MEDIAN,0);
   double FastMA = iMA(NULL,0,PeriodFastMA,0,MODE_SMMA,PRICE_MEDIAN,0);

//+------------------------------------------------------------------+
//| generate signal                                                  |
//+------------------------------------------------------------------+

   if(FastMA > SlowMA)
     {
      signal = 1;
     }

   if(FastMA < SlowMA)
     {
      signal = -1;
     }
//+------------------------------------------------------------------+
//| check whether positions are opened                               |
//+------------------------------------------------------------------+

   int openorders = 0;
   int countorders = OrdersTotal();

   for(cnt = 0; cnt < countorders;cnt++) // loop
     {
      OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); // MODE_TRADES = open and cease orders
                                                  // check open positions, Symbol & MagicNumber
      if(OrderSymbol()== Symbol())
        {
         if(OrderMagicNumber()== MagicNumber)
           {
            openorders++;
           }
        } // OrderSymbol
     }

//+------------------------------------------------------------------+
//| give orders                                                      |
//+------------------------------------------------------------------+

   if(openorders == 0)
     {
      // es gab keine offenen Orders und es liegt ein Signal vor
      // check ob eine Longorder aufgegeben werden kann
      if(signal == 1)
        {
         ticket= OrderSend(Symbol(),OP_BUY,LotSize,Ask,30,0,0,"Trend Longorder",MagicNumber,0,Black);
         if(ticket > 0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BuyOrder opened: ",OrderOpenPrice());
           }
         else Print("Error opening BuyOrder: ",GetLastError(),Ask || Bid);

        }
      // check for short position (SELL) possibility
      if(signal == -1)
        {
         ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,30,0,0,"Trend Shortorder",MagicNumber,0,Red);
         if(ticket > 0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SellOrder opened: ",OrderOpenPrice());
           }
         else Print("Error opening SELL order: ",GetLastError(),Ask || Bid);

        }

     }
//+------------------------------------------------------------------+
//| close orders when signal changes                                 |
//+------------------------------------------------------------------+

   for(cnt = 0;cnt < OrdersTotal();cnt++)
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false) break;

      //check order type
      if(OrderType()== OP_BUY && OrderMagicNumber()== MagicNumber && OrderSymbol()==Symbol())
        {
         if(FastMA < SlowMA) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
      if(OrderType() == OP_SELL)
        {
         if(FastMA > SlowMA) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }

//---

  }
//+------------------------------------------------------------------+
 
Damit solltest arbeiten können. Ist ein sehr simpel gehaltener Code, der deine Ansprüche aber gut erfüllt.
Grund der Beschwerde: