Welcome to Forex-TSD!, one of the largest Forex forums worldwide, where you will be able to find the most complete and reliable Forex information imaginable.
From the list below, select the forum that you want to visit and register to post, as many times you want. It’s absolutely free. Click here for registering on Forex-TSD.
Exclusive Forum
The Exclusive Forum is the only paid section. Once you subscribe, you will get free access to real cutting-edge Trading Systems (automated and not), Indicators, Signals, Articles, etc., that will help and guide you, in ways that you could only imagine, with your Forex trading.
Elite Section
Get access to private discussions, specialized support, indicators and trading systems reported every week.
Advanced Elite Section
For professional traders, trading system developers and any other member who may need to use and/or convert, the most cutting-edge exclusive indicators and trading systems for MT4 and MT5.
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.
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.
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) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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);
}
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.
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).
PHP Code:
//this gives you highest/lowest prices on last 10 bars starting with current(last on the graph - zero bar) double highestPrice = High[iHighest(Symbol(),0,MODE_HIGH,10,0)]; double lowestPrice = Low[iLowest(Symbol(),0,MODE_LOW,10,0)];
/* this gives you lowest/highest rsi on last 10 bars starting with current - 0 bar */ double lowestRSI=9999, highestRSI=-9999; int currentBar = 0; int endBar = 10; for(currentBar=0; currentBar<endBar; currentBar++) lowestRSI = MathMin(lowestRSI, iRSI(Symbol(),0,14,PRICE_CLOSE,currentBar)); for(currentBar=0; currentBar<endBar; currentBar++) highestRSI = MathMax(lowestRSI, iRSI(Symbol(),0,14,PRICE_CLOSE,currentBar));
//starting at bar #10 you go back 10 bars on the chart looking for lowest price //thus you'll get lowest price from bar #10 to bar #20 double lowestPrice10_20 = Low[iLowest(Symbol(),0,MODE_LOW,10,10)];
to get divergence, youll need to compare rsi & price over periods if(lowestPrice10_20 < lowestPrice && lowestRSI_10_20 > lowestRSI){ //on bars 10-20 lowest rsi is higher than on bars 0-10 //on bars 10-20 lowest price is lower than on bars 0-10 //i hope thats correct }
you need to start looking at mql4.com for documentation & this forum, most info is covered
1 - Open 1 StopBuy 0.01 at Price + 20 and 1 StopSell 0.01 at Price -20, TP 20.
2 - If one order executed, cancel other.
3 - If executed order is a buy order, reverse sell 1 StopSell double (0.02) at entryprice -20 or opposite if sell order.
4 - and each time a stop order is executed reverse double 20 points far, till TP is executed.Then close all open orders for this pair.
anybody can help me how to code the indicator with expired so the indicator can run...and how to code indicator so it only can run with 1 account id only.
thx
thanks a lot increase it works like magic, is it possible to make an EA that place order in the opposite direction when there is a break and target only 5 pips ?