Forex
Google

Go Back   Forex Trading > Metatrader Training > Metatrader 4 mql 4 - Development course > Questions
Forex Forum Register FAQ Members List Calendar Search Today's Posts Mark Forums Read


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

Reply
 
LinkBack (2) Thread Tools Display Modes
  #101 (permalink)  
Old 05-14-2006, 07:42 AM
newdigital newdigital is online now
Administrator
 
Join Date: Sep 2005
Posts: 15,432
newdigital has much to be proud ofnewdigital has much to be proud ofnewdigital has much to be proud ofnewdigital has much to be proud ofnewdigital has much to be proud ofnewdigital has much to be proud ofnewdigital has much to be proud ofnewdigital has much to be proud of
Quote:
Originally Posted by cramnhoj
Hi all,

would like to ask how do you facilitate communication between two or more running EAs. What I want to do is maintain a set upper limit on the percentage of equity at risk, and I want several EAs running on different currency pairs. Say the total at risk would be 10% and each trade is set at 1% risk. One way I see this is when an EA has a signal to open a trade, I want it to check a global variable that has the current total percentage at risk, if less than 10%, continue with the trade and increment the global variable (if not, forget the trade).

The question here is if the operation is atomic in execution, what little I remember from college OS concepts is that aside from the global variable containing the percentage at risk I also need a global variable saying whether or not the percentage at risk variable is in use (a lock so to speak). I believe there's a function that sets a value to a global variable but first checks it's current value, this could be used if it's execution is atomic right?

I asked here in case someone has already done this (or remembers their OS concepts course ).
I will be really good to create some script or tool in Metatrader to manage 2 or 3 EAs running (MM, risk, lot sizes and so on). But I don't think that it is easy. It is very difficult. I even can not imagine which kind of program can do it. But it should be very usefull.

Last edited by newdigital : 05-14-2006 at 07:49 AM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #102 (permalink)  
Old 05-15-2006, 06:00 AM
cramnhoj cramnhoj is offline
Junior Member
 
Join Date: Apr 2006
Posts: 4
cramnhoj is on a distinguished road
You're talking about having a script or something to facilitate as a server for the EAs to be able to communicate. I think it'll take a while for metaquotes to come up with something like that. However looking at mql4.com, they say the function I was talking about, GlobalVariableSetOnCondition() is atomic in execution. With that, I can probably come up with a set of functions to do what I need.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #103 (permalink)  
Old 05-15-2006, 07:39 AM
pete7's Avatar
pete7 pete7 is offline
Member
 
Join Date: Jan 2006
Posts: 92
pete7 is on a distinguished road
Can someone help me: Some questions about Time (data & functions). ?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #104 (permalink)  
Old 05-15-2006, 09:40 AM
hellkas hellkas is offline
Senior Member
 
Join Date: Oct 2005
Location: Porto/Portugal
Posts: 252
hellkas is on a distinguished road
Question Help - Zero divide???

Hi all coders...

What I've to do to solve this error: zero divide?

Thank you for any help...
Attached Images
File Type: gif ok.GIF (15.2 KB, 224 views)
File Type: gif error.GIF (15.8 KB, 206 views)
Attached Files
File Type: mq4 TTM Stoch.mq4 (4.3 KB, 48 views)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #105 (permalink)  
Old 05-15-2006, 03:08 PM
shwetha's Avatar
shwetha shwetha is offline
Member
 
Join Date: Feb 2006
Posts: 52
shwetha is on a distinguished road
jma

hello codersguru,
can i use jma instead of ema in EA code?
__________________
your attitude determines your altitude.......
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #106 (permalink)  
Old 05-18-2006, 11:58 AM
Bongo Bongo is offline
Senior Member
 
Join Date: Oct 2005
Posts: 281
Bongo is on a distinguished road
need help-correlation

Hi,
I’m looking for simple expert based on correlation.
Strategy:
If USDCHF jump up 2 pips, sell EURUSD
And vv, if USDCHF jump down 2 ticks, buy EURUSD
Thanks for help.
Bongo
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #107 (permalink)  
Old 05-18-2006, 07:22 PM
HoggZilla HoggZilla is offline
Member
 
Join Date: Jan 2006
Location: Florida
Posts: 45
HoggZilla is on a distinguished road
need help - adjusted MACD

I am trying to create an indicator that adjusts the signal line based on the value of RSI. Really I would like to draw another signal line on the MACD that is adjusted and leave the regular signal line in place.

edit:

I got the indicator to draw the RSI line (first step) in the same window. But for some reason it won't draw the last period. Please see attached.
Attached Files
File Type: mq4 ModifiedMACD.mq4 (3.5 KB, 44 views)

Last edited by HoggZilla : 05-18-2006 at 08:12 PM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #108 (permalink)  
Old 05-19-2006, 04:17 AM
automatedtrader automatedtrader is offline
Senior Member
 
Join Date: Mar 2006
Posts: 128
automatedtrader is on a distinguished road
anythelp would be great

herel is a bit of code im having a problem with//// it works when i load it up on northfinace 1time then never makes a trade again...but it doesnt do anything on Interbank... it is a reversal system using kama the .0005 is reversal pips...I have no idea whats going on, as it made 1 trade on northfinance perfectly when i first loaded it up, but it was an existing trade that should have already been made...
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #109 (permalink)  
Old 05-19-2006, 04:18 AM
automatedtrader automatedtrader is offline
Senior Member
 
Join Date: Mar 2006
Posts: 128
automatedtrader is on a distinguished road
the code

#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 1;
extern int Slippage = 3;
extern bool StopLossMode = True;
extern int StopLoss = 40;
extern bool TakeProfitMode = False;
extern int TakeProfit = 60;
extern bool TrailingStopMode = True;
extern int TrailingStop = 35;

#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 Var1 = iCustom(NULL, 0, "KAMATEST", 3, 2, 0.0005, 0, Current + 0);
double Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, Current + 0);
double Var3 = iCustom(NULL, 0, "KAMARSI", 14, 0, Current + 0);
double Buy1_1 = Var1 ;
double Buy1_2 = 25;
double Buy2_1 = Var2 ;
double Buy2_2 = 80;
double Buy3_1 = Var3 ;
double Buy3_2 = 50;
double Sell1_1 = Var1 ;
double Sell1_2 = -25;
double Sell2_1 = Var2 ;
double Sell2_2 = -80;
double Sell3_1 = Var3 ;
double Sell3_2 = -50;
double CloseBuy1_1 = Var1 ;
double CloseBuy1_2 = -25;
double CloseBuy2_1 = Var2 ;
double CloseBuy2_2 = -80;
double CloseBuy3_1 = Var3 ;
double CloseBuy3_2 = -50;
double CloseSell1_1 = Var1 ;
double CloseSell1_2 = 25;
double CloseSell2_1 = Var2 ;
double CloseSell2_2 = 80;
double CloseSell3_1 = Var3 ;
double CloseSell3_2 = 50;

//+------------------------------------------------------------------+
//| 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 && CloseBuy2_1 <= CloseBuy2_2 && CloseBuy3_1 <= CloseBuy3_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(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) |
//+------------------------------------------------------------------+

if (CloseSell1_1 >= CloseSell1_2 && CloseSell2_1 >= CloseSell2_2 && CloseSell3_1 >= CloseSell3_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(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 && Buy3_1 >= Buy3_2) Order = SIGNAL_BUY;
if (Sell1_1 <= Sell1_2 && Sell2_1 <= Sell2_2 && Sell3_1 >= Sell3_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 (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!
Reply With Quote
  #110 (permalink)  
Old 05-19-2006, 09:27 AM
automatedtrader automatedtrader is offline
Senior Member
 
Join Date: Mar 2006
Posts: 128
automatedtrader is on a distinguished road
i changed the value of .0005 of the indicator in the expert as that only shows the channel line ultimately the levels are what you need to change 25,-25 for .0005 ...30,,-30 for .0006, and so on...
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

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

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
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 08:24 AM.