//+------------------------------------------------------------------+ //| MarginCalculate.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ //| Î÷åíü ïðîñòàÿ ôóíêöèÿ ðàñ÷åòà ìàðæè äëÿ ôîðåêñíûõ ñèìâîëîâ. | //| Ðàñ÷åò àâòîìàòè÷åñêè èäåò â áàçîâîé âàëþòå ñ÷åòà è íå ðàáîòàåò | //| äëÿ ñëîæíûõ âèäîâ êóðñîâ, êîòîðûå íå èìåþò ïðÿìîãî ïåðåñ÷åòà | //| â áàçîâóþ âàëþòó òîðãîâîãî ñ÷åòà. | //+------------------------------------------------------------------+ double MarginCalculate(string symbol,double volume) { string first =StringSubstr(symbol,0,3); // ïåðâûé ñèìâîë, íàïðèìåð EUR string second =StringSubstr(symbol,3,3); // âòîðîé ñèìâîë, íàïðèìåð USD string currency=AccountCurrency(); // âàëþòà äåïîçèòà, íàïðèìåð USD double leverage=AccountLeverage(); // êðåäèòíîå ïëå÷î, íàïðèìåð 100 double contract=MarketInfo(symbol,MODE_LOTSIZE); // ðàçìåð êîíòðàêòà, íàïðèìåð 100000 double bid =MarketInfo(symbol,MODE_BID); // öåíà áèä //---- äîïóñêàåì òîëüêî ñòàíäàðòíûå ôîðåêñíûå ñèìâîëû XXXYYY if(StringLen(symbol)!=6) { Print("MarginCalculate: '",symbol,"' must be standard forex symbol XXXYYY"); return(0.0); } //---- ïðîâåðêà íàëè÷èÿ äàííûõ if(bid<=0 || contract<=0) { Print("MarginCalculate: no market information for '",symbol,"'"); return(0.0); } //---- ïðîâåðÿåì ñàìûå ïðîñòûå âàðèàíòû - áåç êðîññîâ if(first==currency) return(contract*volume/leverage); // USDxxx if(second==currency) return(contract*bid*volume/leverage); // xxxUSD //---- ïðîâåðÿåì îáû÷íûå êðîññû, èùåì ïðÿìîå ïðåîáðàçîâàíèå ÷åðåç âàëþòó äåïîçèòà string base=currency+first; // USDxxx if(MarketInfo(base,MODE_BID)>0) return(contract/MarketInfo(base,MODE_BID)*volume/leverage); //---- ïîïðîáóåì íàîáîðîò base=first+currency; // xxxUSD if(MarketInfo(base,MODE_BID)>0) return(contract*MarketInfo(base,MODE_BID)*volume/leverage); //---- íåò âîçìîæíîñòè ïðÿìîãî ïåðåðàñ÷åòà Print("MarginCalculate: can not convert '",symbol,"'"); return(0.0); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- Print("Margin EURUSD: ",MarginCalculate("EURUSD",1.0)); Print("Margin USDCHF: ",MarginCalculate("USDCHF",1.0)); Print("Margin GBPCHF: ",MarginCalculate("GBPCHF",1.0)); Print("Margin CHFJPY: ",MarginCalculate("CHFJPY",1.0)); //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: