Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Уроки по программированию на языке MQL4 от eevviill
а теперь вопросы по типам переменных.
каким образом конвертировать одни в другие.
пример нам надо добавлять 5 пунктов к стоплосу и тп
описываем переменную
int sl_shift = 5
как теперь ее добавить к double (sl=sl+sl_shift)
double sl = 1.3200
так чтобы в результате получилось 1.3205, а не 6.3200
а теперь вопросы по типам переменных.
каким образом конвертировать одни в другие.
пример нам надо добавлять 5 пунктов к стоплосу и тп
описываем переменную
int sl_shift = 5
как теперь ее добавить к double (sl=sl+sl_shift)
double sl = 1.3200
так чтобы в результате получилось 1.3205, а не 6.3200
дело в том что этот конкретный пример нужно прикрутить к копировщику. он получает тп и сл в формате дабл, определенные значения которые являются ценой.
о! возник с ходу вопрос.
возмем мои прежние условия. sl=1.3200
а правильно ли будет считаться, если sl_shift будет отрицательным?
т.е. например в условии if/else определяем ордер бай или селл
если бай, то sl_shift=--sl_shift
правильно ли в таком случае отработает sl = sl + sl_shift * Point и мы получим 1.3195?
дело в том что этот конкретный пример нужно прикрутить к копировщику. он получает тп и сл в формате дабл, определенные значения которые являются ценой.
именно то что нужно. буду копаться в коде дальше
о! возник с ходу вопрос.
возмем мои прежние условия. sl=1.3200
а правильно ли будет считаться, если sl_shift будет отрицательным?
т.е. например в условии if/else определяем ордер бай или селл
если бай, то sl_shift=--sl_shift
правильно ли в таком случае отработает sl = sl + sl_shift * Point и мы получим 1.3195?
Добрый вечер. Сегодня будем пробовать создавать простейший скрипт. Как попасть в Meta Editor описано в 2-ом уроке.
РЕКОМЕНДАЦИЯ. После моего объяснения постаратся создать скрипт с другими переменными и их названиями (без подглядывания на форум).
ЗАДАЧИ. Понять что я написал, создать и выложить свой скрипт.
Я напишу скрипт и подробное объяснение к нему. Наш скрипт будет считать суму 2-ух чисел и выводить на экран(сигнал-слева от него колокольчик).
Итак начнём.
1)Это не обязательная строка. В ней пишется кому принадлежат авторские права на файл. Пишется #property copyright "" В кавычках тот, кому принадлежат авторские права.
2)Эта функция даёт возможность, при прикреплении скрипта к графику, менять переменные которые в файле имеют приписку extern. В советниках и индикаторах чтобы увидеть, при прикреплении файла к графику, переменные с припиской extern этой функции не надо. Пишется #property show_inputs
3)Первая переменная. Так как она написана, это называется объявлением переменной. Это делается для того чтобы файл знал с какой переменной имеет дело, какого она типа, её значение и выводить ли переменную в свойства файла при прикреплении файла к графику. Желательно, рекомендовано и необходимо объявлять переменные вначале файла(но не обязательно. можно и в самой функции). Итак.
3.1)extern - значит что мы выводим переменную в свойства файла при прикреплении его к графику.
3.2)double - значит что мы указываем тип переменной(урок 2). В нашем случае переменная может быть с дробной частью.
3.3)a значит что мы указываем название переменной.
3.4)= значит что мы присваиваем переменной какое то значение.
3.5)4 значит что мы присвоили переменной число 4.
3.6); значит что мы закончили объявлять переменную(урок 3). Пишется extern double a = 4; 4)Аналогично с 3)
5)Мы объявили переменную, но не вывели во внешние переменные(прикрепление к графику) и не присвоили ей значения. Тоесть без extern и без = Пишется double c; 6)После объявления переменных идёт название функции где проходят все вычесления. А именно фунция Старт.
Пишется int start()
7)Левая квадратная скобка. Обязательно должна быть после написания названия функции. Она указывает на начало расчётов в функции.
Пишется {
8)Собственно наш расчёт. Где a и b это нашы переменные которые мы можем менять во внешних переменных(прикрепление к графику).
с у нас будет ровно сумме a и b(значение которых мы укажем).
Пишется c=a+b; 9)Это выхов сигнала при прикрепленни файла к графику. Итак.
9.1)Alert значит что мы указали функцию, которая выведет на екран сообщение.
9.2)(с) значит что мы указали в скобках что нам выводить в сообщении на экран. Если с, то после пересчёта его значения, в сообщении выведется результат.
9.3); значит конец действия(по простому - точка).
Пишется Alert(c);
10)Это оператор. Если расчёты без ошибок он возвращает 0 и работа файла продолжается дальше. Можно не 0 писать в скобках, но в редких случаях.
Пишется return(0); 11)Правая квадратная скобка. Обязательно должна быть после окончания расчётов. Она указывает на конец расчётов в функции.
Пишется }
10)Это оператор. Если расчёты без ошибок он возвращает 0 и работа файла продолжается дальше. Можно не 0 писать в скобках, но в редких случаях.
Пишется return(0);
10 балов вам. Не поменяли названия переменных. Не выложили файл.
P.S. Забыл добавить. После того как написали, надо скомпилировать. Хотя бы для того чтобы проверить ошибки.
Послезавтра будем писать скрипт по нахождению размера лота для открытия ордера от депо.
1)#property copyright "eevviill"
2)#property show_inputs
3)extern double a = 4;
4)extern double b = 7;
5)double c;
6)int start()
7){
8)c=a+b;
9)Alert(c);
10)return(0);
11) }
Пояснение
10)Это оператор. Если расчёты без ошибок он возвращает 0 и работа файла продолжается дальше. Можно не 0 писать в скобках, но в редких случаях.
Пишется return(0);
Я прошу прощения, не вытерпел.
В функциях int init(), int deinit(), int start() если выполняется return(0); это ничего и никуда не возвращает, и тем более не выплняется дальше. Это просто выход из соответствующей функции. Просто нечему возвращать. Конкретно в скрипте выход из функции start() это завершение работы скрипта. Так что, в скрипте, в функции start(), return(0); это значит завершить работу скрипта.
Например:
extern double a = 4;
extern double b = 7;
double c;
int start()
{
//Если здесь вписать return(0); то скрипт работать не будет.
//Он завершит работу сразу после запуска.
c=a+b;
Alert(c);
//выход из функции старт. Завершение работы скрипта.
return(0);
}
return возвращает только в пользовательской функции и только если она не void типа. Там обязательно в скобках должно быть указано что возвращать. Если функция void типа то в конце должно быть return; без скобок. Так как void не подразумевает никаких возвратов. Просто выход.
Добрый день. Судя по тому что после четвёртого урока вопрос был один и на него Ugar ответил разборчиво, можна сделать вывод что можно продолжать дальше.
Сегодня напишем скрипт, который будет выполнять функции калькулятора. Подробно останавливатся на том, что было описано в прошлых уроках не буду.
ЗАДАЧИ.Понять что я написал в скрипте и без помощи форума написать похожий скрипт(с другими названиями и значениями переменных). Указать значение переменной(2-ое объяснение).
Скрипт.
PHP:
#property copyright "eevviill"
#property show_inputs
1)extern double a = 4;
extern double b = 7;
2)extern string Znak;
3)string Plus = "+";
string Minus = "-";
string Umnogenie = "*";
string Delenie = "/";
double c;
int start()
{
4)if(Znak==Plus) c=a+b;
if(Znak==Minus) c=a-b;
if(Znak==Umnogenie) c=a*b;
if(Znak==Delenie) c=a/b;
5)Alert(DoubleToStr(c,8));
6)return(0);
}
Пояснение. 1)Был выбран тип данных double(урок 2). Посколько у нас скрипт должен выполнять функцию калькулятора, то мы можем вводить не только целые числа.
2)Был выбран тип данных string(урок 2), потому что +-*/ относятся к этому типу данных, а именно "Строковый тип данных". Переменная выведена во внешние свойства файла(прикрепление к графику) и значение этой переменной не указано потому что мы сами будем её выбирать при прикреплению к графику. Но значение можно указать и тогда оно во внешних свойствах будет отображатся по умолчанию.
3)Был выбран тип данных string(урок 2), потому что +-*/ относятся к этому типу данных, а именно "Строковый тип данных". Значения переменных указано.
4)Здесь используется функция if(). Очень необходимая функция. Если дословно озвучить что написано в этой строке, то выйдет так "Если значение переменной Znak равняется значению переменной Plus, то переменной с присваиваится сумма значений 2-ух переменных а и b."
Пишется if(Znak==Plus) c=a+b;
4.1)if() значит что мы в скобках записываем какое то условие. Например Znak==Plus.
4.2)Znak==Plus. == не означает ровно(присвоить значение). Знак проверяет одинаковы ли значения переменных.
4.3)c=a+b значит что если в функции if() то что в скобках истинно, то выполняется действие которое стоит после скобок.
5)Поскольку у нас скрипт-калькулятор, то надо чтобы он выводил нам результат с определённым количеством цифр после запятой.
DoubleToStr(с,8) имеет 2 свойства.
5.1)(с,) первым записывается название переменной(функция бедет брать её значение).
5.2)(,8) вторым записывается количество цифр после запятой которое буде выводится на экран(например 7,88990011).
Пишется DoubleToStr()
6)retutn(0) значит что мы закончили расчёты в функции int start()