Money Management - page 13

 

And the post was moved to this thread toriacht.

 

Hi,

Thanks for moving my post but unfortunately the EA will not attach to my chart. When I select 'attach to chart' nothing happens. Not even the INputs window. Do I need to modify the source code. I am using Interbank MetaTrader V4 Build 215.

I downloaded another EA (MTPv2-4)from the same thread and it will attach to my chart with no problems.

Thanks again for the help,

Toriacht

 
toriacht:
Hi,

Thanks for moving my post but unfortunately the EA will not attach to my chart. When I select 'attach to chart' nothing happens. Not even the INputs window. Do I need to modify the source code. I am using Interbank MetaTrader V4 Build 215.

I downloaded another EA (MTPv2-4)from the same thread and it will attach to my chart with no problems.

Thanks again for the help,

Toriacht

If you refer to the one attached two posts back it's an indicator not EA.

 

sorry!

apologies for the novice mistake... i should have checked that! thanks again..

 

another qn.

The FX Money Mgt. v2 and Money Manager Window Indicators work perfectly with my $50,000 Demo a/c but they do not work with my real a/c which is a $500 micro a/c. It appears correctly but never suggests a lot size which always remains 0. Can this be rectified?

Thx,

Toriacht

 
toriacht:
The FX Money Mgt. v2 and Money Manager Window Indicators work perfectly with my $50,000 Demo a/c but they do not work with my real a/c which is a $500 micro a/c. It appears correctly but never suggests a lot size which always remains 0. Can this be rectified?

Thx,

Toriacht

In post 57of this thread there is a mod for micro lots.

 

bold text apologies

many many apologies for the bold text/font size on prev. post!

 

Mini A/c

The edit by frosk in post #56 does not work with my real a/c. As before it works fine with my Demo a/c.

When I select it for my real a/c it will not appear on the screen. I have an InterTradeBank Mini a/c with a balance of $500. The edit that frosk inserted was to comment out the MathFloor calculation and return the position size. Any ideas how I might edit to work with my mini a/c.

double PoseSize()

{

double result;

double PoseSize;

double RP;

RP=RiskInPoints();

if(PointCost()>0&&RP>0)

{

PoseSize=(AccountBalance()*Risk/1000)/(RP*PointCost());

//result=MathFloor(PoseSize*10)/10;

result=PoseSize;

}

else

result=0;

return(result);

}

Thanks,

Toriacht

 

EA to close specific symbol in profit

Hello, is there an EA that I can set to watch a specific currency symbol and when only it gets to a certain dollar amount close all trades with that currency only?

Thanks

 

Position Sizing Calculator

I'm building a Position Sizing calculator as a function based on the "Kelly Formula"

(Win Rate-((1-Win Rate)/(Avg Win/Avg Loss)

I've got the over all code and calculations working with manual inputs (extern) for the required variables and am now trying to get the function working dynamically by calling certain account information (namely I want to calculate the Winning consistency rate (%), the avg # pips per winning trade, and the avg # pips per lossing trade)

I could use any and all help getting the three functions (WinRate AvgWin & AvgLoss) operating. I have been using the manual input variation for months and it works great. Here is the complete code for this (automated) version to this point... in testing I am getting no dynamic output, everything goes back to the default setting (50, 40, 20). I have this set up as it's own EA for testing and easy modularization into any existing EA. once attached to any chart, the output is printed in the log/expert tab. the use of fractals is intentional so that maximum account growth (or minimal loss) is exploited. as a note most Brokers offering the MT trader platform allow fractal trading for either mini or std lots. This will prove use full in the future with money management that can take off partial lot positions (ie: remove 25% of 1 Lot). anyway...

in order to collect the real time account info I need I am trying to...

1. count all trades

2. count trades that are profitable

etc. etc.

I may or may not be going about this the right way.

Thanks in advance for all the help...

SeaWolf

//+------------------------------------------------------------------+

//| KellyFormula.mq4 |

//+------------------------------------------------------------------+

#property copyright "seawolf"

#property link "seawolf"

//+------------------------------------------------------------------+

//| EXTERNAL INFORMATION INPUT |

//+------------------------------------------------------------------+

extern int MyAccount = 1001; //------>>>> Account ID

extern int ExpertID = 500001; //------>>>> Magic Number for this EA

extern double PipValue= 1.00; //------>>>> use for ALL calc's

extern double LotCost= 50.0; //------>>>> use for ALL calc's

extern double PercentMax= 24.0; //------>>>> max % account leveraged @ one time

extern int TradesMax= 3; //------>>>> max simultaniouse trades (example: 24%/3 trades = 8% per trade)

extern bool UseKelly= true; //------>>>> Manual overide toggle

extern double ManualLots= 1.0; //------>>>> # lots if "UseKelly" is false

extern double mWinRate= 50.00; //------>>>> winning consistancy in % (manual overide)

extern int mAvgWin= 40; //------>>>> avg # pips per winning trade (manual overide)

extern int mAvgLoss= 20; //------>>>> avg # pips per lossing trade (manual overide)

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

PositionSize();

{

Print("Lots=",PositionSize()," WinRate=",WinRate()," AvgWin=",AvgWin()," AvgLoss=",AvgLoss());

}

Comment("Current Time is ",TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ... Win Rate= ",WinRate()," Avg Win= ",AvgWin()," Avg Loss= ",AvgLoss());

//----

return(0);

}

//----

//+------------------------------------------------------------------+

//| CALCULATE POSITION SIZE FOR ALL NEW TRADES |

//+------------------------------------------------------------------+

//------------------------>>>>

double PositionSize()

{

//------------------------>>>> DO NOT USE KELLY FORMULA, USE FLAT RATE

if(UseKelly == true)

{

double KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss()));

double PerTrade;

double Lots;

if(KelyForm > PercentMax)

{

PerTrade = (PercentMax/10)/TradesMax;

}

else if(KelyForm < PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

else if(KelyForm == PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

Lots = (PerTrade * AccountBalance()/LotCost);

return(MathRound(Lots)/10);

}

}

//+------------------------------------------------------------------+

//| COLLECT REAL TIME ACCOUNT INFO |

//+------------------------------------------------------------------+

//------------------------>>>>

double WinRate()

{

double Ticket;

double CountWins = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY)

{

if(OrderClosePrice() >= OrderOpenPrice())

CountWins++;

}

else if(OrderType()==OP_SELL)

{

if(OrderClosePrice() <= OrderOpenPrice())

CountWins++;

}

}

}

if(CountWins > 0)

return(MathRound(CountWins/OrdersHistoryTotal())*10);

else

Print("Real Time WinRate not Available");

return(mWinRate);

}

//------>>>>

//------------------------>>>>

double AvgWin()

{

double Ticket;

double CountTrades = 0;

double CountPips = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() >= 0)

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() >= 0)

CountPips++;

}

}

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

else

Print("Real Time AvgWin not Available");

return(mAvgWin);

}

//------>>>>

//------------------------>>>>

double AvgLoss()

{

double Ticket;

double CountTrades = 0;

double CountPips = 0;

for(Ticket=0;Ticket<OrdersTotal();Ticket++)

{

OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//------>>>>

if(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() < 0)

CountPips++;

}

if(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() < 0)

CountPips++;

}

}

}

if(CountPips > 0)

return(MathRound(CountPips/CountTrades)*10);

else

Print("Real Time AvgLoss not Available");

return(mAvgLoss);

}

//---------------------------------------------------------------------+

Reason: