Почему мой советник продолжает давать отрицательную прибыль при обратном тестировании? - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
когда вы запускаете Metatrader, советник должен выяснить, открыта ли сделка.
Я делаю только цикл обратного отсчета для проверки сделок, если есть сделка.
Если я устанавливаю в начале на 1 и OrdersTotal() >0, то я делаю проверку сделок if(.......> || .......> ){делаю цикл....
вы уверены, что дали мне код, который дал вам результаты, показанные выше? я тестировал его на периоде 1440 (1 день) и ни одна сделка не была выполнена. однако когда я изменил его на 1M, многие сделки были выполнены
OK вот так..... Я попытаюсь помочь здесь, если смогу.
Этот вопрос по Ma_Shift был у меня некоторое время, но я так и не смог получить на него четкого ответа.
Если вы заметите в вашем коде, что вы используете сдвиг на 8 для ваших скользящих средних.... что это значит?
Это делает разницу в 3 пункта в значении на этой свече 08:00, как показано здесь в окне данных.
Что приводит нас к вопросу: для чего нужна настройка "Shift" в конце?
Когда вы наводите курсор на график с открытым окном данных и перемещаетесь от свечи к свече.
вы увидите, как меняются цифры для 5 SMA при переходе от свечи к свече...
Именно в этом и заключается последнее значение SHIFT... помня о том, что текущая свеча, которая сейчас рисуется.
это нулевая свеча... последняя завершенная свеча - это свеча 1, так что если на вашем графике 1000 свечей, то они нумеруются в обратном порядке.
они нумеруются в обратном порядке от 999 на левом краю вашего графика до 0, где вы находитесь в данный момент.
Таким образом, если вы хотите узнать, какое значение 5 SMA было 5 завершенных свечей назад.
вы ставите 5 в этом последнем месте... конечно, с течением времени свеча 5 будет меняться на следующую свечу.
Теперь, как было сказано, если вы всегда получаете значение свечи 0... то это значение постоянно
меняется вместе с ценой. Поэтому вы можете принять сигнал, и тогда индикатор перерисует вас... но если вы
всегда запрашиваете информацию от свечи 1, то это уже сделано и не изменится.
Надеюсь, это поможет...
Я все переделал, исправил петлю, проскальзывание, исправил значения скользящей средней и RSI, убедился, что все открытые позиции закрываются перед началом новой позиции. но когда я тестирую его, ничего не происходит, ни покупка, ни продажа не выполняются... в чем проблема?
Функция init() запускается только при старте, а не на каждом тике, как функция start(). Вам нужно вернуть скользящие средние в функцию start, а не в init(), чтобы она работала и получала свежие числа...
Переработанный
Добавьте функцию, при которой советник будет проверять наличие отложенных ордеров перед тем, как принять решение об открытии новой позиции. Если есть отложенный или открытый ордер, то он не будет пытаться открыть новую позицию.at
Я вижу, что все используют цикл для проверки наличия открытых позиций перед покупкой, я не вижу в этом логики. пока OrdersTotal > 0, есть открытые ордера, и мой советник не будет пытаться открыть больше позиций.
Исправил убывающий цикл.
На этот раз он выдает ошибку OrderClose 138, которая не решается добавлением refreshrates().
и я все еще теряю деньги, чего не должно быть.
Я не могу придумать, что еще можно исправить...
Переработанный
Добавьте функцию, при которой советник будет проверять наличие отложенных ордеров, прежде чем принять решение об открытии новой позиции. Если есть отложенный или открытый ордер, то он не будет пытаться открыть новую позицию.at
Я вижу, что все используют цикл для проверки наличия открытых позиций перед покупкой, я не вижу в этом логики. пока OrdersTotal > 0, есть открытые ордера, и мой советник не будет пытаться открыть больше позиций.
Исправил убывающий цикл.
На этот раз он выдает ошибку OrderClose 138, которая не решается добавлением refreshrates().
и я все еще теряю деньги, чего не должно быть.
Я не могу придумать, что еще можно исправить...
Почему вы разместили логику для открытия покупки до того, как проверили сделки, открытые вашим советником на вашем счете ????.
Что произойдет сейчас ???? с тем программированием, которое у вас есть на данный момент?
Предположим, у вас есть счет, на котором работает ваш советник. Вы открываете вручную сделку по GBPUSD.
Сколько сделок в OrdersTotal() с этой сделкой?
Ваш код.... для BUY
что он делает сейчас??? и по какой причине он это делает????
Почему вы разместили логику для открытия покупки до того, как проверили сделки, которые советник открыл на вашем счете ????.
Что произойдет сейчас ???? с тем программированием, которое у вас есть на данный момент?
Предположим, у вас есть счет, на котором работает ваш советник. Вы открываете вручную сделку по GBPUSD.
Сколько сделок в OrdersTotal() с этой сделкой?
Ваш код.... для BUY
что он делает сейчас??? и по какой причине он это делает????
покупать только в том случае, если выполнены условия покупки и не открыто ни одной позиции
покупать только в том случае, если были выполнены условия покупки и если не было открыто ни одной позиции
Предположим, у вас есть счет, на котором работает ваш советник. Вы открываете вручную сделку по GBPUSD.
будет ли условие истинным
не могли бы вы дать мне взглянуть на ваши коды?
Я хочу знать, почему у меня не получилось и как сделать это правильно.
.
Ваше сообщение мне Я могу дать вам полный код прямо.....
Это не будет бесплатно. Для этого вы должны использовать разделJobs и заплатить, чтобы получить его...
Вы получите его там
.
Другой способ - хорошо читать свои темы.
Мы помогаем вам здесь научиться программировать самостоятельно. Это бесплатная помощь.
Мы показываем вам ваши ошибки и помогаем вам в направлении, как решить.
Я показываю код, который у меня есть, как только вы узнаете, как его написать .....
Тогда не нужно платить, и вы можете в тот же момент сравнить его с кодом, который вы сделали здесь с помощью этого форума
....
мой последний вопрос все еще не получил ответа
Предположим, у вас есть счет, на котором работает ваш советник. Вы открываете вручную сделку по GBPUSD.
будет ли условие истинным
.
. В другой темеОшибка OrderClose 138
Вам там очень хорошо помогли(RaptorUK и WHRoeder спасибо за объяснение, я думаю очень хорошо сделано)
.
У меня к вам еще один вопрос
Почему вы изменили таймфрейм при расчете скользящей средней?
Это не то же самое, что я дал,
Он не вычисляет правильное значение на другом графике Daily
.
Так что уделите время обучению и практике и внимательно читайте помощь, которую вы получаете здесь, на этом форуме.
или вы платите кому-то, чтобы программировать для вас на сайте типа Jobs.
не могли бы вы дать мне взглянуть на ваши коды?
Я хочу знать, почему у меня не получилось и как сделать это правильно.
.
Ваше сообщение мне Я могу дать вам полный код прямо.....
Это не будет бесплатно. Для этого вы должны использовать разделJobs и заплатить, чтобы получить его...
Вы получите его там
.
Другой способ - хорошо читать свои темы.
Мы помогаем вам здесь научиться программировать самостоятельно. Это бесплатная помощь.
Мы показываем вам ваши ошибки и помогаем вам в направлении, как решить.
Я показываю код, который у меня есть, как только вы узнаете, как его написать .....
Тогда не нужно платить, и вы можете в тот же момент сравнить его с кодом, который вы сделали здесь с помощью этого форума
....
мой последний вопрос все еще не получил ответа
Предположим, у вас есть счет, на котором работает ваш советник. Вы открываете вручную сделку по GBPUSD.
будет ли условие истинным
.
. В другой темеОшибка OrderClose 138
Вам там очень хорошо помогли(RaptorUK и WHRoeder спасибо за объяснения, я думаю очень хорошо сделано)
.
У меня к вам еще один вопрос
Почему вы изменили таймфрейм при расчете скользящей средней?
Это не то же самое, что я дал,
Он не вычисляет правильное значение на другом графике Daily
.
Поэтому уделите время обучению и практике и внимательно читайте помощь, которую вы получаете здесь, на этом форуме.
или вы платите кому-то, чтобы программировать для вас на сайте типа Jobs.
OrdersTotal() должна показывать общее количество отложенных ордеров и рыночных ордеров, независимо от того, были они открыты советником или вручную?
Я думал об этом следующим образом. Мой советник всегда проверяет, есть ли открытые ордера, и если есть, то он больше не будет открывать ордера, и он будет открывать новые ордера только тогда, когда нет открытых ордеров, следовательно.
Я думаю, что советник работает нормально, потому что в разделе результатов отображается последовательность ордеров 1,1,2,2,3,3,4,4, что означает, что ордер закрыт до открытия нового ордера.
переменные для скользящей средней и RSI были изменены по причинам тестирования. Я экспериментировал на разных временных рамках/периодах, но не изменил их обратно, когда разместил здесь.
И самое странное, мой код исполняет ТОЛЬКО ордер на покупку. Он никогда не исполнял даже один... ордер на продажу. Это просто странно,
В двух словах, проблемы, с которыми я все еще сталкиваюсь сейчас.
1. он исполняет только buy, но никогда не исполняет sell, несмотря на то, что я закодировал sell.
2. все еще получает отрицательную прибыль, чего, я уверен, эта стратегия не должна делать.