Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Создание скриптов


Рекомендуемые сообщения

Доброго времени!

1.Подскажите, а могу ли я, используя

extern datetime NOW;

добиться того, чтобы в окне ввода параметров УЖЕ СТОЯЛА текущая дата?

 

2. Как мне, имея datetime получить его же, только со временем "00:00"?

(не нашел функций - неужели их нет?)

 

спасибо!

Дружище!

Чтоб получить квалифицированный ответ, надо грамотно поставить вопрос. Начну со второго:

- datetime это тип переменной, как и int и string и bool. В этом контексте не понимаю вопроса вообще!

Вдумайся, как мне, имея тип получить его же (тип), только со временем "00:00"? Тип меняется при приведении типов, а так сохраняется.

- extern значит, что можно руками менять ее значение, в ex4 файле, datetime - см. п. выше, NOW - просто ее имя (персональное клеймо).

Смысл этой конструкции в том, чтобы в какое-то время, или до какого-то времени, или начиная с какого-то времени, советник

что-то делал (сделал). Т.е. проверяется условие равенства текущего времени и предустановленного в переменной NOW.

В момент запуска программы, она инициализируется или нулем, или значением, заданным прогером, или значением с предыдущего запуска.

Но прога при исполнении сама может ее менять. Однократно, периодически, при каких-то условиях и т. д.

Определись, что тебе нужно, конкретно.

PS. Не жалей букв при формулировании вопроса.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 68
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Доброго времени!

1.Подскажите, а могу ли я, используя

extern datetime NOW;

добиться того, чтобы в окне ввода параметров УЖЕ СТОЯЛА текущая дата?

 

2. Как мне, имея datetime получить его же, только со временем "00:00"?

(не нашел функций - неужели их нет?)

 

спасибо!

Дружище!

Чтоб получить квалифицированный ответ, надо грамотно поставить вопрос. Начну со второго:

- datetime это тип переменной, как и int и string и bool. В этом контексте не понимаю вопроса вообще!

Вдумайся, как мне, имея тип получить его же (тип), только со временем "00:00"? Тип меняется при приведении типов, а так сохраняется.

- extern значит, что можно руками менять ее значение, в ex4 файле, datetime - см. п. выше, NOW - просто ее имя (персональное клеймо).

Смысл этой конструкции в том, чтобы в какое-то время, или до какого-то времени, или начиная с какого-то времени, советник

что-то делал (сделал). Т.е. проверяется условие равенства текущего времени и предустановленного в переменной NOW.

В момент запуска программы, она инициализируется или нулем, или значением, заданным прогером, или значением с предыдущего запуска.

Но прога при исполнении сама может ее менять. Однократно, периодически, при каких-то условиях и т. д.

Определись, что тебе нужно, конкретно.

PS. Не жалей букв при формулировании вопроса.

Спасибо за ответ, дружище! ;)

Поясняю (в твоем порядке)

1. В вопросе "Как мне, имея datetime получить его же, только со временем "00:00" "

подразумевается, как мне, имея переменную типа datetime получить значение этой же переменной, но со временем "00:00"

сорри за лаконичность, но мне казалось, что умным людям будет понятно...

2. про extern. Как я понимаю, extern позволяет, как минимум, (при соотв. проперти), спросить значение этой переменной у юзера. Так вот, вопрос в том, что: "добиться того, чтобы в окне ввода параметров УЖЕ СТОЯЛА текущая дата", а не "1970.01.01 00:00", которая стоит по умолчанию. Это же и есть "инициализируется нулем". А я хочу, чтоб она инициализировалась текущей датой, но юзер мог и изменить ее (перем.NOW) значение на другое. Судя по твоему ответу достаточно перед конструкцией

extern datetime NOW;

дописать присвоение этой переменной текущей даты. Но разве конструкция языка это позволяет? Ведь extern datetime NOW - это объявление переменной, так?

Если я чет не так понял, уж поясни, плз.

 

Так достаточно ясно сформулирован вопрос? Если нет, я задам еще подробней. :)

 

Еще раз спасибо, жду ответа.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за ответ, дружище! ;)

Поясняю (в твоем порядке)

1. В вопросе "Как мне, имея datetime получить его же, только со временем "00:00" "

подразумевается, как мне, имея переменную типа datetime получить значение этой же переменной, но со временем "00:00"

сорри за лаконичность, но мне казалось, что умным людям будет понятно...

2. про extern. Как я понимаю, extern позволяет, как минимум, (при соотв. проперти), спросить значение этой переменной у юзера. Так вот, вопрос в том, что: "добиться того, чтобы в окне ввода параметров УЖЕ СТОЯЛА текущая дата", а не "1970.01.01 00:00", которая стоит по умолчанию. Это же и есть "инициализируется нулем". А я хочу, чтоб она инициализировалась текущей датой, но юзер мог и изменить ее (перем.NOW) значение на другое. Судя по твоему ответу достаточно перед конструкцией

extern datetime NOW;

дописать присвоение этой переменной текущей даты. Но разве конструкция языка это позволяет? Ведь extern datetime NOW - это объявление переменной, так?

Если я чет не так понял, уж поясни, плз.

 

Так достаточно ясно сформулирован вопрос? Если нет, я задам еще подробней. :)

 

Еще раз спасибо, жду ответа.

Умные от прочих отличаются еще и тем, что получив туманный вопрос, не пытаются догадаться что имел в виду автор вопроса. Они уточняют (если только хотят ответить).

Поэтому прозвучавшую некую иронию считаю несколько неуместной. С лирикой пока все.

А по существу уточняю:

1- datetime - формат в котором представление идет в количестве секунд. А "00:00" это строковый формат. Часы и минуты. Они могут сопровождаться датой (текущей или прошлой или будущей) или

быть без нее. Так что же нужно? datetime соответствующее "00:00"? Тогда с какой датой? или что-то другое?

2- extern позволяет приостановив работающий эксперт (без выгрузки) корректировать данный параметр. И тут возникает вопрос. Тебе надо чтоб она инициализировалась 1 раз при запуске проги?

Или обновлялась каждые сутки? Или с каждым тиком? И что должно быть в ней? Дата, время, дата и время?

А лучше скажи как ты хочешь ее использовать. Тогда, может, станет понятно в каком формате ее надо получить.

Ссылка на комментарий
Поделиться на другие сайты

Умные от прочих отличаются еще и тем, что получив туманный вопрос, не пытаются догадаться что имел в виду автор вопроса. Они уточняют (если только хотят ответить).

Поэтому прозвучавшую некую иронию считаю несколько неуместной. С лирикой пока все.

А по существу уточняю:

1- datetime - формат в котором представление идет в количестве секунд. А "00:00" это строковый формат. Часы и минуты. Они могут сопровождаться датой (текущей или прошлой или будущей) или

быть без нее. Так что же нужно? datetime соответствующее "00:00"? Тогда с какой датой? или что-то другое?

2- extern позволяет приостановив работающий эксперт (без выгрузки) корректировать данный параметр. И тут возникает вопрос. Тебе надо чтоб она инициализировалась 1 раз при запуске проги?

Или обновлялась каждые сутки? Или с каждым тиком? И что должно быть в ней? Дата, время, дата и время?

А лучше скажи как ты хочешь ее использовать. Тогда, может, станет понятно в каком формате ее надо получить.

 

Ок, без лирики.

1. Есть перем. datetime, в которой лежит значение (наприм. "27.11.2009 17:33")

вопрос. Есть ли функция, передав которой знач. этой переменной ("27.11.2009 17:33") я получу только дату ("27.11.2009 00:00")?

Если функции нет (я ее не нашел), то как это сделать?

2. в скрипте написано:

 

#property show_inputs

extern datetime NOW;

 

соответственно, при выполнении скрипта открывается окно, в котором на странице "Входные параметры" есть эта переменная (NOW) и ее значение (0 = "1970.01.01 00:00")

вопрос. Как сделать так, чтобы в этом окне значение стояло не "1970.01.01 00:00", а текущая дата+"00:00"

 

Уф... все.

 

Подробнее (грамотнее) я уже не смогу :)

Неужели и так вопрос не достаточно четко сформулирован?

 

Спасибо, жду ответа

Ссылка на комментарий
Поделиться на другие сайты

Дружище xMark! Плохо у тебя с грамотностью (в отношении MQL4).

Не может в перем. datetime лежать значение string (наприм. "27.11.2009 17:33"). Данные д.б. преобразованы в соотв-й тип.

Но направление мысли понял.

Касательно п.2. Что-то я не пойму, скрипт или советник?

Скрипт выполняется один раз в момент запуска. И если в нем в усл-ях выполнения дата, отличная от текущей, то он ничего не будет делать.

Советник висит пока его принудительно не отключишь (разный форс-мажор не считается).

Далее, если у тебя исполняемый (ex4), то простым путем модернизировать его не получится. Если исходник (mq4), то надо добавить код.

Но опять не пойму, дата инициируется один раз в момент запуска? Или переписывается при смене даты?

Для справки: - запуск это когда садишь советника или скрипт на график,

- старт происходит с каждым тиком.

Все-таки надо иметь общий язык для общения.

PS. В ПРОГРАММИРОВАНИИ ЧУВСТВА ЮМОРА НЕ СУЩЕСТВУЕТ !!!

PPS. Сейчас что-нибудь насочиняю.

Ссылка на комментарий
Поделиться на другие сайты

2 xMark.

Получай скрипт, делающий п.1.

 

//+------------------------------------------------------------------+

//| Ответ xMark-у п_1.mq4 |

//| Speeqoolyant. |

//| speeqoolyant@rambler.ru |

//+------------------------------------------------------------------+

#property copyright "Speeqoolyant."

#property link "speeqoolyant@rambler.ru"

 

int start()

{

string Data="27.11.2009 17:33";

int den=86400;

double time=StrToTime(Data),

Sys_den=time/den;

time=MathFloor(Sys_den)*den;

string Rezultat=TimeToStr(time,TIME_DATE|TIME_MINUTES);

Comment("\n"," Исходная дата ",Data,"\n","Нужная дата ",Rezultat);

Sleep(20000);Comment("");

return(0);

}

Понятно, что коммент это демонстрация преобразования (как доказательство)

в соответствии с поставленной задачей.

 

Относительно п.2 конкретизируй задачу в соответствии с предыдущим постом.

Изменено пользователем Speeqoolyant
Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

Подскажите,

есть ли в MQL4 функция поиска выделенного объекта?

Т.е. если по объекту, например вертикальная линия, щёлкнуть левой кнопкой 2 раза,

то после щёлчка по нему правой повляется контекстное меню, в котором можно выбрать свойства этой линии...

 

Так вот можно ли программно определить этот именно выделенный объект, а потом программно определить его свойства

и потом в программе использовать эти свойства.

 

Это можно использовать, например,

- скрипт: в выделенной фибе, чтобы поменять число уровней в ней, установить только коррективные или импульсные

- скрипт: между двумя выделенными вертикальными линиями

(т.е. задать таким образом временной промежуток) построить МСФ и натянуть на него фибу

- скрипт: установить у выделенной трендовой линии другой цвет, толщину, тип линии....

 

В данном наборе скриптов "Автоматизация рисования картинок в MT4" http://forum.masterforex-v.org/index.php?showtopic=12751&st=75 - спасибо его создателю ,

подобные изменения выполняются только для последнего нарисованного объекта.

Чтобы изменить цвет, толщину линии её нужно удалить и нарисовать новую (т.е. фактически создать последний объект) - лишние операции...

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Приветствую

Необходимо заполнить историю на МТ4. Заполнить пробелы отсутствующих баров на всей истории от месяцов до минуток. Пробелы связаные с случайным выпадением баров и отсутствующие бары за выходные дни. просто средним значением соседних баров. Желательно в виде скрипта. Запустил терминал - запустил скрипт, скрипт просканировал историю на предмет разрывов на каждом их периодов. Очень необходимо проверить свою стратегию.

Ссылка на комментарий
Поделиться на другие сайты

  • 8 месяцев спустя...
Всем доброго дня подскажите кто знает просто и удобный скрипт для быстрого закрытия все ордеров.Если есть у кого скиньте ссылочку.Заранее спасибо.
Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

доброго времени суток! Подскажите как сделать скрипт, чтобы он независимо от цены открывал ордер на покупку со значением T/P +15 (от закупочной цены) пунктов S/L -10 (от закупочной цены) и в это же время открывал ордер на продажу со значениями T/P -10 (от закупочной цены) S/L +10 (от закупочной цены)

такое вообще можно сделать? ))

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте.Помогите пожалуста удалить с индикатора Skdon Trend Signal изображения баров.Только чтобы стрелки указывали.Очень нужно.Благодарю.
Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...

Добрый день.

нужна помощь в написании скрипта рисующего наклонный канал (в виде отрезка) и выводящего рядом с ним надпись о его длине.

 

double price1, price2;

datetime time1, time2;

time1= ObjectGet(name,OBJPROP_TIME1);

time2= ObjectGet(name,OBJPROP_TIME2);

price1= ObjectGet(name,OBJPROP_PRICE1);

price2= ObjectGet(name,OBJPROP_PRICE2);

double Katet1=MathAbs(time1-time2);

double Katet2=MathAbs(price1-price2);

double lin=sqrt(katet1*katet1+(katet2/3)*(katet2/3));

 

Ставим объект с помощью ObjectCreate. Указываем тип OBJ_TEXT. Куда надо поставить задаются координаты 1 точки. Время и цену. Остальные координаты можно поставить 0.

С помощью ObjectSetText() задать текст DoubleToStr(lin,Digits);

Так же задать цвет, размер и название шрифта.

 

собственно надо все это соединить в в 1 рабочий скрипт. но у меня не хватает знаний синтаксиса языка.

кто может оказать помощь в написании?

Изменено пользователем KOT9PA
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Добрый день.

нужна помощь в написании скрипта рисующего наклонный канал (в виде отрезка) и выводящего рядом с ним надпись о его длине.

 

double price1, price2;

datetime time1, time2;

time1= ObjectGet(name,OBJPROP_TIME1);

time2= ObjectGet(name,OBJPROP_TIME2);

price1= ObjectGet(name,OBJPROP_PRICE1);

price2= ObjectGet(name,OBJPROP_PRICE2);

double Katet1=MathAbs(time1-time2);

double Katet2=MathAbs(price1-price2);

double lin=sqrt(katet1*katet1+(katet2/3)*(katet2/3));

 

Ставим объект с помощью ObjectCreate. Указываем тип OBJ_TEXT. Куда надо поставить задаются координаты 1 точки. Время и цену. Остальные координаты можно поставить 0.

С помощью ObjectSetText() задать текст DoubleToStr(lin,Digits);

Так же задать цвет, размер и название шрифта.

 

собственно надо все это соединить в в 1 рабочий скрипт. но у меня не хватает знаний синтаксиса языка.

кто может оказать помощь в написании?

Первая строка понятна. Взаимно.

Канал - область между двумя линиями, как он может быть в виде отрезка?

Как мерять длину наклонного канала? В каких единицах?

Ну а дальше вообще мешанина.

Определись.

Ссылка на комментарий
Поделиться на другие сайты

Добрый день.

нужна помощь в написании скрипта рисующего наклонный канал (в виде отрезка) и выводящего рядом с ним надпись о его длине.

 

double price1, price2;

datetime time1, time2;

time1= ObjectGet(name,OBJPROP_TIME1);

time2= ObjectGet(name,OBJPROP_TIME2);

price1= ObjectGet(name,OBJPROP_PRICE1);

price2= ObjectGet(name,OBJPROP_PRICE2);

double Katet1=MathAbs(time1-time2);

double Katet2=MathAbs(price1-price2);

double lin=sqrt(katet1*katet1+(katet2/3)*(katet2/3));

 

Ставим объект с помощью ObjectCreate. Указываем тип OBJ_TEXT. Куда надо поставить задаются координаты 1 точки. Время и цену. Остальные координаты можно поставить 0.

С помощью ObjectSetText() задать текст DoubleToStr(lin,Digits);

Так же задать цвет, размер и название шрифта.

 

собственно надо все это соединить в в 1 рабочий скрипт. но у меня не хватает знаний синтаксиса языка.

кто может оказать помощь в написании?

Первая строка понятна. Взаимно.

Канал - область между двумя линиями, как он может быть в виде отрезка?

Как мерять длину наклонного канала? В каких единицах?

Ну а дальше вообще мешанина.

Определись.

неправильно выразился, не наклонный канал, а трендовая линия.она может быть в виде отрезка. мерить длину отрезка от начала и до конца) единицы измерения, они же координаты точек начала и конца - это время и цена, соотношение в МТ4 1 к 3, в формулах это учтено.

Ссылка на комментарий
Поделиться на другие сайты

4 KOT9PA

" скрипта рисующего наклонный канал " -чтоб нарисовать, надо задать ему две пары координат, зачем их потом получать?

И кто задает эти координаты?

Подставляй их в "Katet1=MathAbs(time1-time2); Katet2=MathAbs(price1-price2); lin=sqrt(katet1*katet1+(katet2/3)*(katet2/3));"

В близкие координаты выводи текст.

А в чем смысл?

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...