Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я исправил ошибку "недействительный билет" для упражнения по кодированию, которое вы посоветовали мне выполнить. Я приложил копию советника для вашего личного просмотра.
Раздел функции OrderClose() этого упражнения я считаю завершенным.
Раздел функции Print() этого упражнения я считаю завершенным.
Остался только третий раздел, функция OrderModify().
Спасибо.
Вы не устранили проблему, вы обошли ее, это типично, когда проблема не понята. Как я уже сказал, устраняйте причину, а не симптом....
Вы все еще не печатаете номер билета USDJPY, пожалуйста, проверьте исходное требование.
Ваши вызовы MarketInfo() неправильны, даже если они работают...
Саймон,
Функция OrderModify() выполняется без ошибок.
Функция OrderPrint() выполняется без ошибок.
Функция OrderClose() выполняется без ошибок.
Пожалуйста, опубликуйте ваш ответ.
Спасибо.
Пожалуйста, опубликуйте свой ответ.
Вы не устранили проблему, вы обошли ее, это типично, когда проблема не понята. Как я уже говорил, устраняйте причину, а не симптом....
Вы все еще не печатаете номер билета USDJPY, пожалуйста, проверьте исходное требование.
Ваши вызовы MarketInfo() неправильные, даже если они работают....
И в дополнение...
если у вас та же ситуация, что и раньше, где нет ордера USDJPY, у вас будут неудачные вызовы OrderStopLoss(), OrderTakeProfit(), OrderSelect() и OrderType().
Что это должно сделать? Что вы ожидаете от этой строки кода? Пожалуйста, ответьте, не заглядывая в документацию.
GetLastError();
В последнем блоке кода, почему вы хотите выполнить эту строку кода. . . .
только если ...
но вы всегда будете выполнять эту строку кода и весь следующий за ней код, независимо от TP и SL?
Ваш вызов MarketInfo() все еще неправильный ... посмотрите в документации, чтобы узнать почему.
Саймон,
Вы не устранили проблему, вы ее обошли...
Какую проблему, по вашему мнению, я еще не исправил?
Вы все еще не печатаете номер билета USDJPY...
Ваши вызовы MarketInfo() неправильны, даже если они работают ...
Пример функции MarketInfo() словаря MetaEditor:
Образец:
Вот образец моего блока кода функции OrderClose():
Что, по вашему мнению, не так с форматом образца кода моей функции OrderClose()? Он выглядит почти идентичным образцу 'MarketInfo()', предоставленному словарем MetaEditor.
И в дополнение ...
Что это должно делать? Что вы ожидаете от этой строки кода? Пожалуйста, ответьте, не заглядывая в документацию.
GetLastError();
Функция GetLastError() печатает ошибку на страницу 'Experts' во время выполнения тестов. Если функция не находит ошибки, печатается ноль (0). Обратите внимание на ноль, напечатанный на снимке, который я привел выше.
В последнем блоке кода, почему нужно выполнить эту строку кода . . . .
только если ...
но вы всегда будете выполнять эту строку кода и весь следующий за ней код, независимо от TP и SL?
Да, я рад, что вы об этом заговорили, потому что я собираюсь объяснить, почему я так поступаю.
Если все остальные блоки кода опущены из выполнения программы с помощью многострочных комментариев "/* - */" и в рамках функций Start() и Return(0) остаются только два блока кода...
второй блок кода - это вызов функции:
Print() функция продолжает бесконечно печатать число на панель экспертов и продолжает печатать. Я полагал, что если я добавлю...
функция Print() будет выполняться только один раз, потому что после выполнения функции OrderModify(), расположенной непосредственно под ней, SL и TP больше не будут равны нулю, что приведет к остановке функции Print().
Теперь я понимаю, что это не так из-за того, как выполняется программа. Я понимаю, что программа выполняется сверху вниз, поэтому, когда программа завершила весь цикл в первый раз, она попыталась бы снова выполнить цикл сверху вниз и не смогла бы напечатать тикет на панели "Эксперты", потому что нет ордера на валютной паре USDJPY.
Спасибо.
Саймон,
Вы не решили проблему, вы ее обошли...
Какую проблему, по вашему мнению, я еще не решил?
Основную проблему, которая вызвана тем, как вы закодировали ваш цикл while... проблему, которая вызывала Invalid ticket для функции OrderClose иUnknown ticket 2 для OrderModify, вы не устранили, потому что вы устранили симптом.
Ваши вызовы MarketInfo() неправильны, даже если они работают ...
Пример функции MarketInfo() из словаря MetaEditor:
Извините, моя ошибка, вы исправили эту проблему ... Вы знаете, что это была за проблема, на которую я ссылался?
Саймон,
Что это должно делать? Что вы ожидаете от этой строки кода? Пожалуйста, ответьте, не заглядывая в документацию.
Функция GetLastError() печатает ошибку на страницу 'Experts' во время выполнения тестов. Если функция не находит ошибки, печатается ноль (0). Обратите внимание на ноль, напечатанный на снимке, который я привел выше.
Нет, GetLastError() не печатает в журнал. Функция возвращает последнюю возникшую ошибку, после чего значение специальной переменной last_error, в которой хранится код последней ошибки, обнуляется. Таким образом, следующий вызов GetLastError() вернет 0".
0 на вашем изображении, вероятно, из ... .
Print(OrderCloseTime());
. . . и является ошибкой, так как заказ больше не выбран, поскольку он больше не находится в пуле заказов, так как он был закрыт и находится в пуле истории.
. . . добавьте эти две строки и попробуйте.
Функция Print() продолжает бесконечно печатать число на панели экспертов и продолжает печатать. Я полагал, что если я добавлю ...
функция Print() будет выполняться только один раз, потому что после выполнения функции OrderModify(), расположенной непосредственно под ней, SL и TP больше не будут равны нулю, что приведет к остановке функции Print().
Теперь я понимаю, что это не так из-за того, как выполняется программа. Я понимаю, что программа выполняется сверху вниз, поэтому, когда программа завершила весь цикл в первый раз, она попыталась бы снова выполнить цикл сверху вниз и не смогла бы напечатать тикет на панели "Эксперты", потому что нет ордера на валютной паре USDJPY.
Я думаю, вы не поняли мою мысль... если я добавлю несколько скобок, возможно, она будет более ясной. ...Вы сделали это...
... вы хотели сделать это?
Саймон,
Вы все еще не печатаете номер билета для USDJPY...
Требование было ... "печатать номер билета в журнал в форме "Номер билета для USDJPY = " ".
Саймон,
Основная проблема, вызванная тем, как вы закодировали ваш цикл while... проблема, которая вызывала Invalid ticket для функции OrderClose и Unknown ticket 2 для OrderModify, вы не устранили причину, вы устранили симптом.
Я хочу обсудить с вами этот вопрос в мелких деталях сам по себе, что позволит мне сосредоточить свои мысли на его решении, не отвлекаясь на другие моменты.
Извините, моя ошибка, вы исправили этот вопрос ... знаете ли вы, что это была за проблема, на которую я ссылался?
Да, спасибо, что подняли этот вопрос!
"Функция возвращает последнюю возникшую ошибку, после чего значение специальной переменной last_error, в которой хранится код последней ошибки, обнуляется. Таким образом, следующий вызов GetLastError() вернет 0".
Словарь MetaEditor гласит:
Эта функция возвращает последнюю возникшую ошибку, после чего значение специальной переменной last error, в которой хранится код последней ошибки, обнуляется....
Зеленый цвет понятен, желтый - не понятен.
. . . добавьте эти две строки и попробуйте.
Будет сделано.
Я думаю, что вы не поняли мою мысль... если я добавлю несколько скобок, может быть, это будет понятнее. ...вы сделали это...
Я думаю, что я хотел сделать это...
Это потому, что я хотел, чтобы условие...
применялось к участку кода в скобках ("{ }").
Требование было ... "вывести номер билета в журнал в форме "Номер билета для USDJPY = " ".
Это может быть сделано.
Спасибо.
"Функция возвращает последнюю возникшую ошибку, после чего значение специальной переменной last_error, в которой хранится код последней ошибки, обнуляется. Таким образом, следующий вызов GetLastError() вернет 0".
Словарь MetaEditor гласит:
Эта функция возвращает последнюю возникшую ошибку, после чего значение специальной переменной last error, в которой хранится код последней ошибки, обнуляется....
Зеленый цвет понятен, желтый - не понятен.
Итак, как видно из документации, GetLastError() ничего не печатает... она простовозвращает номер ошибки... Поэтому, чтобы использовать ее, нужно что-то с ней сделать. .
Когда вы вызываете GetLast Error(), она возвращает ошибку, а затем очищает до нуля переменную, которую она использовала для хранения последней ошибки ... так что если вы сделаете это ...
то второй вызов GetLastError() вернет 0, так как первый вызов обнулил переменную, хранящую номер ошибки. ... также имейте в виду, что хранится только последняя ошибка.
Я думаю, вы не поняли мою мысль... если я добавлю несколько скобок, может быть, это будет понятнее. ...вы сделали это...
Я думаю, что я хотел сделать это...
Это потому, что я хотел, чтобы условие...
применялось к участку кода в скобках ("{ }").
Но вы этого не сделали... Вы упустили это при проектировании, затем упустили это при кодировании, затем упустили это при чтении кода и проверке того, что он будет делать то, что вы задумали, затем упустили это при тестировании. ... скобки - это одна из тех фундаментальных вещей, которые вы должны знать как свои пять пальцев.
Вы должны понять, почему вы это упустили, и решить эту проблему... Никто другой не сможет сделать это за вас, если только вы не хотите заплатить им за то, чтобы они написали код за вас.
Саймон,
0 на вашем изображении, вероятно, из ... .
Print(OrderCloseTime());
Не-а-а! ;)
Давайте совершим путешествие по переулку документации? Хахаха.
Примечание: Ордер должен быть предварительно выбран функцией OrderSelect().
Сначала давайте посмотрим на блок кода функции OrderClose(), который я недавно написал...
Далее давайте посмотрим на результат, показанный на снимке панели "Эксперты"...
Ааа, что у нас тут? :)
Пожалуйста, опубликуйте ответ для нового прикрепленного эксперта. Соответствует ли он всем критериям, которые включает в себя ваше упражнение?
Основная проблема, которая вызвана тем, как вы закодировали ваш цикл while... проблема, которая вызывала Invalid ticket для функции OrderClose и Unknown ticket 2 для OrderModify, вы не устранили причину, вы устранили симптом.
Я хочу обсудить с вами этот вопрос в мелких деталях сам по себе, что позволит мне сосредоточить свои мысли на решении этого вопроса, не отвлекаясь на другие моменты.Спасибо.