Forex
Google
New signals service!

Go Back   Forex Trading > Metatrader Training > Metatrader 4 mql 4 - Development course > Questions


Register in Forex TSD!
Trading Systems Leaders in this forum (automated trading systems) are winning more than 3000 pips in a month (30000$ investing one lot every time).
Click here to register and get more information

 
 
LinkBack (2) Thread Tools
 
Old 02-24-2007, 03:44 PM
Senior Member
 
Join Date: Oct 2006
Posts: 201
aegis is on a distinguished road
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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-25-2007, 11:27 PM
Junior Member
 
Join Date: Feb 2007
Posts: 2
leo1452 is on a distinguished road
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);
}
//+------------------------------------------------------------------+
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-26-2007, 03:10 AM
Junior Member
 
Join Date: Feb 2007
Posts: 9
pawang is on a distinguished road
Question 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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-26-2007, 04:59 AM
Member
 
Join Date: Dec 2005
Posts: 68
asmdev is on a distinguished road
Quote:
Originally Posted by pawang
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=9999highestRSI=-9999;
int currentBar 0;
int endBar 10;
for(
currentBar=0currentBar<endBarcurrentBar++) lowestRSI MathMin(lowestRSIiRSI(Symbol(),0,14,PRICE_CLOSE,currentBar));
for(
currentBar=0currentBar<endBarcurrentBar++) highestRSI MathMax(lowestRSIiRSI(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 divergenceyou'll 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

Last edited by asmdev; 02-26-2007 at 05:21 AM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-28-2007, 10:35 AM
Member
 
Join Date: Oct 2006
Posts: 56
Jovager is on a distinguished road
How can I write this EA ?

How can I write this EA :

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.

Thanks for help.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-28-2007, 12:04 PM
MiniMe's Avatar
Senior Member
 
Join Date: Nov 2006
Location: Montréal
Posts: 1,167
MiniMe is on a distinguished road
bollinger alert

it is possible to setup an alert on the attached indicator, whenever there is a signal below 0 or above 0.7 ?
and the indicator range is - 0.4 to 1.25
Attached Files
File Type: mq4 Bollinger Bands %b.mq4 (2.5 KB, 25 views)
__________________
Risk comes from not knowing what you're doing


Last edited by MiniMe; 02-28-2007 at 12:09 PM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-28-2007, 12:20 PM
increase's Avatar
Senior Member
 
Join Date: May 2006
Posts: 640
increase is on a distinguished road
Try this I put an alert on it it's great
Attached Files
File Type: mq4 IFish.mq4 (2.7 KB, 123 views)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-28-2007, 12:21 PM
Junior Member
 
Join Date: Jul 2006
Posts: 2
f3n_dy is on a distinguished road
anybody can help me with code

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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-28-2007, 12:38 PM
MiniMe's Avatar
Senior Member
 
Join Date: Nov 2006
Location: Montréal
Posts: 1,167
MiniMe is on a distinguished road
Quote:
Originally Posted by increase
Try this I put an alert on it it's great
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 ?
__________________
Risk comes from not knowing what you're doing


Last edited by MiniMe; 02-28-2007 at 01:00 PM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 
Old 02-28-2007, 02:11 PM
MiniMe's Avatar
Senior Member
 
Join Date: Nov 2006
Location: Montréal
Posts: 1,167
MiniMe is on a distinguished road
sound alert for each indicator

can we change the sound alert for each indicator, if so how ?
__________________
Risk comes from not knowing what you're doing

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
 

Bookmarks

Tags
histogram, forex
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off
Forum Jump

LinkBacks (?)
LinkBack to this Thread: http://www.forex-tsd.com/questions/270-ask.html
Posted By For Type Date
OzFx System:) - Page 639 This thread Refback 06-21-2008 09:53 PM
Forex SRDC Sidus Sibkis EA MT4 Forum OTCSmart This thread Refback 12-08-2007 11:46 AM


All times are GMT. The time now is 03:15 AM.



Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.