Зря конечно, Вы не последовали совету обучения по учебнику. Вот, допустим, нахватаетесь знаний как ставить линии, ордера и прочее, но стратегию написать все равно не сможете, ведь теоретичекая база отсутствует. Все эти линии и скрипты не помогут понять главные вещи программирования, а без них далеко не уедешь. Я первые 4 месяца только учился, даже не пытаясь что то писать. Можно конечно было и нахрапом, как Вы, но качество таких знаний невысокое, - сплошь и рядом пробелы в элементарном, которые придется восполнять в будущем...
Реter Konow: Зря конечно, Вы не последовали совету обучения по учебнику. Вот, допустим, нахватаетесь знаний как ставить линии, ордера и прочее, но стратегию написать все равно не сможете, ведь теоретичекая база отсутствует. Все эти линии и скрипты не помогут понять главные вещи программирования, а без них далеко не уедешь. Я первые 4 месяца только учился, даже не пытаясь что то писать. Можно конечно было и нахрапом, как Вы, но качество таких знаний невысокое. Сплошь и рядом пробелы в элементарном, которые придется восполнять в будущем...
Здравствуйте, Петер! Учебник изучаю по мере необходимости, т.е. когда вижу пробел в знаниях. Сейчас, уже чувствую, что придётся взять небольшую паузу и более плотно заняться учебником. Все рекомендации участников форума принял к сведению и стараюсь их придерживаться. А пока сам себе удивляюсь, что за столь короткий период смог самостоятельно, хотя бы что-то написать, используя только Справочник MQL5.
Выкладываю новый скрипт New6.mq5, который помогает устанавливать на текущем графике сразу по одному отложенному ордеру BuyStop и SellStop с фиксированным размером лота на некотором расстоянии от текущей цены. В данном скрипте постарался всё расписать, как ранее и обещал, в доступном изложении для ученика 1-го класса школы программирования.
При написании скрипта пользовался только информацией взятой из Справочника MQL5!
С уважением, Владимир.
Пример хороший. Предлагаю использовать его в качестве отправной точки. Базиса.
MrBrooklin:
В дальнейшем, согласно плана самообучения, стоит задача по проведению поэтапной модификации скрипта, а именно:
Нет, нет. Новый функционал пока не подключайте. Сейчас улучшайте существующую логику. Параллельно избавляйтесь от проблем в реализации скрипта (они уже сейчас проглядывают). Что именно переписать если Вам будет интересно, я подскажу.
Пример хороший. Предлагаю использовать его в качестве отправной точки. Базиса.
Нет, нет. Новый функционал пока не подключайте. Сейчас улучшайте существующую логику. Параллельно избавляйтесь от проблем в реализации скрипта (они уже сейчас проглядывают). Что именно переписать если Вам будет интересно, я подскажу.
Здравствуйте, Василий! Конечно подскажите, что нужно переписать, мне это очень интересно!
Здравствуйте, Василий! Конечно подскажите, что нужно переписать, мне это очень интересно!
С уважением, Владимир.
У программистов две проблемы: ошибки, которые выдает компилятор и проблемы архитектуры. Пока Вы новичок, Вы сосредотачивайтесь на борьбе с компилятором, а Вашей конечной целью является программа работающая корректно. Однако очень быстро программа у новичков превращается в так называемый спагетти-код, который и сам автор вскоре не может разобрать. Поэтому я предлагаю Вам сейчас сосредоточится не на компиляторе и корректности конечного скрипта а на вопросах архитектуры. Это как учится играть на рояле: вначале учат верно держать пальцы и правильно сидеть за инструментов, играть Баха ни кто у начинающего не требует.
У Вас поведение скрипта определяют две группы параметров: первая задается статически, в виде макроса. Вторая задается пользователем, при загрузке скрипта на график. Сейчас пользователь не сможет выбрать тип выставляемого ордера не перекомпилируя этот скрипт. Это плохо. Поэтому лучше отказаться от этих макросов в пользу дополнительного параметра:
enum ENUM_ORDER_TYPE_FLAGS
{
BuyStop = 1, // Только BuyStop
SellStop = 2, // Только SellStop
BuyStopAndSellStop = 4// BuyStop и SellStop
};
input ENUM_ORDER_TYPE_FLAGS TypeSendOrders = BuyStop; // Тип Выставляемого ордера(ов)
Соответственно мы определили новое перечисление, которое внедрили в качестве параметра выбора для пользователя.
У программистов две проблемы: ошибки, которые выдает компилятор и проблемы архитектуры. Пока Вы новичок, Вы сосредотачивайтесь на борьбе с компилятором, а Вашей конечной целью является программа работающая корректно. Однако очень быстро программа у новичков превращается в так называемый спагетти-код, который и сам автор вскоре не может разобрать. Поэтому я предлагаю Вам сейчас сосредоточится не на компиляторе и корректности конечного скрипта а на вопросах архитектуры. Это как учится играть на рояле: вначале учат верно держать пальцы и правильно сидеть за инструментов, играть Баха ни кто у начинающего не требует.
У Вас поведение скрипта определяют две группы параметров: первая задается статически, в виде макроса. Вторая задается пользователем, при загрузке скрипта на график. Сейчас пользователь не сможет выбрать тип выставляемого ордера не перекомпилируя этот скрипт. Это плохо. Поэтому лучше отказаться от этих макросов в пользу дополнительного параметра:
Соответственно мы определили новое перечисление, которое внедрили в качестве параметра выбора для пользователя.
Отлично, по сути дела, Вы мне подсказали то, что написано в 4-м пункте поэтапной модификации скрипта, а именно расширить выбор отложенных ордеров.
Следующая проблема в Вашем коде: это его разрастание в длинную процедурную простыню. Все новички так пишут. И эта проблема, которая остается с ними на долгие годы. Учитесь разбивать свой алгоритм на части, начиная с азов вроде этого скрипта. Есть два способа это сделать: через функции и классы. Понятие классов слишком сложно для восприятия вначале, поэтому предлагаю Вам сосредоточится на работе с функциями. Подумайте о важности функций:
Весь код написанный на MQL (а это все скрипты, индикаторы и советники в CodeBase например) находится либо внутри системных функций, либо внутри пользовательский функций.
Любой код на MQL вызывает десятки встроенных функций MQL. Все взаимодействие с MetaTrader и его торговым окружением происходит через вызов той или иной системной функции.
Любая функция не зависящая от внешних параметров всегда возвращает один и тот же результат. Такую функцию можно просто копировать из одного скрипта/индикатора/советника в другой и она будет корректно работать. Копировать произвольный кусок процедурного кода, наоборот, скорее всего не получится.
Можно написать любую пользовательскую функцию которая делает полезную работу. Тем самым, она нужным именно Вам образом будет расширять стандартный функционал MQL. Например, Вы думаете: "Как здорово, если бы в MQL была бы вот такая функция...." - Но почему бы тогда не написать ее самому?
Следующая проблема в Вашем коде: это его разрастание в длинную процедурную простыню. Все новички так пишут. И эта проблема, которая остается с ними на долгие годы. Учитесь разбивать свой алгоритм на части, начиная с азов вроде этого скрипта. Есть два способа это сделать: через функции и классы. Понятие классов слишком сложно для восприятия вначале, поэтому предлагаю Вам сосредоточится на работе с функциями. Подумайте о важности функций:
Весь код написанный на MQL (а это все скрипты, индикаторы и советники в CodeBase например) находится либо внутри системных функций, либо внутри пользовательский функций.
Любой код на MQL вызывает десятки встроенных функций MQL. Все взаимодействие с MetaTrader и его торговым окружением происходит через вызов той или иной системной функции.
Любая функция не зависящая от внешних параметров всегда возвращает один и тот же результат. Такую функцию можно просто копировать из одного скрипта/индикатора/советника в другой и она будет корректно работать. Копировать произвольный кусок процедурного кода, наоборот, скорее всего не получится.
Можно написать любую пользовательскую функцию которая делает полезную работу. Тем самым, она нужным именно Вам образом будет расширять стандартный функционал MQL. Например, Вы думаете: "Как здорово, если бы в MQL была бы вот такая функция...." - Но почему бы тогда не написать ее самому?
Благодарю, Василий за столь развернутый совет. Обязательно приму к сведению и постараюсь осознать всё то, что Вы мне посоветовали.
Следующая проблема в Вашем коде: это его разрастание в длинную процедурную простыню. Все новички так пишут. И эта проблема, которая остается с ними на долгие годы. Учитесь разбивать свой алгоритм на части, начиная с азов вроде этого скрипта. Есть два способа это сделать: через функции и классы. Понятие классов слишком сложно для восприятия вначале, поэтому предлагаю Вам сосредоточится на работе с функциями. Подумайте о важности функций:
Весь код написанный на MQL (а это все скрипты, индикаторы и советники в CodeBase например) находится либо внутри системных функций, либо внутри пользовательский функций.
Любой код на MQL вызывает десятки встроенных функций MQL. Все взаимодействие с MetaTrader и его торговым окружением происходит через вызов той или иной системной функции.
Любая функция не зависящая от внешних параметров всегда возвращает один и тот же результат. Такую функцию можно просто копировать из одного скрипта/индикатора/советника в другой и она будет корректно работать. Копировать произвольный кусок процедурного кода, наоборот, скорее всего не получится.
Можно написать любую пользовательскую функцию которая делает полезную работу. Тем самым, она нужным именно Вам образом будет расширять стандартный функционал MQL. Например, Вы думаете: "Как здорово, если бы в MQL была бы вот такая функция...." - Но почему бы тогда не написать ее самому?
Василий, человек еще даже массивы не освоил. Рано ему подобные лекции слушать.)
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
В дальнейшем, согласно плана самообучения, стоит задача по проведению поэтапной модификации скрипта, а именно:
Зря конечно, Вы не последовали совету обучения по учебнику. Вот, допустим, нахватаетесь знаний как ставить линии, ордера и прочее, но стратегию написать все равно не сможете, ведь теоретичекая база отсутствует. Все эти линии и скрипты не помогут понять главные вещи программирования, а без них далеко не уедешь. Я первые 4 месяца только учился, даже не пытаясь что то писать. Можно конечно было и нахрапом, как Вы, но качество таких знаний невысокое. Сплошь и рядом пробелы в элементарном, которые придется восполнять в будущем...
Здравствуйте, Петер! Учебник изучаю по мере необходимости, т.е. когда вижу пробел в знаниях. Сейчас, уже чувствую, что придётся взять небольшую паузу и более плотно заняться учебником. Все рекомендации участников форума принял к сведению и стараюсь их придерживаться. А пока сам себе удивляюсь, что за столь короткий период смог самостоятельно, хотя бы что-то написать, используя только Справочник MQL5.
С уважением, Владимир.
Всем доброго вечера и хорошего настроения!
Выкладываю новый скрипт New6.mq5, который помогает устанавливать на текущем графике сразу по одному отложенному ордеру BuyStop и SellStop с фиксированным размером лота на некотором расстоянии от текущей цены. В данном скрипте постарался всё расписать, как ранее и обещал, в доступном изложении для ученика 1-го класса школы программирования.
При написании скрипта пользовался только информацией взятой из Справочника MQL5!
С уважением, Владимир.
Пример хороший. Предлагаю использовать его в качестве отправной точки. Базиса.
В дальнейшем, согласно плана самообучения, стоит задача по проведению поэтапной модификации скрипта, а именно:
Нет, нет. Новый функционал пока не подключайте. Сейчас улучшайте существующую логику. Параллельно избавляйтесь от проблем в реализации скрипта (они уже сейчас проглядывают). Что именно переписать если Вам будет интересно, я подскажу.
Пример хороший. Предлагаю использовать его в качестве отправной точки. Базиса.
Нет, нет. Новый функционал пока не подключайте. Сейчас улучшайте существующую логику. Параллельно избавляйтесь от проблем в реализации скрипта (они уже сейчас проглядывают). Что именно переписать если Вам будет интересно, я подскажу.
Здравствуйте, Василий! Конечно подскажите, что нужно переписать, мне это очень интересно!
С уважением, Владимир.
Здравствуйте, Василий! Конечно подскажите, что нужно переписать, мне это очень интересно!
С уважением, Владимир.
У программистов две проблемы: ошибки, которые выдает компилятор и проблемы архитектуры. Пока Вы новичок, Вы сосредотачивайтесь на борьбе с компилятором, а Вашей конечной целью является программа работающая корректно. Однако очень быстро программа у новичков превращается в так называемый спагетти-код, который и сам автор вскоре не может разобрать. Поэтому я предлагаю Вам сейчас сосредоточится не на компиляторе и корректности конечного скрипта а на вопросах архитектуры. Это как учится играть на рояле: вначале учат верно держать пальцы и правильно сидеть за инструментов, играть Баха ни кто у начинающего не требует.
У Вас поведение скрипта определяют две группы параметров: первая задается статически, в виде макроса. Вторая задается пользователем, при загрузке скрипта на график. Сейчас пользователь не сможет выбрать тип выставляемого ордера не перекомпилируя этот скрипт. Это плохо. Поэтому лучше отказаться от этих макросов в пользу дополнительного параметра:
Соответственно мы определили новое перечисление, которое внедрили в качестве параметра выбора для пользователя.
У программистов две проблемы: ошибки, которые выдает компилятор и проблемы архитектуры. Пока Вы новичок, Вы сосредотачивайтесь на борьбе с компилятором, а Вашей конечной целью является программа работающая корректно. Однако очень быстро программа у новичков превращается в так называемый спагетти-код, который и сам автор вскоре не может разобрать. Поэтому я предлагаю Вам сейчас сосредоточится не на компиляторе и корректности конечного скрипта а на вопросах архитектуры. Это как учится играть на рояле: вначале учат верно держать пальцы и правильно сидеть за инструментов, играть Баха ни кто у начинающего не требует.
У Вас поведение скрипта определяют две группы параметров: первая задается статически, в виде макроса. Вторая задается пользователем, при загрузке скрипта на график. Сейчас пользователь не сможет выбрать тип выставляемого ордера не перекомпилируя этот скрипт. Это плохо. Поэтому лучше отказаться от этих макросов в пользу дополнительного параметра:
Соответственно мы определили новое перечисление, которое внедрили в качестве параметра выбора для пользователя.
Отлично, по сути дела, Вы мне подсказали то, что написано в 4-м пункте поэтапной модификации скрипта, а именно расширить выбор отложенных ордеров.
Спасибо!
С уважением, Владимир.
Следующая проблема в Вашем коде: это его разрастание в длинную процедурную простыню. Все новички так пишут. И эта проблема, которая остается с ними на долгие годы. Учитесь разбивать свой алгоритм на части, начиная с азов вроде этого скрипта. Есть два способа это сделать: через функции и классы. Понятие классов слишком сложно для восприятия вначале, поэтому предлагаю Вам сосредоточится на работе с функциями. Подумайте о важности функций:
Следующая проблема в Вашем коде: это его разрастание в длинную процедурную простыню. Все новички так пишут. И эта проблема, которая остается с ними на долгие годы. Учитесь разбивать свой алгоритм на части, начиная с азов вроде этого скрипта. Есть два способа это сделать: через функции и классы. Понятие классов слишком сложно для восприятия вначале, поэтому предлагаю Вам сосредоточится на работе с функциями. Подумайте о важности функций:
Благодарю, Василий за столь развернутый совет. Обязательно приму к сведению и постараюсь осознать всё то, что Вы мне посоветовали.
С уважением, Владимир.
Следующая проблема в Вашем коде: это его разрастание в длинную процедурную простыню. Все новички так пишут. И эта проблема, которая остается с ними на долгие годы. Учитесь разбивать свой алгоритм на части, начиная с азов вроде этого скрипта. Есть два способа это сделать: через функции и классы. Понятие классов слишком сложно для восприятия вначале, поэтому предлагаю Вам сосредоточится на работе с функциями. Подумайте о важности функций:
Василий, человек еще даже массивы не освоил. Рано ему подобные лекции слушать.)
Петер, мне важны все конструктивные советы, в том числе и Ваши!
С уважением, Владимир.