Есть три категории символов. Возьмем из вашего примера (USD***, ***USD, и кросс, т.е. например GBPCHF).
GBPCHF | 2014.01.21 17:47:14 | sell | 0.0100 | 1.50096 | 1.47458 | - 0.15 | 29.48 | 2638 | |||||
GBPUSD | 2014.01.21 17:44:47 | buy | 0.0100 | 1.64617 | 1.64767 | 0.05 | 1.50 | 150 | |||||
USDCHF | 2014.01.21 17:43:14 | sell | 0.0100 | 0.91215 | 0.89498 | - 0.05 | 19.18 | 1717 |
1) для GBPUSD Lots*Pips = Profit ($) пример, 150*0.01=1.5
2) для USDCHF Lots*Pips*(1/MarketPrice of USDCHF) = Profit ($) пример, 1717*(1/0.89498)=19.18
3) для кросса GBPCHF (и других в формате ***CHF) Lots*Pips* (1/MarketPrice of USDCHF) = Profit ($) пример, 2638*(1/0.89498)=29.48 (Выделил красным чтобы заметили и не перепутали :).) Та же логика и для кроссов других валют.
Спасибо, а почему тогда для XAGUSD, AUDJPY, EURJPY неполучяется?
XAGUSD, AUDJPY, EURJPY имеет три знака после запятой, все остальные пары пять знаков.
Symbol | Time | Type | Volume | Price | S / L | T / P | Market Price | Swap | Profit | Comment | Pips | ||
AUDJPY | 2014.01.21 17:43:05 | sell | 0.0100 | 91.819 | 88.924 | - 0.47 | 28.29 | 2895 | |||||
EURJPY | 2014.01.21 17:44:52 | buy | 0.0100 | 141.180 | 139.904 | 0.00 | - 12.48 | 1276 | |||||
XAGUSD | 2014.01.21 17:42:59 | sell | 0.0100 | 19.855 | 19.951 | 0.00 | - 4.80 | 96 |
1 вариант для XAGUSD***USD) Lots*Pips = Profit ($) 0.0100*96 = 0.96 а на реале получается 4.80
3 вариант для кросса AUDJPY (и других в формате ***JPY) Lots*Pips* (1/MarketPrice of USDJPY) = Profit ($) пример, 0.0100*2895*(1/102.793)=0.2816 а на реале получается 28.29 разница в два знака
3 вариант для кросса EURJPY (и других в формате ***JPY) Lots*Pips* (1/MarketPrice of USDJPY) = Profit ($) пример, 0.0100*1276*(1/102.793)=0.1241 а на реале получается 12.48 разница в два знака
Небольшой скрипт для вычисления профита:
{
double Lot=0.01;
double prise=Lot*PipToUSD("AUDJPY")*(91.819-88.924);
print("prise="+prise);
double prise=Lot*PipToUSD("EURJPY")*(141.180-139.904);
print("prise="+prise);
double prise=Lot*PipToUSD("XAGUSD")*(19.855-19.951);
print("prise="+prise);
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+double PipToUSD(string P){
double InfoPoint=MarketInfo(P,MODE_POINT);
if(InfoPoint==0)return(0);
return(RateToUSD(P)/InfoPoint);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
double RateToUSD(string P){
double InfoAsk=MarketInfo(P,MODE_ASK);
if(InfoAsk==0)return(0);
// if USD Start
string IfUSD=StringSubstr(P,0,3);
if(IfUSD=="USD")return(1/InfoAsk);
IfUSD=StringSubstr(P,3,3);
if(IfUSD=="USD")return(1);
// if USD Start
IfUSD=IfUSD+"USD";
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(InfoAsk);
IfUSD=StringSubstr(P,3,3);
IfUSD="USD"+IfUSD;
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(1/InfoAsk);
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
Я считаю стоимость пункта так:
Все валютые пары можно условно разделить на три категории - пары с прямой котировкой (EURUSD, GBPUSD), пары с обратной котировкой (USDJPY, USDCHF) и кросс-курсы (GBPCHF, EURJPY и т.п.).
Для валютных пар с прямой котировкой стоимость пункта, выраженная в долларах, расчитывается по формуле
[pip] = [lot size] × [tick size]
где [lot size] - размер лота; [tick size] - размер тика, например для EURUSD он составляет 0.0001. Для валют с прямой котировкой стоимость пункта постоянна и не зависит от текущей котировки.
Пример.
Для EURUSD размер лота 100000, tick - 0.0001. [pip] = 100000 * 0.0001 = $10.00
Для валютных пар с обратной котировкой:
[pip] = [lot size] × [tick size] / [current quote]
где [current quote] - текущая котировка. Для валютных пар с обратной котировкой стоимость пункта меняется в зависимости от текущей котировки.
Пример.
Для USDJPY размер лота 100000, tick - 0.01. При котировке 129.20, [pip] = 100000 * 0.01 / 129.20 = $7.74
Для кросс-курсов:
[pip] = [lot size] × [tick size] × [base quote] / [current quote]
где [base quote] - текущая котировка базовой (первой) валюты к доллару США.
Пример.
для GBPCHF размер лота составляет 100 тыс. фунтов, базовая валюта GBPUSD; при котировке 2.3000 и базовой котировке 1.4550 стоимость пункта составит 100000 * 0.0001 * 1.4550 / 2.3000 = $6.33.
---------------------------
При расчёте профита просто вставьте в приведённые формулы вместо [tick size] разницу между ценами закрытия и открытия позиции (не в пунктах, а абсолютное значение)
Спасибо ваша формула работает со всеми парами за исключением XAGUSD
Symbol | Volume | Pips | Profit |
XAGUSD | 0.01 | 96 | -4.8 |
XAGUSD | 0.01 | 327 | 16.35 |
По формуле получяется:
[pip] = [lot size] × [tick size]
100000 * 0.01 * 0.001 = 1
327p * 1 = 327$ а на реалле получяется 16.35$
96p * 1 = 96$ а на реалле получяется -4.8$
Спасибо ваша формула работает со всеми парами за исключением XAGUSD
Symbol | Volume | Pips | Profit |
XAGUSD | 0.01 | 96 | -4.8 |
XAGUSD | 0.01 | 327 | 16.35 |
По формуле получяется:
[pip] = [lot size] × [tick size]
100000 * 0.01 * 0.001 = 1
327p * 1 = 327$ а на реалле получяется 16.35$
96p * 1 = 96$ а на реалле получяется -4.8$
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
по какой формуле расчитывать профит из пипсов
к примеру USDCHF 1717 пипсов зделал превращяем в 19.18 USD
к примеру EURAUD 3746 пипсов зделал превращяем в 32.51 USD
подскажите если кто знаетпрекрепляю файл ReportTrade.xlsx
http://s000.tinyupload.com/index.php?file_id=21929661703069653933