Пусть, SL и TP - стоп-приказы в пунктах, Loss - потери в валюте депозита, Profit - прибыль в валюте депозита, Lot - объем позиции.
Задача 1. Известны Lot и SL. Loss=Lot*SL*pv, Profit=Lot*TP*pv
Задача 2. Известны SL и Loss. Lot=Loss/(SL*pv), Profit=Loss*TP/SL
К сожалению, я тоже сначала пошел по этому пути, но эти простые формулы - не универсальны. Они работают не для всех инструментов, например, для индексов в национальной валюте. Например, индекс DAX — основной индекс немецкого фондового рынка, который отслеживает динамику акций 40 крупнейших компаний Германии на основе рыночной капитализации на Франкфуртской фондовой бирже, рассчитывается в евро. Поэтому после того, как будет найдено значение Loss, надо это значение еще умножить на курс национальной валюты EURUSD, чтобы получить Loss в валюте депозита. Тоже самое и для FTSE, найденное значение Loss надо умножить на курс GBPUSD и т.д. Кроме того, есть еще своя специфика расчета Loss для криптовалюты.
Так что для предварительной оценки результата торговой операции достаточно функции OrderCalcProfit(), которая вычислит размер прибыли/убытка с учетом специфики рыночного окружения.
К сожалению, я тоже сначала пошел по этому пути, но эти простые формулы - не универсальны. Они работают не для всех инструментов, например, для индексов в национальной валюте. Например, индекс DAX — основной индекс немецкого фондового рынка, который отслеживает динамику акций 40 крупнейших компаний Германии на основе рыночной капитализации на Франкфуртской фондовой бирже, рассчитывается в евро. Поэтому после того, как будет найдено значение Loss, надо это значение еще умножить на курс национальной валюты EURUSD, чтобы получить Loss в валюте депозита. Тоже самое и для FTSE, найденное значение Loss надо умножить на курс GBPUSD и т.д. Кроме того, есть еще своя специфика расчета Loss для криптовалюты.
Так что для предварительной оценки результата торговой операции достаточно функции OrderCalcProfit(), которая вычислит размер прибыли/убытка с учетом специфики рыночного окружения.
написать простейший скрипт и проверить, большого труда не составит...
На картинках видно, что DAX. А франк - просто сменил валюту счета. Оказалось, что расчет стоимости пункта в валюте депозита верен.
Поясни, пожалуйста, есть индекс DAX, который рассчитывается в EUR (валюта котировки), вот его примерная цена закрытия 21,200 EUR.
Размер пункта в валюте котировки point=0.01 EUR. На картинках ты показываешь стоимость одного пункта в разных валютах депозита USD и CHF.
Получается, что 1 евроцент равен 0.01 USD и 0,01 CHF одновременно? Но такого не может быть, значит все-таки упрощенный расчет стоимости пункта в валюте депозита, который ты предлагаешь, неполный. Поскольку валюта котировки EUR не совпадает с валютой депозита USD, то полученный результат необходимо еще умножить курс EURUSD...
Eugene Myzrov #: Поясни, пожалуйста, есть индекс DAX, который рассчитывается в EUR (валюта котировки), вот его примерная цена закрытия 21,200 EUR.
Размер пункта в валюте котировки point=0.01 EUR. На картинках ты показываешь стоимость одного пункта в разных валютах депозита USD и CHF.
Получается, что 1 евроцент равен 0.01 USD и 0,01 CHF одновременно? Но такого не может быть, значит все-таки упрощенный расчет стоимости пункта в валюте депозита, который ты предлагаешь, неполный. Поскольку валюта котировки EUR не совпадает с валютой депозита USD, то полученный результат необходимо еще умножить курс EURUSD...
Конечно же нет. Стоимость 1-го пункта в валюте депозита означает, что мы получим такую-то прибыль/убыток, если значение цены изменится на 1 пункт (точка). Все торговые операции сводятся к обмену одной валюты на другую. Но, валюты DAX, нету в природе. По крайней мере в ISO 4217, она не зарегистрирована. Если счет открыт в eur, то и прибыль/убыток будут в eur. Если счет в тугриках, то в них и будут расчеты.
Еще раз, DAX - это просто индекс, когда чего-то там сложили на что-то поделили и вывели на график. Мы просто делаем ставку - будет расти этот индекс или нет. Если мы угадали - премия, нет - убыток. Аналог - приходим мы на ипподром и делаем ставку на лошадь в фунтах, а лошадь зовут EUR. Если она победит, то выигрыш нам выплатят в eur или gbp? В какой валюте мы ставили, в той нам и выплатят, а имя лошади тут вообще никаким боком.
Попробуйте написать простейший советник. Алгоритм - каждый 10-ый бар открывается новая позиция. Как только позиция пройдет 20 пунктов, она закрывается. При расчете объема позиции сначала используйте свой очень мудрый метод. А потом, наивный мой. Сравните результаты.
Попробуйте написать простейший советник. Алгоритм - каждый 10-ый бар открывается новая позиция. Как только позиция пройдет 20 пунктов, она закрывается. При расчете объема позиции сначала используйте свой очень мудрый метод. А потом, наивный мой. Сравните результаты.
Ну что же, делать нечего, написал простейший скрипт.
//+------------------------------------------------------------------+//| Script program start function//+------------------------------------------------------------------+voidOnStart()
{
ENUM_ORDER_TYPE order_type=ORDER_TYPE_BUY;
double profit=0;
double nPointSize=SymbolInfoDouble(_Symbol, SYMBOL_POINT); // стоимость одного пункта цены в валюте котировкиdouble nTickSize =SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // стоимость одного тика цены в валюте котировкиdouble nTickValue=SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);//
double volume = 1.0;
double open_price =20980.09;
double close_price=20978.09;
double delta = 200; // кол-во пунктов
// Метод №1double pv=nTickValue*nPointSize/nTickSize;
Print("Метод №1 (наивный): P/L=", volume * delta * pv);
// Метод №2ResetLastError();
double profit=0;
if (!OrderCalcProfit(order_type, _Symbol, volume, open_price, close_price, profit)) {
Print("OrderCalcProfit() failed. Error ", GetLastError()); return;
}
Print("Метод №2 (мудрый): P/L=", profit);
return;
}
А вот результат прогона скрипта на DE40 (брокер Tickmill), размер лота volume=1.0
2025.04.19 19:01:13.104 -- OrderCalProfit2 (DE40,M10) Метод №1 (наивный): P/L=2.0 2025.04.19 19:01:13.104 -- OrderCalProfit2 (DE40,M10) Метод №2 (мудрый) : P/L=2.28
Здесь очевидно причина расхождения в том, что в твоей формуле не учитывается курс EURUSD...
Ну, все-таки надо запустить советник для сравнения.
Еще раз - валюта котировки, валюта прибыли и валюта депозита - это три разных валюты. А вот цена 1-го пункта в валюте депозита - всегда константа. Трейдеру удобнее считать убытки/прибыли в той валюте, в которой он открыл свой счет. Попробуйте сделать элементарный советник 9не важно прибыль/убыток от него будет) и тогда сможете сравнить разницу.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Сначала нужно найти стоимость 1-го пункта в валюте депозита
Пусть, SL и TP - стоп-приказы в пунктах, Loss - потери в валюте депозита, Profit - прибыль в валюте депозита, Lot - объем позиции.
Задача 1. Известны Lot и SL. Loss=Lot*SL*pv, Profit=Lot*TP*pv
Задача 2. Известны SL и Loss. Lot=Loss/(SL*pv), Profit=Loss*TP/SL
Сначала нужно найти стоимость 1-го пункта в валюте депозита
Пусть, SL и TP - стоп-приказы в пунктах, Loss - потери в валюте депозита, Profit - прибыль в валюте депозита, Lot - объем позиции.
Задача 1. Известны Lot и SL. Loss=Lot*SL*pv, Profit=Lot*TP*pv
Задача 2. Известны SL и Loss. Lot=Loss/(SL*pv), Profit=Loss*TP/SL
К сожалению, я тоже сначала пошел по этому пути, но эти простые формулы - не универсальны. Они работают не для всех инструментов, например, для индексов в национальной валюте.
Например, индекс DAX — основной индекс немецкого фондового рынка, который отслеживает динамику акций 40 крупнейших компаний Германии на основе рыночной капитализации на Франкфуртской фондовой бирже, рассчитывается в евро. Поэтому после того, как будет найдено значение Loss, надо это значение еще умножить на курс национальной валюты EURUSD, чтобы получить Loss в валюте депозита. Тоже самое и для FTSE, найденное значение Loss надо умножить на курс GBPUSD и т.д. Кроме того, есть еще своя специфика расчета Loss для криптовалюты.
Так что для предварительной оценки результата торговой операции достаточно функции OrderCalcProfit(), которая вычислит размер прибыли/убытка с учетом специфики рыночного окружения.
К сожалению, я тоже сначала пошел по этому пути, но эти простые формулы - не универсальны. Они работают не для всех инструментов, например, для индексов в национальной валюте.
Например, индекс DAX — основной индекс немецкого фондового рынка, который отслеживает динамику акций 40 крупнейших компаний Германии на основе рыночной капитализации на Франкфуртской фондовой бирже, рассчитывается в евро. Поэтому после того, как будет найдено значение Loss, надо это значение еще умножить на курс национальной валюты EURUSD, чтобы получить Loss в валюте депозита. Тоже самое и для FTSE, найденное значение Loss надо умножить на курс GBPUSD и т.д. Кроме того, есть еще своя специфика расчета Loss для криптовалюты.
Так что для предварительной оценки результата торговой операции достаточно функции OrderCalcProfit(), которая вычислит размер прибыли/убытка с учетом специфики рыночного окружения.
написать простейший скрипт и проверить, большого труда не составит...
написать простейший скрипт и проверить, большого труда не составит...
Написать простейший скрипт - труда не составит, только не понятно, что надо проверить?
Какой индекс? И что делает швейцарский франк на картинке?
Написать простейший скрипт - труда не составит, только не понятно, что надо проверить?
Какой индекс? И что делает швейцарский франк на картинке?
На картинках видно, что DAX. А франк - просто сменил валюту счета. Оказалось, что расчет стоимости пункта в валюте депозита верен.
На картинках видно, что DAX. А франк - просто сменил валюту счета. Оказалось, что расчет стоимости пункта в валюте депозита верен.
Размер пункта в валюте котировки point=0.01 EUR. На картинках ты показываешь стоимость одного пункта в разных валютах депозита USD и CHF.

Получается, что 1 евроцент равен 0.01 USD и 0,01 CHF одновременно? Но такого не может быть, значит все-таки упрощенный расчет стоимости пункта в валюте депозита, который ты предлагаешь, неполный.
Поскольку валюта котировки EUR не совпадает с валютой депозита USD, то полученный результат необходимо еще умножить курс EURUSD...
Поясни, пожалуйста, есть индекс DAX, который рассчитывается в EUR (валюта котировки), вот его примерная цена закрытия 21,200 EUR.
Размер пункта в валюте котировки point=0.01 EUR. На картинках ты показываешь стоимость одного пункта в разных валютах депозита USD и CHF.
Получается, что 1 евроцент равен 0.01 USD и 0,01 CHF одновременно? Но такого не может быть, значит все-таки упрощенный расчет стоимости пункта в валюте депозита, который ты предлагаешь, неполный.
Поскольку валюта котировки EUR не совпадает с валютой депозита USD, то полученный результат необходимо еще умножить курс EURUSD...
Конечно же нет. Стоимость 1-го пункта в валюте депозита означает, что мы получим такую-то прибыль/убыток, если значение цены изменится на 1 пункт (точка). Все торговые операции сводятся к обмену одной валюты на другую. Но, валюты DAX, нету в природе. По крайней мере в ISO 4217, она не зарегистрирована. Если счет открыт в eur, то и прибыль/убыток будут в eur. Если счет в тугриках, то в них и будут расчеты.
Еще раз, DAX - это просто индекс, когда чего-то там сложили на что-то поделили и вывели на график. Мы просто делаем ставку - будет расти этот индекс или нет. Если мы угадали - премия, нет - убыток. Аналог - приходим мы на ипподром и делаем ставку на лошадь в фунтах, а лошадь зовут EUR. Если она победит, то выигрыш нам выплатят в eur или gbp? В какой валюте мы ставили, в той нам и выплатят, а имя лошади тут вообще никаким боком.
Попробуйте написать простейший советник. Алгоритм - каждый 10-ый бар открывается новая позиция. Как только позиция пройдет 20 пунктов, она закрывается. При расчете объема позиции сначала используйте свой очень мудрый метод. А потом, наивный мой. Сравните результаты.
Попробуйте написать простейший советник. Алгоритм - каждый 10-ый бар открывается новая позиция. Как только позиция пройдет 20 пунктов, она закрывается. При расчете объема позиции сначала используйте свой очень мудрый метод. А потом, наивный мой. Сравните результаты.
Ну что же, делать нечего, написал простейший скрипт.
А вот результат прогона скрипта на DE40 (брокер Tickmill), размер лота volume=1.0
2025.04.19 19:01:13.104 -- OrderCalProfit2 (DE40,M10) Метод №1 (наивный): P/L=2.0
2025.04.19 19:01:13.104 -- OrderCalProfit2 (DE40,M10) Метод №2 (мудрый) : P/L=2.28
Здесь очевидно причина расхождения в том, что в твоей формуле не учитывается курс EURUSD...
А вот результат прогона скрипта на DE40 (брокер Tickmill), размер лота volume=1.0
2025.04.19 19:01:13.104 -- OrderCalProfit2 (DE40,M10) Метод №1 (наивный): P/L=2.0
2025.04.19 19:01:13.104 -- OrderCalProfit2 (DE40,M10) Метод №2 (мудрый) : P/L=2.28
Здесь очевидно причина расхождения в том, что в твоей формуле не учитывается курс EURUSD...
Ну, все-таки надо запустить советник для сравнения.
Еще раз - валюта котировки, валюта прибыли и валюта депозита - это три разных валюты. А вот цена 1-го пункта в валюте депозита - всегда константа. Трейдеру удобнее считать убытки/прибыли в той валюте, в которой он открыл свой счет. Попробуйте сделать элементарный советник 9не важно прибыль/убыток от него будет) и тогда сможете сравнить разницу.