I am a total noob in FX & MM and I am having difficulty with understanding Market System Analyzer

Could you explain it to me as if I am 2 year old, step by step with examples?

Alpari FX, Margin 1:500, Margin per 0.01 Lot is 3 USD

USDJPY trades are

Historically max loss was -9.29 USD for Lot 0.01, but stoploss is possible -16 USD loss for 0.01 Lot

And according to Metatrader 4 trading charts, price on multiple occasions was very close to hitting stoploss -16 USD before bouncing back and closing in profits or less losses.

Thus, I put in MSA that maximum risk was -16 USD for each 0.01 LOT as my strategy dictates

Initial Balance in MSA 1000 USD

Max lot size 10 000, because Alpari FX allows max 100 Lots 100 /0.01 = 10 000 MSA lots

Initial Margin Per Contract 4$, in reality Alpari wants 2 USD margin for USDJPY if leverage 1:500

Just to be safe…

Monte Carlo 10 000 samples, F7 Optimize Position Size, Fixed Fraction from Equity

These are historical trades

12.52

12.48

1.52

5.68

6.48

-1.95

-1.92

6.1

9.58

5.24

-4.96

14.33

15.69

6.58

7.38

11.96

11.24

4.64

5.85

14.56

8.39

4.31

9.07

1.02

-3.12

-0.18

3.18

-9.29

-4.54

6.41

5.55

12.75

12.49

-0.14

18.17

22.79

-2.3

-1.33

21.17

7.55

usdjpy.msa

Position Sizing: Fixed Risk

Fixed Fraction (%): 100.0 (Optimal)

Starting Equity: $1,000.00

Equity High: $1,542,937.19

Equity Low: $156.22

Net Profit: $1,541,937.19

Final Equity: $1,542,937.19

Return on Starting Equity: 154200.%

Number of Trades: 41

Percent Profitable: 73.17%

Max Contracts: 10,000

Largest Win: $227,900.00

Ave Win: $51,428.94

Max Consec Wins: 26

Largest Loss: ($334.44)

Ave Loss: ($84.63)

Max Consec Losses: 7

Win - Loss Ratio: 607.7

Ave Trade: $37,608.22

Ave Trade (%): 24.10%

Max Drawdown: $843.78

Max Drawdown (%): 84.38%

Profit Factor: 1657.

Return - Drawdown Ratio: 1827.

Modified Sharpe Ratio: 0.7725

100% or even 150% of equity Optimal Fixed Fraction, really?

What is it mean?

I have to risk 100% of my account on each trade?

How should I use MSA results then?

Here is answer from MSA creator

You’re not understanding how the program works. 100% fixed fraction doesn’t mean you risk 100%. It only risk up to the maximum position size. You could put a fixed fraction of 10000000%, and you wouldn’t be risking any more than the maximum size. That’s why you have a maximum size. The 100% result is just what the optimization gives you because you set a hard limit on the size. That’s why I suggested you use the Parameter Studies feature so you can see how the fixed fraction is related to the results.

MSA has been used by over 1000 traders for more than 10 years, including many professional money managers. The calculations have been fully verified. I’m sorry if the functionality of the program is not clearer.

I calculate lot size like this

double current_balance = 0;

int nOrders = 0; datetime OCTs[];

for(int iPos=(OrdersHistoryTotal()-1); iPos >= 0; iPos–) if (

OrderSelect(iPos, SELECT_BY_POS, MODE_HISTORY) // Only orders w/

&& OrderMagicNumber() == Magic // my magic number

&& OrderSymbol() == Symbol() // and my pair.

&& OrderType() <= OP_SELL//Avoid cr/bal forum.mql4.com/32363#325360

)

{

```
double True_Profit = OrderProfit()+OrderSwap()+OrderCommission();
current_balance += True_Profit;
if (debug) Print("True Profit="+True_Profit+";current_balance="+current_balance+";OrderProfit="+OrderProfit()+";OrderSwap()="+OrderSwap()+";OrderCommission()="+OrderCommission()+";OrderType()="+OrderType()+";OrderOpenPrice="+OrderOpenPrice()+";OrderClosePrice="+OrderClosePrice()+";OrderOpenTime()="+OrderOpenTime()+";OrderTicket()="+OrderTicket()+";OrderLots()="+OrderLots());
// current_balance
// double profit = (OrderClosePrice()-OrderOpenPrice())*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE)/Point;
```

//if (debug) Print (“profit=”+profit);

}

current_balance += initial_deposit;

if (debug) Print(Symbol() +";AccountFreeMargin()="+AccountFreeMargin()+";initial_deposit="+initial_deposit+"; current_balance="+current_balance);

current_balance=current_balance*0.95;
double normalized_balance = NormalizeDouble(current_balance,2);
double RiskDollars = (RiskPercent/100) *10+MarketInfo(Symbol(), MODE_SPREAD);

*normalized_balance; RiskDollars = NormalizeDouble(RiskDollars,0); // slippage? spread? double RiskStopLoss = StopLoss*10 +Slippage

double pip_value = (MarketInfo(Symbol(), MODE_TICKVALUE)/ MarketInfo(Symbol(), MODE_TICKSIZE)) * Point; // true stable pip value in USD deposit currency

Print (" RiskDollars="+ RiskDollars+";RiskStopLoss="+RiskStopLoss+";pip_value="+pip_value+";1 lot risk RSL*pipvalue="+(pip_value*RiskStopLoss));

LotSize = NormalizeDouble( RiskDollars/(pip_value*RiskStopLoss),2) ;