Help with addition Please

 

Why does the following not add to my TakeProfit?

extern double TakeProfit = 8;

extern int AddSteps = 1;

extern int AddSteps = 5;


void OpenBuy() {

if (gd_100 < SwitchLots) TP_SS = 0;
if (gd_100 >= SwitchLots) TP_SS = TP_SS + AddSteps * Point;
if (gd_100 >= SwitchLots_2) TP_SS = TP_SS + AddSteps_2 * Point;
int l_ord_ticket_0;
if (!GlobalVariableCheck("InTrade")) {
GlobalVariableSet("InTrade", TimeCurrent());
l_ord_ticket_0 = OrderSend(Symbol(), OP_BUY, gd_100, Ask, 1,
Ask - StopLoss * Point, Ask + TakeProfit * Point + TP_SS, "MoneyPrinter", gi_96, 0,
Blue);
GlobalVariableDel("InTrade");
}
}

 
Not sure but I'd use some brackets...I probably overuse them myself but they do no harm and I'd rather be explicit in my use of them and be safe than sorry. i.e. (Ask + (Takeprofit * Point)) I also use NormaliseDouble around them to be sure i.e. NormaliseDouble((Ask + (Takeprofit * Point)), 4) Normalise double is good for all arithmetic and comparisons If that doens't fix it are you getting and OrderModify error such as 130? Or have you tried printing out the values you are trying to set to check there are reasonable?
 
Philfx:
Not sure but I'd use some brackets...I probably overuse them myself but they do no harm and I'd rather be explicit in my use of them and be safe than sorry. i.e. (Ask + (Takeprofit * Point)) I also use NormaliseDouble around them to be sure i.e. NormaliseDouble((Ask + (Takeprofit * Point)), 4) Normalise double is good for all arithmetic and comparisons If that doens't fix it are you getting and OrderModify error such as 130? Or have you tried printing out the values you are trying to set to check there are reasonable?

The brackets were not the answer. You got me thinking when you said NormaliseDouble. Some of my variables were double and some were int. I'm still not getting the answers I want when I test but at least things are changing. Doing some thing is good. Doing nothing is frustrating. So the addition is now working to some extent. I just need to get the order correct. Thanks for answering my post.

 

l_ord_ticket_0 = OrderSend(Symbol(), OP_BUY, gd_100, Ask, 1,

Ask - StopLoss * Point, Ask + TakeProfit * Point + TP_SS, "MoneyPrinter", gi_96, 0,Blue);


is this type int or double?

is it normalised?

slippage of 1 may be an issue?

naw... my error methinks ;), slippage talked about here on another thread: about slippage


have you used NormalizeDouble() ?


could you show more/current state of code?

for instance, variables: gd_100 and SwitchLots, how set? what types are they? what you expect they have when in OpenBuy() ?


Have you used Print() statements to actually see what variables contain and specifically: what all OrderSend() actuals contain (just before make the call)?



 
Bamcoti - glad that helped a little. If in doubt NormalizeDouble it. Especially true if you are using a mixture of int and double. I had an occasion where I was comparing two variables that were both zero but my code did not see them as being the same until I used NormalizeDouble on them both. I just couldn't work out why but NormalizeDouble solved it. Now I have a function that just does the normalizedouble for me. I for example I write NormIt(aValue) instead of NormalizeDouble(aValue, 4). Only a slight improvement to type but I use it so many times anything is good. HTH.
 
ukt:

l_ord_ticket_0 = OrderSend(Symbol(), OP_BUY, gd_100, Ask, 1,

Ask - StopLoss * Point, Ask + TakeProfit * Point + TP_SS, "MoneyPrinter", gi_96, 0,Blue);


is this type int or double? Was mixed but now double

is it normalised? Do not know what that means

slippage of 1 may be an issue? That has not been an issue yet in live trading. But I could meke that an extern user input

naw... my error methinks ;), slippage talked about here on another thread: about slippage


have you used NormalizeDouble() ? Do not know what that means


could you show more/current state of code?

for instance, variables: gd_100 and SwitchLots, how set? what types are they? what you expect they have when in OpenBuy() ?


Have you used Print() statements to actually see what variables contain and specifically: what all OrderSend() actuals contain (just before make the call)? Again, do not know how



All very valid questions. I'm new to programming. So I do not even know how to answer. I put together pieces I like of programs I find. Some times it works and some times not. Here is the entire program as it stands now. Some stuff works some not. Before I tried to modify the step procedure and the take profit. It was very profitable. But in big moves it runs out of account margin and blows out the account. This is an attempt to increment the Step and the Take Profit by the same amount. Ideally I would like it to grow inclusively but that is well beyond me. I thought to get the previous trade's price and stop loss and use that and add to it some how but I got lost and then nothing worked, so I went back to trying this. The base program can make between 4% and 10% per day on a $7k IBFX micro account. But one day like the NFP can wipe out the account. It can not be run on a mini or standard account unless it has a very large balance to work with. I have another program with a Friday stop. I will add that when this works. I also have a hedging strategy I will try to add at some point. I have big plans just not the means to get ther yet.


#property copyright "Copyright©2008-Mike Brown"
#property link "bamcoti@yahoo.com"

extern string Mikes_ATM = "Version date 04/20/2008 9:55";
extern double StepSize = 5;
extern string TP = "Min TakeProfit > StepSize + Bid Ask Spread";
extern double TakeProfit = 8;
extern double StopLoss = 60;
extern double NbrLots = 0.01;
extern double MaxLots = 41;
extern string SL = "What lot size to start increasing the step size";
extern double SwitchLots = 0.04;
extern string AS = "How much to add to step size";
extern double AddSteps = 2;
extern string SL2 = "What lot size to start increasing the step size #2";
extern double SwitchLots_2 = 1.20;
extern string AS2 = "How much to add to step size #2";
extern double AddSteps_2 = 4;
extern string Magic = "Magic numbers for each curancy pair";
extern int EurUsdMagic = 123;
extern int AudCadMagic = 231;
extern int AudJpyMagic = 345;
extern int AudNzdMagic = 456;
extern int AudUsdMagic = 789;
extern int ChfJpyMagic = 890;
extern int EurAudMagic = 901;
extern int EurCadMagic = 102;
extern int EurChfMagic = 103;
extern int EurGbpMagic = 104;
extern int EurJpyMagic = 105;
extern int GbpUsdMagic = 106;
extern int GbpChfMagic = 107;
extern int GbpJpyMagic = 108;
extern int NzdUsdMagic = 109;
extern int NzdJpyMagic = 201;
extern int UsdJpyMagic = 202;
extern int UsdChfMagic = 203;
extern int UsdCadMagic = 204;

int gi_96;
double gd_100;
double TP_SS;
double LTP_buy;
double LTP_sell;

int deinit() {
return (0);
}

int init() {
if (Symbol() == "AUDCADm" || Symbol() == "AUDCAD") gi_96 =
AudCadMagic;
if (Symbol() == "AUDJPYm" || Symbol() == "AUDJPY") gi_96 =
AudJpyMagic;
if (Symbol() == "AUDNZDm" || Symbol() == "AUDNZD") gi_96 =
AudNzdMagic;
if (Symbol() == "AUDUSDm" || Symbol() == "AUDUSD") gi_96 =
AudUsdMagic;
if (Symbol() == "CHFJPYm" || Symbol() == "CHFJPY") gi_96 =
ChfJpyMagic;
if (Symbol() == "EURAUDm" || Symbol() == "EURAUD") gi_96 =
EurAudMagic;
if (Symbol() == "EURCADm" || Symbol() == "EURCAD") gi_96 =
EurCadMagic;
if (Symbol() == "EURCHFm" || Symbol() == "EURCHF") gi_96 =
EurChfMagic;
if (Symbol() == "EURGBPm" || Symbol() == "EURGBP") gi_96 =
EurGbpMagic;
if (Symbol() == "EURJPYm" || Symbol() == "EURJPY") gi_96 =
EurJpyMagic;
if (Symbol() == "EURUSDm" || Symbol() == "EURUSD") gi_96 =
EurUsdMagic;
if (Symbol() == "GBPCHFm" || Symbol() == "GBPCHF") gi_96 =
GbpChfMagic;
if (Symbol() == "GBPJPYm" || Symbol() == "GBPJPY") gi_96 =
GbpJpyMagic;
if (Symbol() == "GBPUSDm" || Symbol() == "GBPUSD") gi_96 =
GbpUsdMagic;
if (Symbol() == "NZDJPYm" || Symbol() == "NZDJPY") gi_96 =
NzdJpyMagic;
if (Symbol() == "NZDUSDm" || Symbol() == "NZDUSD") gi_96 =
NzdUsdMagic;
if (Symbol() == "USDCHFm" || Symbol() == "USDCHF") gi_96 =
UsdChfMagic;
if (Symbol() == "USDJPYm" || Symbol() == "USDJPY") gi_96 =
UsdJpyMagic;
if (Symbol() == "USDCADm" || Symbol() == "USDCAD") gi_96 =
UsdCadMagic;
if (gi_96 == 0) gi_96 = 203055;
return (0);
}

void OpenBuy() {

if (gd_100 < SwitchLots) TP_SS = -1 * Point;
if (gd_100 >= SwitchLots) TP_SS = TP_SS + (AddSteps * Point);
if (gd_100 >= SwitchLots_2) TP_SS = TP_SS + (AddSteps_2 * Point);
int l_ord_ticket_0;
if (!GlobalVariableCheck("InTrade")) {
GlobalVariableSet("InTrade", TimeCurrent());
l_ord_ticket_0 = OrderSend(Symbol(), OP_BUY, gd_100, Ask, 1,
Ask - StopLoss * Point, Ask + (TakeProfit * Point) + (TP_SS * Point), "MoneyPrinter", gi_96, 0,
Blue);
GlobalVariableDel("InTrade");
}
}

void OpenSell() {

if (gd_100 < SwitchLots) TP_SS = -1 * Point;
if (gd_100 >= SwitchLots) TP_SS = TP_SS + (AddSteps * Point);
if (gd_100 >= SwitchLots_2) TP_SS = TP_SS + (AddSteps_2 * Point);
int l_ord_ticket_0;
if (!GlobalVariableCheck("InTrade")) {
GlobalVariableSet("InTrade", TimeCurrent());
l_ord_ticket_0 = OrderSend(Symbol(), OP_SELL, gd_100, Bid, 1,
Bid + StopLoss * Point, Bid - ((TakeProfit * Point) + (TP_SS * Point)), "MoneyPrinter", gi_96, 0,
Red);
GlobalVariableDel("InTrade");
}
}
void ManageBuy() {
LTP_buy = 0;
int l_datetime_0 = 0;
double l_ord_open_price_4 = 0;
double l_ord_lots_12 = 0;
double l_ord_takeprofit_20 = 0;
int l_ord_type_28 = -1;
int l_ord_ticket_32 = 0;
int li_36 = 0;
for (li_36 = 0; li_36 < OrdersTotal(); li_36++) {
OrderSelect(li_36, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != gi_96 || OrderType() != OP_BUY)
continue;
if (OrderOpenTime() > l_datetime_0) {
l_datetime_0 = OrderOpenTime();
l_ord_open_price_4 = OrderOpenPrice();
l_ord_type_28 = OrderType();
l_ord_ticket_32 = OrderTicket();
l_ord_takeprofit_20 = OrderTakeProfit();
TP_SS = OrderTakeProfit();
}
if (OrderLots() > l_ord_lots_12) l_ord_lots_12 = OrderLots();
}

int li_40 = MathLog(l_ord_lots_12 / NbrLots) / MathLog(2) + 1.0;
if (li_40 < 0) li_40 = 0;
gd_100 = NbrLots * MathPow(2, li_40);
if (gd_100 >= MaxLots) gd_100 = NbrLots;
double SL_SS = -1 * Point;
if (gd_100 >= SwitchLots) SL_SS = (StepSize * Point) + (AddSteps * Point);
if (gd_100 >= SwitchLots_2) SL_SS = (StepSize * Point) + (AddSteps_2 * Point);
if (li_40 == 0) OpenBuy();
if (l_ord_open_price_4 - Ask > (StepSize * Point) + (SL_SS * Point)) {
OpenBuy();
return;
}
for (li_36 = 0; li_36 < OrdersTotal(); li_36++) {
OrderSelect(li_36, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != gi_96 || OrderType() != OP_BUY ||
OrderTakeProfit() == l_ord_takeprofit_20 || l_ord_takeprofit_20 == 0.0)
continue;
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),
l_ord_takeprofit_20, 0, Red);

}
}
void ManageSell() {
LTP_sell = 0;
int l_datetime_0 = 0;
double l_ord_open_price_4 = 0;
double l_ord_lots_12 = 0;
double l_ord_takeprofit_20 = 0;
int l_ord_type_28 = -1;
int l_ord_ticket_32 = 0;
int li_36 = 0;
for (li_36 = 0; li_36 < OrdersTotal(); li_36++) {
OrderSelect(li_36, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != gi_96 || OrderType() != OP_SELL)
continue;
if (OrderOpenTime() > l_datetime_0) {
l_datetime_0 = OrderOpenTime();
l_ord_open_price_4 = OrderOpenPrice();
l_ord_type_28 = OrderType();
l_ord_ticket_32 = OrderTicket();
l_ord_takeprofit_20 = OrderTakeProfit();
TP_SS = OrderTakeProfit();
}
if (OrderLots() > l_ord_lots_12) l_ord_lots_12 = OrderLots();
}
int li_40 = MathLog(l_ord_lots_12 / NbrLots) / MathLog(2) + 1.0;
if (li_40 < 0) li_40 = 0;
gd_100 = NbrLots * MathPow(2, li_40);
if (gd_100 >= MaxLots) gd_100 = NbrLots;
double SL_SS = -1 * Point;
if (gd_100 >= SwitchLots) SL_SS = (StepSize * Point) + (AddSteps * Point);
if (gd_100 >= SwitchLots_2) SL_SS = (StepSize * Point) + (AddSteps_2 * Point);
if (li_40 == 0) OpenSell();
if (Bid - l_ord_open_price_4 > ((StepSize * Point) + (SL_SS * Point)) &&
l_ord_open_price_4 > 0.0) {
OpenSell();
return;
}
for (li_36 = 0; li_36 < OrdersTotal(); li_36++) {
OrderSelect(li_36, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != gi_96 || OrderType() != OP_SELL ||
OrderTakeProfit() == l_ord_takeprofit_20 || l_ord_takeprofit_20 == 0.0)
continue;
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),
l_ord_takeprofit_20, 0, Red);
}
}

int start() {

ManageBuy();
ManageSell();
return (0);
}

 
Philfx:
Not sure but I'd use some brackets...I probably overuse them myself but they do no harm and I'd rather be explicit in my use of them and be safe than sorry. i.e. (Ask + (Takeprofit * Point)) I also use NormaliseDouble around them to be sure i.e. NormaliseDouble((Ask + (Takeprofit * Point)), 4) Normalise double is good for all arithmetic and comparisons If that doens't fix it are you getting and OrderModify error such as 130? Or have you tried printing out the values you are trying to set to check there are reasonable?

I need to read up on how that works and give it a try. For now I do not understand it.

 
Bamcoti:
Philfx:
Not sure but I'd use some brackets...I probably overuse them myself but they do no harm and I'd rather be explicit in my use of them and be safe than sorry. i.e. (Ask + (Takeprofit * Point)) I also use NormaliseDouble around them to be sure i.e. NormaliseDouble((Ask + (Takeprofit * Point)), 4) Normalise double is good for all arithmetic and comparisons If that doens't fix it are you getting and OrderModify error such as 130? Or have you tried printing out the values you are trying to set to check there are reasonable?

I need to read up on how that works and give it a try. For now I do not understand it.

I looked it up and tried to give it a go. After inserting several I tried to compile and got Error: NormaliseDouble' - function is not defined for every occurrence that I tried to use it. I did not do it correctly even though it looks similar to the instructions. I really need help!

 

All very valid questions. I'm new to programming. So I do not even know how to answer. I put together pieces I like of programs I find. Some times it works and some times not. Here is the entire program as it stands now. Some stuff works some not. Before I tried to modify the step procedure and the take profit. It was very profitable. But in big moves it runs out of account margin and blows out the account. This is an attempt to increment the Step and the Take Profit by the same amount. Ideally I would like it to grow inclusively but that is well beyond me. I thought to get the previous trade's price and stop loss and use that and add to it some how but I got lost and then nothing worked, so I went back to trying this. The base program can make between 4% and 10% per day on a $7k IBFX micro account. But one day like the NFP can wipe out the account. It can not be run on a mini or standard account unless it has a very large balance to work with. I have another program with a Friday stop. I will add that when this works. I also have a hedging strategy I will try to add at some point. I have big plans just not the means to get ther yet.

Hello Bamcoti

As said above by Philfx for instance, there are some best practices that MQL4 programmers generally use otherwise ClientTerminal and/or Broker side will shout at your EA...

The builtin function NormalizeDouble() is such a best practice item.


imho, to pick up even a sample of what programming is all about, is far better to say download one of the many free C compilers (Borland have one) > find a web site with C tutorial and then... just get stuck in and practice/learn/practice/...

One possibility is: Borland C++ 5.5 tutorial and... read around on the web - masses of sites that have tutorials, articles etc. Is all worthwhile time spent - is your deposit talking about here, yes?

??have you ever written that first "Hello World!" program??

When you do... you will not forget the moment :o)))

and... believe me, is far more enjoyable than loosing your deposit!


Many MT users have been programming for decades - this you not going to do, yes?

but... you could devote a week or two to getting a firm base for your programming pyramid

- you would not regret it and MQL4 is a flavor of the C programming language [you will begin to see this] and you will then feel more at ease.



===============================

Only some of many READ 'n LEARN Links I have gathered together...


Allways pays to understand the words...

MQL4 Tutorial - Appendixes - Glossary


MQL4 Language for Newbies. Technical Indicators and Built-In Functions


Programming in Algorithmic Language MQL4 - Introductory Course


MQL4 Documentation - same as in MetaEditor (ctrl+T)

Please do remember that MetaEditor HELP is massive resource and can be useful to have it open in a window when reading other web pages so can do quicky lookup to understand some item mentioned on the page


MetaQuotes Software forum


MetaQuotes Software Russian Forum


This forum that you are on...

and it's Russian Forum (very lively:) /ru


Note: for the .ru sites, unless read Russian - will need translator. One is AltaVista Babel Fish translator

Google does one too...


and finally:
On this site, you will find tutorials, that are, on the first place, intended to help you to avoid common pitfalls that most traders are not aware of (or are ignoring, for some reasons).

Have a nice journey !

ps,

thanks for posting all code but I'm personally not into teaching programming - is hard enough understanding MT environment, that's the rub yes?

programming is a tool, understanding MT is another issue altogether.

For sure, you will pick up methods for getting clean compiles etc, but as to programming this site is not gonna teach much of that imho.

understanding and using MT environment is what forum is about





 
ukt:

All very valid questions. I'm new to programming. So I do not even know how to answer. I put together pieces I like of programs I find. Some times it works and some times not. Here is the entire program as it stands now. Some stuff works some not. Before I tried to modify the step procedure and the take profit. It was very profitable. But in big moves it runs out of account margin and blows out the account. This is an attempt to increment the Step and the Take Profit by the same amount. Ideally I would like it to grow inclusively but that is well beyond me. I thought to get the previous trade's price and stop loss and use that and add to it some how but I got lost and then nothing worked, so I went back to trying this. The base program can make between 4% and 10% per day on a $7k IBFX micro account. But one day like the NFP can wipe out the account. It can not be run on a mini or standard account unless it has a very large balance to work with. I have another program with a Friday stop. I will add that when this works. I also have a hedging strategy I will try to add at some point. I have big plans just not the means to get ther yet.

Hello Bamcoti

As said above by Philfx for instance, there are some best practices that MQL4 programmers generally use otherwise ClientTerminal and/or Broker side will shout at your EA...

The builtin function NormalizeDouble() is such a best practice item.


imho, to pick up even a sample of what programming is all about, is far better to say download one of the many free C compilers (Borland have one) > find a web site with C tutorial and then... just get stuck in and practice/learn/practice/...

One possibility is: Borland C++ 5.5 tutorial and... read around on the web - masses of sites that have tutorials, articles etc. Is all worthwhile time spent - is your deposit talking about here, yes?

??have you ever written that first "Hello World!" program??

When you do... you will not forget the moment :o)))

and... believe me, is far more enjoyable than loosing your deposit!


Many MT users have been programming for decades - this you not going to do, yes?

but... you could devote a week or two to getting a firm base for your programming pyramid

- you would not regret it and MQL4 is a flavor of the C programming language [you will begin to see this] and you will then feel more at ease.



===============================

Only some of many READ 'n LEARN Links I have gathered together...


Allways pays to understand the words...

MQL4 Tutorial - Appendixes - Glossary


MQL4 Language for Newbies. Technical Indicators and Built-In Functions


Programming in Algorithmic Language MQL4 - Introductory Course


MQL4 Documentation - same as in MetaEditor (ctrl+T)

Please do remember that MetaEditor HELP is massive resource and can be useful to have it open in a window when reading other web pages so can do quicky lookup to understand some item mentioned on the page


MetaQuotes Software forum


MetaQuotes Software Russian Forum


This forum that you are on...

and it's Russian Forum (very lively:) /ru


Note: for the .ru sites, unless read Russian - will need translator. One is AltaVista Babel Fish translator

Google does one too...


and finally:
On this site, you will find tutorials, that are, on the first place, intended to help you to avoid common pitfalls that most traders are not aware of (or are ignoring, for some reasons).

Have a nice journey !

ps,

thanks for posting all code but I'm personally not into teaching programming - is hard enough understanding MT environment, that's the rub yes?

programming is a tool, understanding MT is another issue altogether.

For sure, you will pick up methods for getting clean compiles etc, but as to programming this site is not gonna teach much of that imho.

understanding and using MT environment is what forum is about







Good Morning ukt

Thank you for the considerable time you must have spent putting this list together for me. I'm learning out of necessity. I have tried several programmers and spent several hundred dollars trying to get the results I want. A couple of the EAs I have had programmed, work great finaly. I continue on my quest for a good programmer. I'm working with one that I hope will be the one I continue on with. This program has been my project from the beginning of my MetaTreder experience. I have been the trial and learn in other programming languages: Basic, BasicA. I solder together my first computer when an XT at 10mh was fast. After spending all my money building that computer I could not afford any software and the Internet was not an option yet. So since DOS came with the naked motherboard I played in DOS. I found basic on the disk and programed my first pong game. So you can see I have had the thrill of creation in my past. Now the thrill is seeing those pips tick away and knowing that my plan has come to fruition. I came on this forum to get help getting my ideas working. I'm a visual learner. If I can see it I can learn it and apply it. I have difficulty reading the concepts and turning it around into code. If the code I see does not closely match my need I have a hard time applying it. So I will learn and I will read the information you suggest. What I want now is for some one to help me get my baby out of the crib and up and running. As far as Russian and English sites I did not know there was a difference. How do I get to the English site and forum? I would like to have a cruse around both English and Russian. I just thought it was a lot of Russians because that is were MetaTrader started. I did not know?

Mike

 

Hello Mike


Well, I mentioned the Russian forum /ru as imho [with no disrespect to this forum/English based], the .ru forum although for Russian language people is [to me] very different in content. Just how I see it I guess. Massive ongoing issues having to use Russian to English translators. Basically it's still many times lots of English Russian !! Somehow, usually get the basics as to what's been posted but not always! Also, get patches where Russian stays Russian - oh well!

Remember please, this forum here is a MetaQuotes Software Corp. forum and the support/moderators are [afaik] Russian but English is the forums base language... no Russian here. To get your Russian 'fix' go to /ru which is [I guess] actual main MetaQuotes Software Corp. forum.

DOS... now - that is also my introduction to desktop PC. I was assembler/board level hacker for many years - started back in 60's - another era indeed. Of course I 'graduated' to many types block structured languages and OS's and many hardware platforms had their own cpu/assembler too, so always something new to learn. Unix [originally] and now Unix like for desktop is Linux - this I would like to migrate to 100%. MT does live on Linux if have say, Wine.

Am pleased for you that able to 'coble' together various bits 'n pieces. Your visual skillset is a worthy attribute - I have often sought same but to no avail, oh well...

Trully, your willingness to learn MQL4 will reap benifits and since you do know of that 'thrill' of which I speak, well then - am sure you will not have difficulty with MT. Also MQL5 is on the horizon, giving more useful functionality and of course, new mountains to scale for us all ;-)

Please reply now and then - interesting to learn how you progress, ok?


Tim

Reason: