Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1063
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
а как включить этот режим?
Галочку надо отметить в окне тестера, слева внизу:
Здравствуйте уважаемые гуру.
Подскажите на правильном ли я пути ?
Цель: ввести изменяемый размер лота в зависимости от удаленности от MA.
Во входных параметрах:
extern double Lot1 = 0.01; // первый вариант лота
extern double Lot2 = 0.03; // второй вариант лота
extern int Distan = 20; // дистанция от SlowМА
В теле эксперта определили Ма:
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Дальше нужно условие: если настоящая цена (Bid или Ask в зависимости от направления) находится до размера Distant, то используем первый размер лота, если больше, то второй.
Первое, что пришло на ум:
if (Ask-SlowMA<Distan) Lot == Lot1;
if (SlowMA-Bid<Distan) Lot == Lot1;
if (Ask-SlowMA>Distan) Lot == Lot2;
if (SlowMA-Bid>Distan) Lot == Lot2;
Но не работает. Ошибка или в связках с Lot, или в общей логике.
Заранее спасибо.
Здравствуйте уважаемые гуру.
Подскажите на правильном ли я пути ?
Цель: ввести изменяемый размер лота в зависимости от удаленности от MA.
Во входных параметрах:
extern double Lot1 = 0.01; // первый вариант лота
extern double Lot2 = 0.03; // второй вариант лота
extern int Distan = 20; // дистанция от SlowМА
В теле эксперта определили Ма:
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Дальше нужно условие: если настоящая цена (Bid или Ask в зависимости от направления) находится до размера Distant, то используем первый размер лота, если больше, то второй.
Первое, что пришло на ум:
if (Ask-SlowMA<Distan) Lot == Lot1;
if (SlowMA-Bid<Distan) Lot == Lot1;
if (Ask-SlowMA>Distan) Lot == Lot2;
if (SlowMA-Bid>Distan) Lot == Lot2;
Но не работает. Ошибка или в связках с Lot, или в общей логике.
Заранее спасибо.
Bid и Ask это последние известные цены покупки и продажи, т. е. текущая цена.
SlowMA - моя переименованная Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
Отклонение текущей цены ( Bid или Ask) от машки (SlowMA) может быть больше или меньше чем Distans. В соответствии с этим надо выставить либо первый либо второй размер лота.
Находил варианты изменения лота от депозита или количества открытых ордеров, а вот от такого линейного показателя, что то никак.
Что то мне подсказывает, что нужна еще функция, которая возвращает абсолютное значение. Т.е применив в ее к отрицательному числу, в результате получаем положительное число.
Bid и Ask это последние известные цены покупки и продажи, т. е. текущая цена.
SlowMA - моя переименованная Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
Отклонение текущей цены ( Bid или Ask) от машки (SlowMA) может быть больше или меньше чем Distans. В соответствии с этим надо выставить либо первый либо второй размер лота.
Находил варианты изменения лота от депозита или количества открытых ордеров, а вот от такого линейного показателя, что то никак.
Что то мне подсказывает, что нужна еще функция, которая возвращает абсолютное значение. Т.е применив в ее к отрицательному числу, в результате получаем положительное число.
Абсолютная величина разницы значений Bid и МА может понадобиться чуть позже, а сейчас, раз уж ты не понял намёка, считаем вместе
Bid = 1.12730;
MA = 1.12530;
Distans = 20;
Вопрос:
Когда и будет-ли вообще 1.1273 - 1.1253 больше 20???
Почему-то мой калькулятор показывает 0.002 всего. Но это очень далеко до 20...
Спасибо, понял. А можно так:
dist=Distan*Point;
if (Ask-SlowMA<dist) Lot == Lot1;
if (SlowMA-Bid<dist) Lot == Lot1;
if (Ask-SlowMA>dist) Lot == Lot2;
if (SlowMA-Bid>dist) Lot == Lot2;
И как все таки это реализовать правильно ?
Спасибо, понял. А можно так:
dist=Distan*Point;
if (Ask-SlowMA<dist) Lot == Lot1;
if (SlowMA-Bid<dist) Lot == Lot1;
if (Ask-SlowMA>dist) Lot == Lot2;
if (SlowMA-Bid>dist) Lot == Lot2;
И как все таки это реализовать правильно ?
А вот теперь можно применить MathAbs() чтобы не заморачивать голову лишним отслеживанием что из чего вычитать. И ещё один интересный условный оператор
Lot = MathAbs(Ask-SlowMA) < dist ? Lot1 : Lot2;
Что означает: переменной Lot будет присвоено значение переменной Lot1 в случае если Ask- SlowMA будет меньше dist, иначе будет присвоено значение Lot2.
И ещё одна рекомендация: Забудь переменную Point. Используй _Point или функцию Point()
Прошу помощи, пока только учусь...
А вот теперь можно применить MathAbs() чтобы не заморачивать голову лишним отслеживанием что из чего вычитать. И ещё один интересный условный оператор
Что означает: переменной Lot будет присвоено значение переменной Lot1 в случае если Ask- SlowMA будет меньше dist, иначе будет присвоено значение Lot2.
И ещё одна рекомендация: Забудь переменную Point. Используй _Point или функцию Point()