MODE_MINLOT и MODE_LOTSTEP - страница 3

 
Meat:

Я уже говорил об этом, но повторюсь....

...Я обратился на форум именно из-за того, что не нашёл такого инструмента.-


Вы так и не проверили что-ли инфу по моему предыдущему посту?

Если нет, то разрешите откланятся... :-)))

 
Предупреждение всем (почти) участникам - некорректные посты будут удаляться. Спор не повод к взаимным оскорблениям.
 
Roman.:


Есть по делу. Тема где-то уже поднималась на форуме, но в ракурсе: что будет, если при мин. лоте ДЦ 0,1 лот и мин шаге 0,01 лот открыть позу в бай объемом 0,1 лот и посредством последующего селла 0,15 лот через см. ниже и получаете (возможно) инфу об ошибке ( GetLastError(). ) - пробейте номер этой ошибки и поделитесь здесь с обшественностью.

Кроме этого пробуйте различные варианты поиска по данному вопросу и не забудьте поделиться результатами.

Роман, вы говорите совсем не о той ситуации. У вас ведь мин.лот КРАТЕН мин.шагу. А я говорил о ситуации, когда кратности нет. Поэтому толку от ваших баев-селлов не будет.

Поиски по данному вопросу я проводил, но безрезультатно. Видимо многие просто пока не задумывались над этим вопросом. Или просто, как товарищ ir0407, упёрлись рогом, думая что их вариант единственно верный.

Я вот например встречал у разных людей разные варианты нормализации лота. Суть их сводилась в конечном счёте к таким алгоритмам:

1 вариант
lot=MathRound(lot/lotstep)*lotstep;
lot=MathMax(lot,minlot); 

2 вариант
lot=MathRound((lot-minlot)/lotstep)*lotstep+minlot;
lot=MathMax(lot,minlot); 

Как видно, они отличаются. Просто если lotstep кратен minlot, то они дают одинаковые результаты. Но ведь какой-то из этих вариантов ошибочен, в том смысле что не соответствует алгоритму лотов, заложенному в МТ4. Вот я и пытаюсь это выснить.

 
Meat:

Роман, вы говорите совсем не о той ситуации...

В этом случае, извините, не парьтесь, свои 10,100,1000,10000,1000000 бакинских и более и без этого сумеете просадить... :-)))

П.С. Не парьтесь попусту...:-))) Уверен.

 

Итак, вопрос с лотами я выяснил, путём правки файла .fxt и наблюдения за результатами. Лот ВСЕГДА должен быть кратен значению MODE_LOTSTEP, вне зависимости от значения MODE_MINLOT. Т.е. правильная формула такая:

lot = MathRound(lot/lotstep)*lotstep

а вовсе не такая:

lot = minlot + MathRound((lot-minlot)/lotstep)*lotstep
хотя многие в этой ветке упорно настаивали именно на втором варианте
 
Meat:

Итак, вопрос с лотами я выяснил, путём правки файла .fxt и наблюдения за результатами. Лот ВСЕГДА должен быть кратен значению MODE_LOTSTEP, вне зависимости от значения MODE_MINLOT. Т.е. правильная формула такая:

а вовсе не такая:

хотя многие в этой ветке упорно настаивали именно на втором варианте
то есть поставил MODE_LOTSTEP = 0.01 и MODE_MINLOT = 1 можно открыться лотом 0.05? Зачем тогда MODE_MINLOT нужен тогда?
 
ilunga:
то есть поставил MODE_LOTSTEP = 0.01 и MODE_MINLOT = 1 можно открыться лотом 0.05? Зачем тогда MODE_MINLOT нужен тогда?

Нет, речь же шла только о кратности лотов. Проверку на соблюдения условия lot>=minlot никто не отменял.

Другими словами, MODE_MINLOT - это просто ограничение, а не точка отсчёта.

Причина обращения: