MarketInfo(Symbol, MODE_TICKVALUE) дает стоимость одного пункта изменения цены (MarketInfo(Symbol,MODE_TICKSIZE) - как правило равный Point он же MarketInfo(Symbol,MODE_POINT) в валюте депозита
MarketInfo() можно использовать, когда надо "посмотреть" на параметры другого символа
MarketInfo(Symbol, MODE_TICKVALUE) дает стоимость одного пункта изменения цены (MarketInfo(Symbol,MODE_TICKSIZE) - как правило равный Point он же MarketInfo(Symbol,MODE_POINT) в валюте депозита
MarketInfo() можно использовать, когда надо "посмотреть" на параметры другого символа
Мне интересна формула расчета, а не значение курса пересчета (его то как раз легко выяснить). Ну например, валюта депозита USD, пара AUDCAD, покупаю 1 лот по 1.01988, продаю по 1.02988. Прибыль составила 1000CAD. По какому курсу OrderProfit() пересчитывает 1000CAD в доллары?
Надо поделить на Bid или на Ask текущей котировки USDCAD? А если по ордеру не прибыль, а убыток?
Вопрос именно про это)
Для BUY: ProfitPoints = (OrderClosePrice() - OrderOpenPrice())/Point; // сколько пунктов заработали или потеряли.
Для SELL: (ProfitPoints = OrderOpenPrice() - OpenClosePrice())/Point;
N = ProfitPoints / OrderProfit();
// N = сколько пунктов в 1 единице прибыли/убытка в базовой валюте ордера (т.е. метры
поделили на деньги, получили сколько за 1 ед. валюты можно купить
метров)
ProfitBablo = ProfitPoints * N * MarketInfo(Symbol, MODE_TICKVALUE); // PofitBablo = N пунктов, умноженное на стоимость пункта в валюте депозита (т.е. пересчитали метры в валюту депозита)
Т.е. TICKVALUE - это коэффициент пересчета одного пункта символа из базовой валюты ордера в валюту депозита.
Купили 100м кабеля за 137USD (прошли 100пунктов и заработали $137. Значит $1 = 0.7299 пунктов).
TICKVALUE 1.37 (1e = $1.37USD)
Значит, для покупки 100м кабеля нужно 100 евро (100пт*0.7299*1.37=100е)
для BUY: ProfitPoints = OrderClosePrice() - OrderOpenPrice(); // сколько пунктов заработали или потеряли
для SELL: ProfitPoints = OrderOpenPrice() - OpenClosePrice();
N = ProfitPoints / OrderProfit();
// N = сколько пунктов в 1 единице прибыли/убытка в базовой валюте ордера (т.е. метры
поделили на деньги, получили сколько за 1 ед. валюты можно купить
метров)
ProfitBablo = ProfitPoints * N * MarketInfo(Symbol, MODE_TICKVALUE); // PofitBablo = N пунктов, умноженное на стоимость пункта в валюте депозита (т.е. пересчитали метры в валюту депозита)
Т.е. TICKVALUE - это коэффициент пересчета одного пункта символа из базовой валюты ордера в валюту депозита.
Купили 100м кабеля за 137USD (прошли 100пунктов и заработали $137).
TICKVALUE 1.37 (EUR/USD)
Значит, для покупки 100м кабеля нужно 100 евро
Вопрос не про это) Вопрос про то, каким образом OrderProfit(), MarketInfo() и прочие встроенные функции выбирают курс пересчета в валюту депозита, а не его текущее значение.
Ну вот в вашем примере, полученное вами значение 1.37 окажется равным текущему Биду или текущему Аску котировки EURUSD?
Да хрен его знает Bid или Ask будет браться ))
А если валюта депозита - рубли, то там вообще цепочка получается.
И на каждом этапе пересчета могут браться Ask и Bid.
Для пары AUDCAD CAD пересчитается в USD, потом USD пересчитаются в RUR.
И есть подозрение, что курс USD не будет одинаковым.
Есть простор для ваших экспериментов ))
На форуме была целая ветка по этому поводу (ищите по "TICKVALUE").
PS: в формуле забыл ProfitPoints (можно ProfitBablo) разделить на Point (для пересчета дельты цены в пункты, т.к. TICKVALUE - это цена за пункт).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уважаемые разработчики!
Скажите, пожалуйста, какие курсы используются в МQL4 функции OrderProfit() для пересчета в валюту депозита (Биды или Аски?)
в следующих случаях:
1) Валюта депозита не входит в валютную пару, по которой выставлен ордер
2) Валюта депозита совпадает с первой валютой пары, по которой выставлен ордер
3) Нет прямой котировки для пересчета валюты котировки пары, по которой выставлен ордер, в валюту депозита и надо использовать обратные значения
Заранее спасибо.