Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 22.08.11
Mast83 Mast83 ist offline
Elite Mitglied
 
Registriert seit: Aug 2011
Ort: NRW
Beiträge: 764
Mast83 befindet sich auf einem aufstrebenden Ast
Mast83 eine Nachricht über ICQ schicken Mast83 eine Nachricht über Skype™ schicken
Standard Für mich neuland für euch bekannt

Hallo liebe MQL-und Forums-User:

Ich habe mir vor einigen Tagen die DVD vom Traders Mag bestellt in dem man die Programmiersprache MQL ein wenig näher gebracht bekommt. Für mich, der bisher keine Kenntnisse im Programmieren hatte, war diese investition eigentlich ganz gut, nur brauche ich hilfe für ein simpeles System zu dem ich gerade nicht weiter komme. Vll habe ich einen Denkfehler, deshalb wäre es schön wenn mal jemand drüber schauen kann. Es ist nichts komplexes, da ich ja erst in die Materie einsteigen will.

Es geht um folgendes:
Ich möchte mit einem SMA(14) Kauf und Verkaufsignale generieren.
Kaufsignal:
Sobald das Low der aktuellen Kerze > bzw über dem SMA ist und der Close der aktuellen Kerze > als das Open der aktuellen Kerze ist.

Verkaufsignal:
Sobals das High der aktuellen Kerze < bzw unter dem SMA ist und der Close der aktuellen Kerze < als das Open der aktuellen Kerze ist.

Hier das Script:
//+------------------------------------------------------------------+
//| Marcs erster EA.mq4 |
//| Der Marc |
//| Es gibt gar keinen Link dazu |
//+------------------------------------------------------------------+
#property copyright "Der Marc"
#property link "Es gibt gar keinen Link dazu"


extern double dLots=0.1;
extern int iStopLoss=150;
extern int iTakeProfit=50;
extern int iSlippage=3;
extern int iMaxTrades=1;
extern int iMagicNumber=210811;

int iTradeSignal=0;
int iOpenBuySignal=10;
int iCloseBuySignal=-10;
int iOpenSellSignal=20;
int iCloseSellSignal=-20;
int iNoSignal=-1;


double dMovingAvg1=0;

int iTotalTrades;
int iOrderOpenStatus;
int iErrorNumber;

string strErrorMessage;


int start()
{

dMovingAvg1 = iMA (NULL,NULL,14,0,MODE_SMA, PRICE_CLOSE,0);


//Buy-Logik

if (( Low[0] >dMovingAvg1) && (Open[0] < Close[0] ))
iTradeSignal = iOpenBuySignal;

//Sell-Logik

if (( High[0] <dMovingAvg1) && (Close[0] > Open[0] ))
iTradeSignal = iOpenSellSignal;

// Buy-Order ausführen

iTotalTrades=OrdersTotal();

if ((iTradeSignal == iOpenBuySignal) && (iTotalTrades < iMaxTrades))

{
double dBuyStopLoss=Ask-(iStopLoss*Point);
double dBuyTakeProfit=Ask+(iTakeProfit*Point);


iOrderOpenStatus=OrderSend (Symbol(), OP_BUY,dLots, Ask, iSlippage, dBuyStopLoss, dBuyTakeProfit, "Marcs erster EA",iMagicNumber,0,Green);
if (iOrderOpenStatus<0)
{
iErrorNumber=GetLastError();
Print ("Order fehlgeschlagen!: ", iErrorNumber);
return;
}
}

// Sell-Order ausführen

iTotalTrades=OrdersTotal();

if ((iTradeSignal == iOpenSellSignal) && (iTotalTrades < iMaxTrades))

{
double dSellStopLoss=Bid+(iStopLoss*Point);
double dSellTakeProfit=Bid-(iTakeProfit*Point);


iOrderOpenStatus=OrderSend (Symbol(), OP_SELL,dLots, Bid, iSlippage, dSellStopLoss, dSellTakeProfit, "Marcs erster EA",iMagicNumber,0,Red);
if (iOrderOpenStatus<0)
{
iErrorNumber=GetLastError();
Print ("Order fehlgeschlagen!: ", iErrorNumber);
return;
}
}


return(0);
}
//+------------------------------------------------------------------+


Vielen Dank für eure Hilfe