...
//+------------------------------------------------------------------+
'}' - unexpected end of program Gerd2 Moving.mq4 167 10'{' - unbalanced parentheses Gerd2 Moving.mq4 43 3
ich habe mal die zeilen davor geschrieben es ist zum verrückt werden, seit 4 Tagen versuche ich den fehler zu finden, wer kann mir helfen ?
der eine fehler tritt direkt auf nach der OnTick funktion
der andere ist programm ende
- Herzlich willkommen hier :)
- Wenn Du Code postest, nimm bitte den Modus dafür: Alt+s oder das Icon </>
- Der Editor für MQ4/5 hat mit unpaarigen () und/oder {} so seine Probleme!
Ich kopiere dann alles in Notepad++ und lass zählen die '(', die ')' und die '{' und '}'
Notepad++ kann dann auch die funktionierenden {} einklappen (ausblenden) - kann auch helfen! - Da stellte ich dann oft fest, dass der MQL-Editor für die {} einen Fehler ausgibt, tatsächlich fehlte aber irgendwo ein '(' oder ')'!
- Zum Schluss noch ein Tipp:
Erst suchen! Es gibt fast nix, was nicht schon für Mt4/5 programmiert wurde!
Warum das Rad neu erfinden, wenn es in der CodeBase liegt, bereit zum abkupfern?
Such mal (oben rechts die Lupe) nach "MA cross" und dann konzentriere Dich auf Artikel und CodeBase
Leider sind da keine Zeilennummern dabei.
Der OnDeInit() fehlt eine schließende Klammer, so daß die OnTick() innerhalb dieser definiert ist.
Und vieles mehr........
Schmeiss die OnDeinit() raus. Die wird nur gebraucht wenn du die Comment() Funktion verwendest.
Und verwende den MT5 BITTE!!!
Die Handelsfunktionen sind alle in der
#include <Trade\Trade.mqh>
definiert.
- 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.
//+------------------------------------------------------------------+
//| Gerd2.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//Globale Externe Variable
extern int MA_lang =200;
extern int MA_kurz = 50;
extern double TradeLots=0.1;
extern double SL_prozent =0.5;
extern double TP_prozent =1.5;
extern int MagicNummer=12345;
//Globale Variable
datetime PeriodenStartZeit;
bool NeuePeriodeBegonnen,LongSignal,ShortSignal;
int LongOrder,ShortOrder;
//+--
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
PeriodenStartZeit=Time[0];
//---
return(0);
}
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
//---
// EXPERT START FUNKTION
{
void OnTick()
43 {
//Überprüfen ob neuer Periodenbeginn vorliegt
if(PeriodenStartZeit!=Time[0])
{
NeuePeriodeBegonnen=true;
PeriodenStartZeit=Time[0];
}
else NeuePeriodeBegonnen=false;
//Marktdaten ermitteln
double MAlang=iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,1);
double MAlangVorperiode=iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,2);
double MAkurz=iMA(NULL,0,MA_kurz,0,MODE_SMA,PRICE_CLOSE,1);
double MAkurzVorperiode=iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,2);
//Handelssignale ermitteln
if(NeuePeriodeBegonnen==true)
{
//Buy Signal
if(MAkurz>MAlang && MAkurzVorperiode<=MAlangVorperiode)
{
LongSignal=true;
}
else LongSignal=false;
//Sell Signal
if(MAkurz<MAlang && MAkurzVorperiode>=MAlangVorperiode)
{
ShortSignal=true;
}
else ShortSignal=false;
}
else
{
LongSignal=false;
ShortSignal=false;
}
// Long Signale umsetzen
if(LongSignal==true)
{
//Evtl. Short Order schliessen
if(ShortOrder>0)
{
OrderSelect(ShortOrder,SELECT_BY_TICKET;
bool ShortOrderGeclosed=OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
if(ShortOrderGeclosed==true) ShortOrder=0;
}
//Long Order eröffnen
while(LongOrder<=0)
{
LongOrder=OrderSend(Symbol(),OP_BUY,TradeLots,Ask,10,0,0,"MAXing Long",MagicNummer,0,Green);
}
}
// Short Signale umsetzen
if(ShortSignal==true)
{
//Evtl. Long Order schliessen
if(LongOrder>0)
{
OrderSelect(LongOrder,SELECT_BY_TICKET;
bool LongOrderGeclosed=OrderClose(LongOrder,OrderLots,Bid,10,Blue);
if(LongOrderGeclosed==true) LongOrder=0;
//Short Order eröffnen
while(ShortOrder<=0)
{
ShortOrder=OrderSend(Symbol(),OP_SELLBUY,TradeLots,Bid,10,0,0,"MAXing Short",MagicNummer,0,Red);
}
}
//SL Long DEALS SETZEN
IF(OrderSelect(LongOrder,SELECT_BY_TICKET==true)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
double StoppLoss=NormalizeDoubleOrderOpenPrice()/(1+(SL_prozent/100),Digits);
bool OrderAngepasst=OrderModify,(OrderTicket()),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow;
}
}
//SL Short DEALS SETZEN
IF(OrderSelect(ShortOrder,SELECT_BY_TICKET==true)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
StoppLoss=NormalizeDouble(OrderOpenPrice()*(1+(SL_prozent/100),Digits);
OrderAngepasst=OrderModify,(OrderTicket()),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow;
}
}
//TP Long DEALS SETZEN
IF(OrderSelect(LongOrder,SELECT_BY_TICKET==true)
{
if(OrderCloseTime()==0 && OrderTakeProfit()==0)
{
double TakeProfit=NormalizeDouble(OrderOpenPrice())*(1+(TP_prozent/100),Digits);
OrderAngepasst=OrderModify,(OrderTicket()),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange;
}
}
//TP SHORT DEALS SETZEN
IF(OrderSelect(ShortOrder,SELECT_BY_TICKET==true)
{
if(OrderCloseTime()==0 && OrderTakeProfit()==0)
{
TakeProfit=NormalizeDouble(OrderOpenPrice())/(1+(TP_prozent/100),Digits);
OrderAngepasst=OrderModify,(OrderTicket()),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Orange;
}
}
// Ticketnummen nach Closing auf 0 zurücksetzen.
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
if(OrderTicker()>0 && OrderCloseTime()>=) LongOrder=0;
}
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderTicker()>0 && OrderCloseTime()>=) ShortOrder=0;
}
//---
return(0)}
167 }
//+------------------------------------------------------------------+
'}' - unexpected end of program Gerd2 Moving.mq4 167 10
'{' - unbalanced parentheses Gerd2 Moving.mq4 43 3
ich habe mal die zeilen davor geschrieben es ist zum verrückt werden, seit 4 Tagen versuche ich den fehler zu finden, wer kann mir helfen ?
der eine fehler tritt direkt auf nach der OnTick funktion
der andere ist programm ende