Та если б не маркет, я бы сильно и не заморачивался :)
Я так понимаю, запас - это на проскальзывание?
Проскальзывание - при исполнении, а здесь - корректность торгового запроса на данный момент состояния рыночного окружения.
Рассчитали - проверили корректность, подкорректировали при необходимости и отправили запрос. Далее проверили результат запроса. Это - на стороне советника.
А исполнение - на стороне сервера, и величина проскальзывания уже требуется серверной части для принятия или отклонения заявки при изменении цены.
Максимально допустимый для данного символа совокупный объем открытой позиции и отложенных ордеров в одном направлении (покупка или продажа). Например, при ограничении в 5 лотов можно иметь открытую позицию на покупку объемом 5 лотов и выставить отложенный ордер Sell Limit объемом 5 лотов. Но при этом нельзя выставить отложенный ордер Buy Limit (поскольку совокупный объем в одном направлении превысит ограничение) или выставить Sell Limit объемом более 5 лотов.
На сколько я понимаю, в вычислении нужно учитывать объем всех позиций и ордеров только в том направлении, в которое собираемся открыть сделку или выставить ордер.
возможно лот нужно нормализовать в данной функции, чтоб не было Инвалида.
ну а дальше функция пишет о том, что собственно нет денег, при этом она не посылает запрос на сервер для открытия позиций.Что удовлетворяет правилам маркета.
с недавних времен года 2 назад стал использовать такую инструкцию:
Собственно все работает.
при открытии сделки - советник просто возвращает строку Print("Not Enought Money Margin Required"+(string)margin);
Советник проходит проверку в маркете, все довольны
Спасибо Владислав!
Ваш вариант работает до сих пор в отличии от моего который ранее работал нормально и от этого, на который нас направляет валидатор:
bool CheckMoneyForTrade(string symb, double lots,int type)
{
double free_margin=AccountFreeMarginCheck(symb,lots,type);
//-- если денег не хватаетif(free_margin<0)
{
string oper=(type==OP_BUY)? "Buy":"Sell";
Print("Not enough money for ", oper," ",lots, " ", symb, " Error code=",GetLastError());
return(false);
}
//-- проверка прошла успешноreturn(true);
}
Максимально допустимый для данного символа совокупный объем открытой позиции и отложенных ордеров в одном направлении (покупка или продажа). Например, при ограничении в 5 лотов можно иметь открытую позицию на покупку объемом 5 лотов и выставить отложенный ордер Sell Limit объемом 5 лотов. Но при этом нельзя выставить отложенный ордер Buy Limit (поскольку совокупный объем в одном направлении превысит ограничение) или выставить Sell Limit объемом более 5 лотов.
На сколько я понимаю, в вычислении нужно учитывать объем всех позиций и ордеров только в том направлении, в которое собираемся открыть сделку или выставить ордер.
Вы правы, в этом примере направление не учитывается. Можно попробовать сделать через учет знака: Buy ордера берем положительно, Sell - отрицательно. Величина и знак на выходе дадут нам объем и направление.
Вы правы, в этом примере направление не учитывается. Можно попробовать сделать через учет знака: Buy ордера берем положительно, Sell - отрицательно. Величина и знак на выходе дадут нам объем и направление.
Но тогда есть шанс пропустить сделку...
Тема про маркет. А значит и ошибок быть не должно. Или должна быть их адекватная обработка.
Та если б не маркет, я бы сильно и не заморачивался :)
Я так понимаю, запас - это на проскальзывание?
Та если б не маркет, я бы сильно и не заморачивался :)
Я так понимаю, запас - это на проскальзывание?
Да, фактически для того, чтобы еще немного уменьшить вероятность нарваться на ошибку при резком движении цен
Та если б не маркет, я бы сильно и не заморачивался :)
Я так понимаю, запас - это на проскальзывание?
Проскальзывание - при исполнении, а здесь - корректность торгового запроса на данный момент состояния рыночного окружения.
Рассчитали - проверили корректность, подкорректировали при необходимости и отправили запрос. Далее проверили результат запроса. Это - на стороне советника.
А исполнение - на стороне сервера, и величина проскальзывания уже требуется серверной части для принятия или отклонения заявки при изменении цены.
Добрый день.
Из документации:
SYMBOL_VOLUME_LIMIT
Максимально допустимый для данного символа совокупный объем открытой позиции и отложенных ордеров в одном направлении (покупка или продажа). Например, при ограничении в 5 лотов можно иметь открытую позицию на покупку объемом 5 лотов и выставить отложенный ордер Sell Limit объемом 5 лотов. Но при этом нельзя выставить отложенный ордер Buy Limit (поскольку совокупный объем в одном направлении превысит ограничение) или выставить Sell Limit объемом более 5 лотов.
На сколько я понимаю, в вычислении нужно учитывать объем всех позиций и ордеров только в том направлении, в которое собираемся открыть сделку или выставить ордер.
Но тут Ограничение на количество лотов по одному символу направление вообще никак не учитывается...
Или я что-то не так понял?
возможно лот нужно нормализовать в данной функции, чтоб не было Инвалида.
ну а дальше функция пишет о том, что собственно нет денег, при этом она не посылает запрос на сервер для открытия позиций.Что удовлетворяет правилам маркета.
с недавних времен года 2 назад стал использовать такую инструкцию:
Собственно все работает.
при открытии сделки - советник просто возвращает строку Print("Not Enought Money Margin Required"+(string)margin);
Советник проходит проверку в маркете, все довольны
Ваш вариант работает до сих пор в отличии от моего который ранее работал нормально и от этого, на который нас направляет валидатор:
Спасибо Владислав!
Ваш вариант работает до сих пор в отличии от моего который ранее работал нормально и от этого, на который нас направляет валидатор:
А где такой код показывается?
PS Нашел в португальской и японской версиях статьи и исправил. Еще есть гдДобрый день.
Из документации:
SYMBOL_VOLUME_LIMIT
Максимально допустимый для данного символа совокупный объем открытой позиции и отложенных ордеров в одном направлении (покупка или продажа). Например, при ограничении в 5 лотов можно иметь открытую позицию на покупку объемом 5 лотов и выставить отложенный ордер Sell Limit объемом 5 лотов. Но при этом нельзя выставить отложенный ордер Buy Limit (поскольку совокупный объем в одном направлении превысит ограничение) или выставить Sell Limit объемом более 5 лотов.
На сколько я понимаю, в вычислении нужно учитывать объем всех позиций и ордеров только в том направлении, в которое собираемся открыть сделку или выставить ордер.
Но тут Ограничение на количество лотов по одному символу направление вообще никак не учитывается...
Или я что-то не так понял?
Вы правы, в этом примере направление не учитывается. Можно попробовать сделать через учет знака: Buy ордера берем положительно, Sell - отрицательно. Величина и знак на выходе дадут нам объем и направление.
Нужно поправить
А где такой код показывается?
PS Нашел в португальской и японской версиях статьи и исправил. Еще есть гдЩас показать уже не смогу, когда отправлял на валидацию, в отчете нажимая на 148 ошибку я попадал на
версия сайта так же оставалассь русскоязычной.Вы правы, в этом примере направление не учитывается. Можно попробовать сделать через учет знака: Buy ордера берем положительно, Sell - отрицательно. Величина и знак на выходе дадут нам объем и направление.
Нужно поправить
Как-то не понятно по поводу знака...
Написал вот такое