[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 419
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как сделать, чтобы программа выдавала уровень ЕМА в качестве цены? Допустим ЕМА1 с периодом (1), ЕМА2 с периодом (0), ЕМА1 равняется 1.3321, а ЕМА2 на текущий период 1.3200. Необходимо, чтобы результат выражения (ЕМА1-ЕМА2) равнялся 0,0121. При запуске скрипта для проверки алерт показывает значение ноль, а надо чтобы "0,0121". Как решить эту задачу?
Как сделать, чтобы программа выдавала уровень ЕМА в качестве цены? Допустим ЕМА1 с периодом (1), ЕМА2 с периодом (0), ЕМА1 равняется 1.3321, а ЕМА2 на текущий период 1.3200. Необходимо, чтобы результат выражения (ЕМА1-ЕМА2) равнялся 0,0121. При запуске скрипта для проверки алерт показывает значение ноль, а надо чтобы "0,0121". Как решить эту задачу?
А сам скрипт увидеть возможно? - Предположительно у Вас либо не тот тип данных используется для получения, например интеджер вместо дабл (поэтому округляется до нуля), либо еще что-то, что приводит к нулевому значению: без кода понять сложно.
Кстати, если Вы скриптом проверяете то, что до этого написали, то ошибка может быть как в самом скрипте (предположительно написанным именно для проверки своего индикатора), либо в коде самого индикатора.
Если правильно написана фильтрация своих ордеров, которую я Вам предложил написать и Вы учитываете в своих расчётах комиссию и свопы, то всё работает правильно.
вы дали видимо очень сложный путь.
у меня ничего не получается.
я тупо вставил в ваш образец следующее:
Он выдает какую-то цифру, но она далека от реальности.
не могли бы вы для особо тупых ПОКАЗАТЬ, где мне надо ввести число 12 чтобы все работало. Ибо про "фильтрацию ордеров" я вообще не в курсе....
вы дали видимо очень сложный путь.
у меня ничего не получается.
я тупо вставил в ваш образец следующее:
Он выдает какую-то цифру, но она далека от реальности.
не могли бы вы для особо тупых ПОКАЗАТЬ, где мне надо ввести число 12 чтобы все работало. Ибо про "фильтрацию ордеров" я вообще не в курсе....
Для полного контроля работы функции все промежуточные расчёты вывел на чарт.
Осталось только за Вас написать код.
Есть два пути: или самому разобраться (причём, на примерах - я Вам дал рабочий скрипт), или искать того, кто всё сделает за Вас.
P.S. Если вдруг будет желание разобраться, то начинать можно отсюда.
А сам скрипт увидеть возможно? - Предположительно у Вас либо не тот тип данных используется для получения, например интеджер вместо дабл (поэтому округляется до нуля), либо еще что-то, что приводит к нулевому значению: без кода понять сложно.
Кстати, если Вы скриптом проверяете то, что до этого написали, то ошибка может быть как в самом скрипте (предположительно написанным именно для проверки своего индикатора), либо в коде самого индикатора.
Для полного контроля работы функции все промежуточные расчёты вывел на чарт.
Осталось только за Вас написать код.
Есть два пути: или самому разобраться (причём, на примерах - я Вам дал рабочий скрипт), или искать того, кто всё сделает за Вас.
P.S. Если вдруг будет желание разобраться, то начинать можно отсюда.
спасибо, обязательно попробую разобраться
Как сделать, чтобы программа выдавала уровень ЕМА в качестве цены? Допустим ЕМА1 с периодом (1), ЕМА2 с периодом (0), ЕМА1 равняется 1.3321, а ЕМА2 на текущий период 1.3200. Необходимо, чтобы результат выражения (ЕМА1-ЕМА2) равнялся 0,0121. При запуске скрипта для проверки алерт показывает значение ноль, а надо чтобы "0,0121". Как решить эту задачу?
Использовать в расчётах переменные типа double, а не int;
использовать нормализацию при расчёте результата выражения NormalizeDouble(число1-число2, нужная точность);
использовать для вывода результата на экран (в журнал) DoubleToStr(полученный результат, нужная точность);
Больше без вашего кода подсказать нечего...
Вы правы, убрал ЕМА c int на double и все стало, как надо.
Суть в чем: Конечно, можно ради интереса попросить Вас более детально описать условия, поскольку Вы предоставили лишь общее описание: когда были установлены роботом отложки (заранее или нет; ручные примерно одинаково с роботом по времени или нет и т.п.). Но все равно Вам и в этом случае придется разбираться только с брокером, т.к. у него свой поток, который, вероятно, выстраивает очередь исполнения сделок. И предположим, если в Вашей очереди стояла ручная отложка первой, то время исполнения у отложек будет разным (включая очередь других клиентов), стало быть и цена может быть тоже разной. А если робот ставил отложки в период формировавшихся сигналов, то попадание в очередь опять же не очевидно - отсюда возможны смещения по цене исполнения. Так же может влиять размер позиций, о которых вы ничего не пишите... и т.п...
Но... все равно это лишь с брокером (ДЦ) можно выяснить. И, предполагаю, что он найдет кучу причин, которые я не упомянул. - И совет был верным: лог в руки и к брокеру, если, конечно, Вы до сих пор считаете, что ваши заявки отложенных ордеров переместились. Но только не стоит путать 2 разных понятия: Отложенный Ордер и Сделка по этому Отложенному Ордеру. Отложенный Ордер - это распоряжение - войти в рынок по любой ближайшей цене заявленным объемом. А Сделка - это та цена, по которой удалось исполнить Ваше распоряжение на заявленный объем денег (лота). - И цены у этих ордеров скорее всего (особенно на быстром рынке - на что Вам и дали ссылку) будут отличаться. У лимитных ордеров - цена заявки и цена исполнения равны (по определению).
А то, что у брокера и демо и реал не отличаются - это же хорошо! - Это говорит о том, что брокер не занимается подтасовыванием сделок, чтобы привлечь клиентов (с Ваших слов). - Разногласий не видно в данном случае.
Спасибо за столь развёрнутый ответ, стало всё понятно что к чему. Если использовать систему исполнения ордеров Instant Execution, эта проблема решится?
Что до тех условий которые я не рассказал:
Робот выставил отложки раньше, чем выставленные в ручную, но они модифицировались до новости.
Обём сделок был одинаков, расстояния примерно те же
в общем условия были почти полностью схожи
Текущий день начинается с начала текущего D1 бара (iTime (NULL, PERIOD_D1, 0)), НО Вы же не ищите лёгких путей?! :)))
тут вот какая проблемка всплыла.
все работает, но только ОДИН раз. Т.е. если ставлю период (iTime (NULL, PERIOD_D1, 0)) дневки, то на следующей дневке она уже не работает.
написал тестовый код для проверки