i tried to make an EA from an indicator..but got 3 problems:
'{' - initialization expected
'EachTickMode' - comma or semicolon expected
'}' - unbalanced parentheses
could anyone help me with this problems >.<
all the problem is at "extern bool = {EachTickMode};"
Hi hakenawang,
Where did you learn to assign value to extern variable like that ?, they're all wrong.
Change EachTickMode = True; then compile and you'll get another compiler error. Change the Lots = 0.01; then compile and you get another compiler error. Change Slippage = 1; then compile and you will get another compile error. And so on and so on.
That's because you assign all extern variable with { } !!!. Where did you learn that way, anyway ?
:(
Hi hakenawang,
Where did you learn to assign value to extern variable like that ?, they're all wrong.
Change EachTickMode = True; then compile and you'll get another compiler error. Change the Lots = 0.01; then compile and you get another compiler error. Change Slippage = 1; then compile and you will get another compile error. And so on and so on.
That's because you assign all extern variable with { } !!!. Where did you learn that way, anyway ?
:(
hurmm..tbh..i just copy the template generated from
http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/
i was hoping to build an EA from ichimoku indicator..i thought uploading it through that website can generate the code to make an EA..lol
if anyone would like to see this indicator, i can upload it here
hurmm..tbh..i just copy the template generated from
http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/
i was hoping to build an EA from ichimoku indicator..i thought uploading it through that website can generate the code to make an EA..lol
if anyone would like to see this indicator, i can upload it here
Hi hakenawang,
Didn't notice that was EAB, here's some review of EAB - a bad one - https://www.mql5.com/en/forum/139608
Oh my. Ok try it this way
extern int MagicNumber = 0; extern bool SignalMail = False; extern bool EachTickMode = true; // true or false extern double Lots = 0.1; // a number upto two decimal places extern int Slippage = 10; // a number extern bool UseStopLoss = true; // true or false extern int StopLoss = 100; // a number extern bool UseTakeProfit = true; // true or false extern int TakeProfit = 100; // a number extern bool UseTrailingStop = true; // true or false extern int TrailingStop = 50; // a number
Hi hakenawang,
Didn't notice that was EAB, here's some review of EAB - a bad one - https://www.mql5.com/en/forum/139608
thanks..i manage to make my own EA and got 1 problem..i just want to ask, how can i add "max trade per position"?
this EA will open new sell position as long tenkan is below kijun..btw, i'm a seller trader..lol
so,eventhough tenkan is like 1 second about to cross kijun to go above it, EA will still open sell position,because of the law tenkan need to be below kijun to open sell position...when this happen, it surely result in a loss position because after that 1 sec, tenkan is above kijun ..hope you understand..hahaha
that is the only problem i got here...i was hoping this EA to open only 2 or 3 sell position when it is downtrend..and also hope this EA realize that tenkan is about to cross kijun, so no need to open another position when the line is moving near to each other,just wait for both to cross again to open new sell position..
any idea how to deal with this?//+------------------------------------------------------------------+ //| This MQL is generated by Expert Advisor Builder | //| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ | //| | //| In no event will author be liable for any damages whatsoever. | //| Use at your own risk. | //| | //+------------------- DO NOT REMOVE THIS HEADER --------------------+ #define SIGNAL_NONE 0 #define SIGNAL_BUY 1 #define SIGNAL_SELL 2 #define SIGNAL_CLOSEBUY 3 #define SIGNAL_CLOSESELL 4 extern int MagicNumber = 0; extern bool SignalMail = False; extern bool EachTickMode = False; extern double Lots = 10.0; extern int Slippage = 5; extern bool UseStopLoss = False; extern int StopLoss = 30; extern bool UseTakeProfit = True; extern int TakeProfit = 5; extern bool UseTrailingStop = False; extern int TrailingStop = 30; int BarCount; int Current; bool TickCheck = False; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { BarCount = Bars; if (EachTickMode) Current = 0; else Current = 1; return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int Order = SIGNAL_NONE; int Total, Ticket; double StopLossLevel, TakeProfitLevel; if (EachTickMode && Bars != BarCount) TickCheck = False; Total = OrdersTotal(); Order = SIGNAL_NONE; //+------------------------------------------------------------------+ //| Variable Begin | //+------------------------------------------------------------------+ double Var1 = iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, Current + 0); double Buy1_1 = iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, Current + 0); double Buy1_2 = iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, Current + 0); double Sell1_1 = iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, Current + 0); double Sell1_2 = iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, Current + 1); double CloseBuy1_1 = iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, Current + 0); double CloseBuy1_2 = iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, Current + 0); double CloseSell1_1 = iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, Current + 0); double CloseSell1_2 = iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, Current + 0); //+------------------------------------------------------------------+ //| Variable End | //+------------------------------------------------------------------+ //Check position bool IsTrade = False; for (int i = 0; i < Total; i ++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { IsTrade = True; if(OrderType() == OP_BUY) { //Close //+------------------------------------------------------------------+ //| Signal Begin(Exit Buy) | //+------------------------------------------------------------------+ if (CloseBuy1_1 < CloseBuy1_2) Order = SIGNAL_CLOSEBUY; //+------------------------------------------------------------------+ //| Signal End(Exit Buy) | //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy"); if (!EachTickMode) BarCount = Bars; IsTrade = False; continue; } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if(Bid - OrderOpenPrice() > Point * TrailingStop) { if(OrderStopLoss() < Bid - Point * TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); if (!EachTickMode) BarCount = Bars; continue; } } } } else { //Close //+------------------------------------------------------------------+ //| Signal Begin(Exit Sell) | //+------------------------------------------------------------------+ if (CloseSell1_1 == CloseSell1_2) Order = SIGNAL_CLOSESELL; //+------------------------------------------------------------------+ //| Signal End(Exit Sell) | //+------------------------------------------------------------------+ if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell"); if (!EachTickMode) BarCount = Bars; IsTrade = False; continue; } //Trailing stop if(UseTrailingStop && TrailingStop > 0) { if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange); if (!EachTickMode) BarCount = Bars; continue; } } } } } } //+------------------------------------------------------------------+ //| Signal Begin(Entry) | //+------------------------------------------------------------------+ if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY; if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL; //+------------------------------------------------------------------+ //| Signal End | //+------------------------------------------------------------------+ //Buy if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { if(!IsTrade) { //Check free margin if (AccountFreeMargin() < (1000 * Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue); if(Ticket > 0) { if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("BUY order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy"); } else { Print("Error opening BUY order : ", GetLastError()); } } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } //Sell if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) { if(!IsTrade) { //Check free margin if (AccountFreeMargin() < (1000 * Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0; if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0; Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink); if(Ticket > 0) { if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print("SELL order opened : ", OrderOpenPrice()); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell"); } else { Print("Error opening SELL order : ", GetLastError()); } } if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; return(0); } } if (!EachTickMode) BarCount = Bars; return(0); } //+------------------------------------------------------------------+
https://www.mql5.com/en/forum/139608
Go read that topic again if you already did your EA has still same problems made by your Expert Advisor Builder
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
i tried to make an EA from an indicator..but got 3 problems:
'{' - initialization expected
'EachTickMode' - comma or semicolon expected
'}' - unbalanced parentheses
could anyone help me with this problems >.<
all the problem is at "extern bool EachTickMode = {EachTickMode};"