//+------------------------------------------------------------------+//| New5.mq5 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//---#property script_show_inputs//---/* Ранее в скриптах New2.mq5, New3.mq5 и New4.mq5 мы научились создавать горизонтальную
и вертикальную линию на текущем графике главного окна терминала MetaTrader 5.
Теперь мы немного усложним задачу и попробуем создать линию, но уже с привязкой двух точек по
временнОй и ценовой координатам. Кроме того, в данном скрипте мы реализуем возможность
изменять входные параметры нужных нам координат. Снова воспользуемся информацией имеющейся
в Справочнике MQL5.
Для начала необходимо сделать так, чтобы перед установкой новой линии, у нас было место,
где мы могли устанавливать или менять нужные нам координаты привязки. Для этого мы должны
воспользоваться препроцессором – специальной подсистемой компилятора MQL5, которая занимается
предварительной подготовкой исходного текста программы непосредственно перед ее компиляцией.
Препроцессор позволяет также определять специфические параметры mql5-программ:
- Объявлять константы
- Устанавливать свойства программы
- Включать в текст программы файлы
- Импортировать функции
- Использовать условную компиляцию
В нашем случае интересен раздел "Устанавливать свойства программы", поэтому жмем на эту ссылку
и переходим во вкладку "Свойства программ (#property)". Если внимательно просмотреть все константы, то
можно найти "script_show_inputs" (дословный перевод - показать входы скрипта), а если быть точнее,
то вывести окно со свойствами перед запуском скрипта и запретить вывод окна подтверждения. Запишем
#property script_show_inputs чуть ниже шаблона шапки скрипта.
Движемся дальше. Создадим входные параметры скрипта. Для этого нам понадобится класс памяти input
который определяет внешнюю переменную. Модификатор input указывается перед типом данных.
Изменять значение переменной с модификатором input внутри mql5-программы нельзя, такие переменные
доступны только для чтения. Изменять значения input-переменных может только пользователь из окна
свойств программы. Простыми словами input нам нужен для того, чтобы задавать свои значения в диалоговом
окне скрипта в момент его запуска.
*/// ПИШЕМ КОД СКРИПТАinputdatetime inp_time1=D'2020.10.01 14:00'; //Превая точка привязки по временнОй координатеinputdouble inp_price1=1.17693; //Первая точка привязки по ценой координатеinputdatetime inp_time2=D'2020.10.02 10:00'; //Вторая точка привязки по временнОй координатеinputdouble inp_price2=1.17412; //Вторая точка привязки по ценой координате//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---ObjectCreate(0,"Моя_линия_3",OBJ_TREND,0,inp_time1,inp_price1,inp_time2,inp_price2);
}
//+------------------------------------------------------------------+/* Теперь расшифруем, что именно мы создали в программном коде скрипта.
1. Первым делом мы создали четыре входных параметра, по два на каждую точку привязки. В данном скрипте
каждая точка привязки линии имеет 2-а параметра - price и time. Каждый входной параметр начинается
с input (переводится как "ввод").
2. После input пишется тип переменной. Например, для ценовых координат присваивается тип переменной double,
т.к. она (цена) имеет дробную часть, а для временнЫх координат присваивается тип переменной datetime.
Все эти сведения мы берем из уже известного нам Справочника MQL5.
3. Чтобы мы смогли вводить свои данные, нам необходимо создать четыре собственные переменные созвучные с
price и time. Ими станут inp_time1, inp_time2, inp_price1 и inp_price2. Каждой новой переменной зададим
конкретные значения (константы), например, input datetime inp_time1=D'2020.10.01 14:00' и т.д.
4. Дальше для создания новой линии, нам также потребуется ObjectCreate, только с некоторыми поправками.
Во-первых, зададим для линии новое уникальное имя "Моя_линия_3". Во-вторых, зададим новый тип объекта
OBJ_TREND, т.к. будем создавать линию, которая может располагаться на торговом терминале в
произвольном положении. В-третьих, там где в предыдущих скриптах мы записывали конкретные
величины price и time, а именно, time1, price1, time2 и price2, теперь мы должны записать вновь
созданные нами переменные inp_time1, inp_price1, inp_time2 и inp_price2. Всё! Наш новый скрипт готов.
5. Компилируем и запускаем скрипт. Как компилировать и запускать скрипт мы уже узнали, когда создавали скрипт New2.mq5.
*/
В настоящее время персональный компьютер стал незаменимым помощником в жизни каждого человека. Благодаря развитию Интернета и увеличению мощности современных компьютеров открылись новые возможности во многих областях деятельности. Ещё десять лет назад торговля на финансовых рынках была доступна только банкам и узкому кругу специалистов. Сегодня...
你有错误的学习计划,你的出发点是错误的。
在这里,你正在学习一个函数。
这并不简单,相对而言,需要已经有基本的知识。
为了证实这一点,请尝试回答这个函数上的问题,你可能无法回答,这表明学习的方向不对。
为什么 "My_line_2 "有引号而OBJ_VLINE 没有?
int,double 在这里是什么意思,它们有什么不同?
为什么要写sub_window,而不是反过来写,有什么意义?
你不需要从帮助中学习功能,你需要的是语言的基本要素,与交易环境、文件、各种数据和其他方面合作的基本原则,这取决于手头的任务。
谢谢你,亚历山大,谢谢你的建议!我将考虑到他们。
问候,弗拉基米尔。
这是正确的,但只是采取一个现成的例子或编写你自己的代码是两个很大的区别。至少对我来说是这样。非常感谢你的提示!
真诚的,弗拉基米尔。
如果你不打算完全学习C++和MQL,而是寻求一个更简单的变体,你可以采取一个现成的代码,并以解释的方式组织它,试着理解MQL5参考,正如作者所建议的。
你有错误的学习计划,你的出发点是错误的。
你可以写一个类似的,甚至更好的)。
如果你不打算完全学习C++和MQL,而是想找一个更简单的版本,可以使用现成的代码,对其进行分解,试着理解什么是和为什么,使用MQL5参考指南,如建议的那样
如果你了解所有你感兴趣的东西,你可以写一个类似的甚至更好的东西)。
我正在学习C++和MQL5编程语言,随着问题的出现,一步一步地学习。我正在编写脚本,以加强我所学的材料。我正在一步一步地摆脱内心对未知的恐惧。我开始明白一些事情了。我希望我有耐心和力量,不仅能学会编程的基本知识,而且能做得更多。谢谢你分享你的建议。他们都被考虑在内了!但俗话说得好--莫斯科不是一下子就能建成的。
问候,弗拉基米尔。
MQL4教程是最好的。即使对绝对的初学者来说,一切都可以理解。你有一个准确和最新的材料选择,为我们的行业。在~4个月内,你将能够编写你自己的EA。
谢谢你,彼得!我希望我对你的名字是正确的?我一定会找到这本书来学习。就在刚才,有一个点,昏迷可能来自于信息的超载。目前,根据我的自学计划,我还有几个脚本在排队,以修复我已经学到的材料。
再次感谢您的建议!
问候,弗拉基米尔。
我继续学习MQL5编程语言。新脚本New5.mq5在两个时间间隔之间设置趋势线。正如我先前所承诺的,我试图在这个脚本中为一个编程学校的一级学生描述一切。
问候,弗拉基米尔。
谢谢你,彼得!我希望我没有用错你的名字?我一定会找到这本书来学习。只是现在我正处于一个被过多的信息所淹没的阶段。到目前为止,根据我的自学计划,我还有几个脚本在排队,以修复我已经学习过的材料。
再次感谢您的建议!
问候,弗拉基米尔。
MQL4教程
谢谢你,Alexey,谢谢你的链接!!。
真诚的,弗拉基米尔。
谢谢你,彼得!我希望我没有用错你的名字?我一定会找到这本书来学习。只是现在我正处于一个被过多的信息所淹没的阶段。到目前为止,根据我的自学计划,我还有几个脚本在排队,以修复我已经学习过的材料。
再次感谢您的建议!
真诚的,弗拉基米尔。
谢谢你,彼得,我把你的建议记在心里了。
问候,弗拉基米尔。