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
- Stimmen: 22
- 2016.05.04
- Nikolay Kositsin
- www.mql5.com
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
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;
}
}
//---
}
//+------------------------------------------------------------------+
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
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()
{
//---
}
//+------------------------------------------------------------------+