Скачать MetaTrader 5

Стоимость одного лота

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что в MQL5 появились классы?
TraSer
45
TraSer 2016.08.31 16:17 

Здравствуйте!

Столкнулся со следующей проблемой. Нигде в интернете не смог найти решение.

Как программно рассчитать стоимость минимального контракта или одного лота в базовой валюте?

Заранее спасибо!

Alexey Volchanskiy
16672
Alexey Volchanskiy 2016.08.31 16:41  
TraSer:

Здравствуйте!

Столкнулся со следующей проблемой. Нигде в интернете не смог найти решение.

Как программно рассчитать стоимость минимального контракта или одного лота в базовой валюте?

Заранее спасибо!

Какой терминал-то?
Maxim Kuznetsov
9768
Maxim Kuznetsov 2016.08.31 17:12  
TraSer:

Здравствуйте!

Столкнулся со следующей проблемой. Нигде в интернете не смог найти решение.

Как программно рассчитать стоимость минимального контракта или одного лота в базовой валюте?

Заранее спасибо!

изучай внимательнейшим образом все торговые условия и API для них..

расчитывай от MarketInfo(_Symbol,MODE_TICKVALUE) говорит справка MT4.

Aleksey Lebedev
6057
Aleksey Lebedev 2016.08.31 18:00  

TraSer:

Никак не расчитать. Стоимость лота в базовой валюте устанавливает брокер, на forex обычно 100000.
Ihor Herasko
9041
Ihor Herasko 2016.08.31 19:06  
Aleksey Lebedev:
Никак не расчитать. Стоимость лота в базовой валюте устанавливает брокер, на forex обычно 100000.
100 000 - это размер контракта, а не стоимость лота. Хотя, вполне возможно, что ТС именно об этом и говорил, просто подвела терминология. Потому как можно лишь догадываться, что такое "стоимость лота". Я бы понял так, как поняли выше - стоимость одного минимального изменения цены для одного лота в базовой валюте.
Aleksey Lebedev
6057
Aleksey Lebedev 2016.08.31 19:55  
Ihor Herasko:

Например EURUSD, размер контракта 100 000 EUR, и таки "стоимость лота в базовой валюте" - 100 000 EUR.

Тоже есть подозрение, что ТС хочет расчитать, нечто иное :) Вряд ли стоимость тика

Alexey Volchanskiy
16672
Alexey Volchanskiy 2016.08.31 20:49  
Aleksey Lebedev:

Например EURUSD, размер контракта 100 000 EUR, и таки "стоимость лота в базовой валюте" - 100 000 EUR.

Тоже есть подозрение, что ТС хочет расчитать, нечто иное :) Вряд ли стоимость тика

Думаю, имелась в виду "базовая" валюта депо. Слово "базовая" лишнее. А иначе действительно бессмыслица.
Alexey Volchanskiy
16672
Alexey Volchanskiy 2016.08.31 21:28  
Alexey Volchanskiy:
Думаю, имелась в виду "базовая" валюта депо. Слово "базовая" лишнее. А иначе действительно бессмыслица.

Кстати, а вот реальная полезная функция, которую я написал, когда задолбало высчитывать СЛ, ТП и прочее для разных валютных пар в роботах.

К примеру, имеем валюту депо USD. Тогда для пары EURUSD на 5-знаке 1 пойнт будет равен $1. И для GBPUSD тоже $1. Кстати, многие не могут это понять и до хрипоты спорят, что фунт дороже евро и цена пойнта будет разная. ))

 

Как использовать. Например, работаем с EURUSD на 5-знаке. Вместо 50 пойнтов тейкпрофита задаем 50 долларов на 1 лот. Функция выдаст 0.00050. Работает и для кроссов, вообще для всех валютных пар.

Я ее сделал для мультивалютного трейлинга, задал значения и для каждой пары на чарте пересчитывает в реальные значения. 

    /*
    Функция рассчитывает значение котировки в валюте заданного инструмента symbol
    double &diff - рассчитанная величина в валюте инструмента, например 0.00050
    double price4lot - сумма в валюте депозита на 1 лот, например 50 долларов USA
    string symbol="EURUSD" - название инструмента
    */
    static bool Price2Quote(double &diff, double price4lot, string symbol = "EURUSD")
    {
        int dig = (int)MarketInfo(symbol, MODE_DIGITS);
        if (dig == 0)
            return(false); // символ отсутствует
        double tickSize = MarketInfo(symbol, MODE_TICKSIZE);   // пункт в валюте котировки (0,00001 для EURUSD на 5-знаке) 
        double tickValue = MarketInfo(symbol, MODE_TICKVALUE); // пункт в валюте депозита ($1 для EURUSD на 5-знаке)
        diff = price4lot*tickSize / tickValue;
        diff = NormalizeDouble(diff, dig);
        return (true);
    }
Ihor Herasko
9041
Ihor Herasko 2016.09.01 09:33  
Alexey Volchanskiy:

Кстати, а вот реальная полезная функция, которую я написал, когда задолбало высчитывать СЛ, ТП и прочее для разных валютных пар в роботах.

К примеру, имеем валюту депо USD. Тогда для пары EURUSD на 5-знаке 1 пойнт будет равен $1. И для GBPUSD тоже $1. Кстати, многие не могут это понять и до хрипоты спорят, что фунт дороже евро и цена пойнта будет разная. ))

 

Как использовать. Например, работаем с EURUSD на 5-знаке. Вместо 50 пойнтов тейкпрофита задаем 50 долларов на 1 лот. Функция выдаст 0.00050. Работает и для кроссов, вообще для всех валютных пар.

Я ее сделал для мультивалютного трейлинга, задал значения и для каждой пары на чарте пересчитывает в реальные значения. 

Только некоторые уточнения. Если функция MarketInfo() вернула 0, то это вовсе не означает отсутствие символа. Может быть банальное отсутствие данных в терминале. Поэтому лучше проверять на наличие ошибок: ERR_UNKNOWN_SYMBOL, ERR_INVALID_FUNCTION_PARAMVALUE и ERR_INTERNAL_ERROR. Также можно уйти от MarketInfo на SymbolInfoDouble, сделав функцию платформонезависимой.

Ну и напоследок - классика жанра )) Иногда будет вылетать по делению на ноль: значение tickValue не проверено. 

Alexey Volchanskiy
16672
Alexey Volchanskiy 2016.09.01 13:11  
Ihor Herasko:

Только некоторые уточнения. Если функция MarketInfo() вернула 0, то это вовсе не означает отсутствие символа. Может быть банальное отсутствие данных в терминале. Поэтому лучше проверять на наличие ошибок: ERR_UNKNOWN_SYMBOL, ERR_INVALID_FUNCTION_PARAMVALUE и ERR_INTERNAL_ERROR. Также можно уйти от MarketInfo на SymbolInfoDouble, сделав функцию платформонезависимой.

Ну и напоследок - классика жанра )) Иногда будет вылетать по делению на ноль: значение tickValue не проверено. 

О, спасибо за комменты, надо исправить!
Maxim Dmitrievsky
13805
Maxim Dmitrievsky 2016.09.01 21:53  
TraSer:

Здравствуйте!

Столкнулся со следующей проблемой. Нигде в интернете не смог найти решение.

Как программно рассчитать стоимость минимального контракта или одного лота в базовой валюте?

Заранее спасибо!

10 000/плечо*текущий курс валютной пары. Только это называется не стоимость контракта а размер залога, т.к. вы торгуете с плечами. Для commodities расчет маленько другой.

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий