Ask! - page 51

 
pawang:
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..

Thanks

Try 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

Files:
chart.jpg  11 kb
 
pawang:
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..

Thanks

if(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

 
dxx:
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

Yes, this is possible.

 
dxx:
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

Here 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

Files:
 

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.