I am working an a indicator that gives me certain information about the currencies I trade.
One part of this is the amount of Margin Used to open a trade.
Market Info(NULL,MODE_MARGIN REQUIRED) works just fine as long as the "quote" part of the symbol is USD but it does nothing if USD is the "base" part of the symbol.
Anyone know how to calculate the amount of Margin needed to open a trade if the base is USD?
It works perfectly ok for me whether USD is the first or second currency in the pair.
When USD is the first pair I get $2000 for a Standard Lot , but when I place a trade the Margin Used to open the trade varies wildly.
Use AccountFreeMarginCheck and you don't care.
Here is the code I am using.
I only won't the see what the Margin Used to open a trade is, it has nothing to do with a stoploss.
Please excuse the messy code, I am still working on it.
//Margin Required double MarginRequired=NormalizeDouble(MarketInfo(NULL,MODE_MARGINREQUIRED),Digits); double Pip_Value=0; if(Digits==2 || Digits==3) Pip_Value=(0.0001/Bid)*100000; if(Digits==4 || Digits==5) Pip_Value=((0.0001/Bid)*100000)*Bid; ObjectCreate("MarginRequired L",OBJ_LABEL,SubWindow,0,0); ObjectSetText("MarginRequired L","MarginRequired",FontSize,Font,FontColor); ObjectSet("MarginRequired L",OBJPROP_CORNER,Corner); ObjectSet("MarginRequired L",OBJPROP_XDISTANCE,625); ObjectSet("MarginRequired L",OBJPROP_YDISTANCE,15); ObjectCreate("PipValue L",OBJ_LABEL,SubWindow,0,0); ObjectSetText("PipValue L","PipValue",FontSize,Font,FontColor); ObjectSet("PipValue L",OBJPROP_CORNER,Corner); ObjectSet("PipValue L",OBJPROP_XDISTANCE,800); ObjectSet("PipValue L",OBJPROP_YDISTANCE,15); //Margin Required Standard Lot ObjectCreate("Margin Required Standard Lot L",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Standard Lot L","Standard Lot",FontSize,Font,FontColor); ObjectSet("Margin Required Standard Lot L",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Standard Lot L",OBJPROP_XDISTANCE,600); ObjectSet("Margin Required Standard Lot L",OBJPROP_YDISTANCE,30); ObjectCreate("Margin Required Standard Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Standard Lot C",DoubleToStr(MarginRequired,2),FontSize,Font,FontColor); ObjectSet("Margin Required Standard Lot C",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Standard Lot C",OBJPROP_XDISTANCE,700); ObjectSet("Margin Required Standard Lot C",OBJPROP_YDISTANCE,30); ObjectCreate("Pip Value Standard Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Pip Value Standard Lot C",DoubleToStr(Pip_Value,2),FontSize,Font,FontColor); ObjectSet("Pip Value Standard Lot C",OBJPROP_CORNER,Corner); ObjectSet("Pip Value Standard Lot C",OBJPROP_XDISTANCE,800); ObjectSet("Pip Value Standard Lot C",OBJPROP_YDISTANCE,30); //Margin Required Mini Lot ObjectCreate("Margin Required Mini Lot L",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Mini Lot L"," Mini Lot",FontSize,Font,FontColor); ObjectSet("Margin Required Mini Lot L",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Mini Lot L",OBJPROP_XDISTANCE,600); ObjectSet("Margin Required Mini Lot L",OBJPROP_YDISTANCE,45); ObjectCreate("Margin Required Mini Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Mini Lot C",DoubleToStr(MarginRequired/10,2),FontSize,Font,FontColor); ObjectSet("Margin Required Mini Lot C",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Mini Lot C",OBJPROP_XDISTANCE,700); ObjectSet("Margin Required Mini Lot C",OBJPROP_YDISTANCE,45); ObjectCreate("Pip Value Mini Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Pip Value Mini Lot C",DoubleToStr(Pip_Value/10,2),FontSize,Font,FontColor); ObjectSet("Pip Value Mini Lot C",OBJPROP_CORNER,Corner); ObjectSet("Pip Value Mini Lot C",OBJPROP_XDISTANCE,800); ObjectSet("Pip Value Mini Lot C",OBJPROP_YDISTANCE,45); //Margin Required Micro Lot ObjectCreate("Margin Required Micro Lot L",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Micro Lot L"," Micro Lot",FontSize,Font,FontColor); ObjectSet("Margin Required Micro Lot L",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Micro Lot L",OBJPROP_XDISTANCE,600); ObjectSet("Margin Required Micro Lot L",OBJPROP_YDISTANCE,60); ObjectCreate("Margin Required Micro Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Micro Lot C",DoubleToStr(MarginRequired/100,2),FontSize,Font,FontColor); ObjectSet("Margin Required Micro Lot C",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Micro Lot C",OBJPROP_XDISTANCE,700); ObjectSet("Margin Required Micro Lot C",OBJPROP_YDISTANCE,60); ObjectCreate("Pip Value Micro Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Pip Value Micro Lot C",DoubleToStr(Pip_Value/100,2),FontSize,Font,FontColor); ObjectSet("Pip Value Micro Lot C",OBJPROP_CORNER,Corner); ObjectSet("Pip Value Micro Lot C",OBJPROP_XDISTANCE,800); ObjectSet("Pip Value Micro Lot C",OBJPROP_YDISTANCE,60); //Margin Required Penny Lot ObjectCreate("Margin Required Penny Lot L",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Penny Lot L"," Penny Lot",FontSize,Font,FontColor); ObjectSet("Margin Required Penny Lot L",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Penny Lot L",OBJPROP_XDISTANCE,600); ObjectSet("Margin Required Penny Lot L",OBJPROP_YDISTANCE,75); ObjectCreate("Margin Required Penny Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Margin Required Penny Lot C",DoubleToStr(MarginRequired/1000,2),FontSize,Font,FontColor); ObjectSet("Margin Required Penny Lot C",OBJPROP_CORNER,Corner); ObjectSet("Margin Required Penny Lot C",OBJPROP_XDISTANCE,700); ObjectSet("Margin Required Penny Lot C",OBJPROP_YDISTANCE,75); ObjectCreate("Pip Value Penny Lot C",OBJ_LABEL,SubWindow,0,0); ObjectSetText("Pip Value Penny Lot C",DoubleToStr(Pip_Value/1000,2),FontSize,Font,FontColor); ObjectSet("Pip Value Penny Lot C",OBJPROP_CORNER,Corner); ObjectSet("Pip Value Penny Lot C",OBJPROP_XDISTANCE,800); ObjectSet("Pip Value Penny Lot C",OBJPROP_YDISTANCE,75);//+------------------------------------------------------------------+
You are wrong.
Really ?
Prove it.
I am working an a indicator that gives me certain information about the currencies I trade.
One part of this is the amount of Margin Used to open a trade.
Market Info(NULL,MODE_MARGIN REQUIRED) works just fine as long as the "quote" part of the symbol is USD but it does nothing if USD is the "base" part of the symbol.
Anyone know how to calculate the amount of Margin needed to open a trade if the base is USD?
It's pretty simple really; you just have to convert one to another at the current rate. This can be challenging if you have something like GBPJPY and you want to know the margin in USD. But if the base currency *is* USD, you basically use the price.
e.g. if EURUSD is trading at $120, then at 100:1 leverage, and 100,000 EUR for a contract, (100,000 EUR is worth $140,000) so it will cost $1400 at 100:1. $700 at 200:1. So at 100:1 leverage, 0.01 lots of GBPUSD trading at $1.34 will cost $134,000 / 200 X 0.01 lots = $6.70
If you *are* doing AUDNZD (for example) and want to know margin in dollars, then you have to figure it in NZD (us AUD) and convert to USD at the current NZDUSD (or AUDUSD) rate.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
I am working an a indicator that gives me certain information about the currencies I trade.
One part of this is the amount of Margin Used to open a trade.
Market Info(NULL,MODE_MARGIN REQUIRED) works just fine as long as the "quote" part of the symbol is USD but it does nothing if USD is the "base" part of the symbol.
Anyone know how to calculate the amount of Margin needed to open a trade if the base is USD?