You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hi
I am so sorry if my question is very basic.
I am learing mql4.
Please help me how to express this math conditions in mql4:
IF( (A>B) AND (|X| <1) AND (Y<Z) ) then.. ... ... ...
|X| is absoulute; it means (X 1)
I got messege from MetaEditor
" IF EXPRESSION IS TOO COMPLEX"
After many times trying,... I have no more Idea..So please tell me how to..
ThanksTry this:
if((a>b && MathAbs(x)<1) && y<z)
{
//write here what should happen
}
Question for the oracle...
Is there anyway to make your EA run an Optimization and automatically adjust the settings everyday.
I would like to run a 30 day profit factor optimization for 16 parameters. and have it just apply the settings before the it starts trading again. It shuts down automatically everyday for about 8 hours. this would be a perfect time to run it...
anyone know how to code it... It would bring it from the Great EA level to the Insanley profitable AI level...
This could also be good code for everyone to use in there EA's markets adjust constantally why shouldent our EA's get smarter.
I also posted this in the EA fourm, dident know about this one until now..
Thanks for your help.
advice please
Is it possible to create bar indicators in separate windows like the indicator in the pic i have posted [dont know what they are officially called] for say a red bar if the MACD crosses negative and stays red if in negative zones and green if crosses positive etc etc. Also is it possible to create the same bar indicator windows for say if the price goes below a moving average.
if this seems a daft question please bear with me. When i look at indicators on a chart i tend to try and anticipate what the price will do so im looking to try and have separate window indicators which when all show the same colour i will trade. [Psychology reasons]. Is the creation of these separate bar type indicators something i could learn to create , im far from a programmer in any language.
any advice would be greatly appreciated.
dh
Hi
I am so sorry if my question is very basic.
I am learing mql4.
Please help me how to express this math conditions in mql4:
IF( (A>B) AND (|X| <1) AND (Y<Z) ) then.. ... ... ...
|X| is absoulute; it means (X 1)
I got messege from MetaEditor
" IF EXPRESSION IS TOO COMPLEX"
After many times trying,... I have no more Idea..So please tell me how to..
Thanksif(a>b && (x 1) && y<z){
;your code
}
or maybe x == 0 instead of (x 1) because only way MathAbs(x) < 1 is true when x=0
http://docs.mql4.com/basis/operations/bool
on the other thought maybe you simply need this:
if(a>b && x<1 && y<z)
or this
if(a>b && x<-1 && y<z)
since x is never 0 or -1 according to your definition
I am confused by your definition of absolute value
Is it possible to create bar indicators in separate windows like the indicator in the pic i have posted [dont know what they are officially called] for say a red bar if the MACD crosses negative and stays red if in negative zones and green if crosses positive etc etc. Also is it possible to create the same bar indicator windows for say if the price goes below a moving average.
if this seems a daft question please bear with me. When i look at indicators on a chart i tend to try and anticipate what the price will do so im looking to try and have separate window indicators which when all show the same colour i will trade. [Psychology reasons]. Is the creation of these separate bar type indicators something i could learn to create , im far from a programmer in any language.
any advice would be greatly appreciated.
dhYes, this is possible.
Is it possible to create bar indicators in separate windows like the indicator in the pic i have posted [dont know what they are officially called] for say a red bar if the MACD crosses negative and stays red if in negative zones and green if crosses positive etc etc. Also is it possible to create the same bar indicator windows for say if the price goes below a moving average.
if this seems a daft question please bear with me. When i look at indicators on a chart i tend to try and anticipate what the price will do so im looking to try and have separate window indicators which when all show the same colour i will trade. [Psychology reasons]. Is the creation of these separate bar type indicators something i could learn to create , im far from a programmer in any language.
any advice would be greatly appreciated.
dhHere you are exactly what you want, load all 4 of the same indicator on one chart all with different settings as shown below, when all red sell, when all blue buy.
settings
set first for 15 minutes
second 30 mins
third 60 mins
forth 140 mins
thanks
Guys, thanks i will explore the posted indicators#
very appreciated
Would it be possible to write some type of indicator that plots constant tick charts or constant range bars in another window? These are different forms of charting that are not time based. For example, a 100 tick bar is formed whenever price moves 100 ticks. So on little volume, no bar is formed. A constant range bar is formed whenever price moves a set number of ticks in a range. For example, a range bar set at 20 forms whenever price fills a 20 pip range. Then the next bar is started. Since these aren't time based, I'm not sure if it would be possible in this platform.
add simple alert to EA
Hi, hope to find the little help I need here! can you show me how to add an alert for this EA for example? just when conditions are met for the buy, it also alerts me.
Thank you,
Leo
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = False;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool StopLossMode = True;
extern int StopLoss = 30;
extern bool TakeProfitMode = True;
extern int TakeProfit = 60;
extern bool TrailingStopMode = True;
extern int TrailingStop = 30;
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
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 Buy1_1 = iMA(NULL, 0, 89, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iClose(NULL, 0, Current + 0);
double Buy2_1 = iMA(NULL, 0, 445, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Buy2_2 = iClose(NULL, 0, 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) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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(TrailingStopMode && 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) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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(TrailingStopMode && 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 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY;
//+------------------------------------------------------------------+
//| 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 (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) 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 (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) 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);
}
//+------------------------------------------------------------------+
Thanks & other quests
Thanks for answering my quetion.
newdigital, Kalenzo,asmdev
And thanks for all
It's my next question.
1.) How to compare a value of something that happens and happened
for example, if "n" is now, the variable of time, n-a = "a" time before now.
how to compare the value of RSI when it happend in (n-a) and RSIn(now).
or how to compare MA50 for three bar befor now and last bar?
2.) According to point 1.) the real case is... how to create a bullish/bearish divergence?
When the conditions: There is a highest Price and highest RSI of defined time frame. And then after the time runs... we meet a new highest Price, but not followed by new RSI's high (RSI fail to make a new high).
We All know this situation is a high realibility sell signal, and buy signal is the invers, so I want my EA knows about it.
Thanks again.