АвторСообщение



Пост N: 2
Зарегистрирован: 16.04.08
ссылка на сообщение  Отправлено: 18.04.08 23:58. Заголовок: Сюда можно дать приб..


Сюда можно дать приблизительный алгоритм???

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 41 , стр: 1 2 3 4 5 All [только новые]





Пост N: 4
Зарегистрирован: 10.11.09
ссылка на сообщение  Отправлено: 10.11.09 18:42. Заголовок: SK пишет: Отдать др..


SK пишет:

 цитата:
Отдать другу Вы можете один файл ех4. Он будет работать, его компилировать не нужно (он уже является результатом компиляции). И он не потребует никаких включаемых файлов. Его просто нужно положить в папку экспертов. После запуска МТ4 в списке экспертов в терминале он будет сегого цвета (если рядом нет его исходников) или жёлто-синего (если исходники тут же).


Все, спасибо.
Хоть какой-то смысл появился от включаемых файлов. Советник в виде ех4 на другом компьютере работает.
Удачи.

Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 514
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 10.11.09 20:33. Заголовок: ОК. ..


ОК.


Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 5
Зарегистрирован: 10.11.09
ссылка на сообщение  Отправлено: 12.11.09 15:44. Заголовок: Здравствуйте Сергей...


Здравствуйте Сергей.
Я себе уже сломал всю голову.
В MetaTrader в скриптах, базовой поставки, есть следующий скрипт:

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property show_confirm

//+------------------------------------------------------------------+
//| script "send pending order with expiration data" |
//+------------------------------------------------------------------+
int start()
{
int ticket,expiration;
double point;
//----
point=MarketInfo(Symbol(),MODE_POINT);
expiration=CurTime()+PERIOD_D1*60;
//----
while(true)
{
ticket=OrderSend(Symbol(),OP_SELLSTOP,1.0,Bid-100*point,0,0,0,"some comment",16384,expiration,Green);
if(ticket<=0) Print("Error = ",GetLastError());
else { Print("ticket = ",ticket); break; }
//---- 10 seconds wait
Sleep(10000);
}
//----
return(0);
}

Что это за функция CurTime() где она объявлена и где её код. Если её убираешь компилятор ругается.
Я понимаю, что это время, но если она предопределенная то где про неё почитать.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 18
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 12.11.09 19:51. Заголовок: Это устаревшее назва..


Это устаревшее название функции TimeCurrent. Прчитать про нее можно в Справочнике MQL4-Устаревшие функции. Убирать ее не нужно, просто заменить на TimeCurrent.

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 10.11.09
ссылка на сообщение  Отправлено: 12.11.09 23:35. Заголовок: Большое спасибо. Ясн..


Большое спасибо.
Ясно и понятно. Удачи.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1
Зарегистрирован: 07.01.10
ссылка на сообщение  Отправлено: 07.01.10 03:57. Заголовок: Мое почтение, Сергей..


Мое почтение, Сергей.
Вероятно, с Вами можно вдумчиво поговорить о вещах совсем непонятных, творящихся в MQL.
Признаться, и Метатрейдер и язык оставляют впечатление очень сырых продуктов. Я не исключаю, что мне могут быть неизвестны все тонкости их реализации, но прозрачности и однозначности в них точно нет. Я, например, так и не понял, почему функция Alert() записи в журнале оставляет, а диалоговое окно не выводит? MessageBox(), к слову, тоже.
Был как-то случай, когда одна и та же конструкция в реальном времени, в тестере и в режиме визуализации того же тестера выдавала совершенно разные результаты. Тогда на форуме мне пришлось удовлетвориться простой констатацией факта, что в тестере подобная конструкция не работает. Хоть не моя глупость, уже легче. Однако на затею пришлось плюнуть.
Сейчас снова непонятная заминка возникла, но плевать не хочется - много уже сделано.
А проблема в следующем.
Идея создания на графиках интерактивных элементов новизной не блещет - в режиме визуализации как без рук сидишь. Вот и мне понадобилось создать текстовую метку, выставляемую на определенном ценовом уровне и остающуюся у левого края графика при его прокрутке. При этом хотелось иметь возможность циклически менять два возможных варианта текста метки, смещая ее мышью с исходного положения. Привожу код небольшого эксперта, моделирующего эту идею:


//+------------------------------------------------------------------+
//| тест.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""

double LabPr;
datetime LabTm;
int Value;
int Shift;
int Flag;

int init()
{
Value=1;
Shift=6;
LabPr=Bid;
Flag=0;
LabTm=iTime(NULL,0,WindowFirstVisibleBar( )-Shift);

ObjectCreate("LabTest",OBJ_TEXT,0,LabTm,LabPr);
ObjectSetText("LabTest",DoubleToStr(Value,0) ,11,"Tahoma",Red);
}

int start()
{
if(LabPr!=ObjectGet("LabTest",OBJPROP_PRICE1)||
LabTm!=ObjectGet("LabTest",OBJPROP_TIME1))
{
if(Flag==0)
{
Value=Value*(-1);
Flag=1;
}
}
else Flag=0;
LabTm=iTime(NULL,0,WindowFirstVisibleBar( )-Shift);
ObjectSet("LabTest",OBJPROP_TIME1,LabTm);
ObjectSet("LabTest",OBJPROP_PRICE1,LabPr);
ObjectSetText("LabTest",DoubleToStr(Value,0) ,11,"Tahoma",Red);
}
//+------------------------------------------------------------------+

По каким-то причинам иногда фокус со смещением метки не срабатывает. А вот если функцию ObjectSetText() поставить не в самом конце, а сразу за инструкцией Value=Value*(-1) (где ей, собственно, и место), то тогда фокус будет иногда срабатывать. Но крайне редко. Самое интересное, что в последнем случае Comment(GetLastError()) сразу за ObjectSetText() выдает 4202 - отсутствие объекта, а вот ObjectFind() непосредственно перед ObjectSetText() объект видит.
Этому феномену есть какие-то объяснения?

Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 560
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 07.01.10 18:20. Заголовок: dhot, Тут, мне кажет..


dhot,
Тут, мне кажется, всего по чуть-чуть.

Алерт. Чтобы он работал нужно ему разрешить это в настройках МТ 4.
Тестер. В самый последний период его, вроде бы, довели до ума, но поручиться за все ситуации я не могу.

Интерактивные кнопки. Смотря чего от них хотеть. Из представленного кода не очень понятно какое управляющее воздействие должно осуществляться. Рекомендую на эту тему почитать одну из моих статей: http://articles.mql4.com/ru/117/ Там описаны общие принципы. Главная особенность этой методики состоит в том, что основная прикладная программа (в статье скрипт, в вашем случае - эксперт) должна быть зациклена, т.е. обрабатывать управляющее воздействие пользователя постоянно.

Если этого не сделать, то между тиками программка не будет работать. Эксперт отработает 1 раз на каждом новом тике - start() будет запущена терминалом 1 раз по факту прихода нового тика. А между тиками - как не сдвигай объект, - толку не будет, т.к. некому ( start()-то уже отработала и молчит) обработать это событие.
--

Попробуйте написать стратегию под AG 4. В этом случае всё просто - не нужно ничего зацикливать, т.к. стратегия вызывается из AG 4 прибл. 100 раз в сек. Нужно просто анализировать факт наличия объекта и его координаты. Если объект удалён - восстанавливать + дать сообщение пользователю. Если объект сдвинут - осуществлять некоторое заданное действие. Можно с вариантами: вниз - одно действие, вверх - другое:)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 45
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 07.01.10 19:25. Заголовок: dhot пишет: Вот и м..


dhot пишет:

 цитата:
Вот и мне понадобилось создать текстовую метку, выставляемую на определенном ценовом уровне и остающуюся у левого края графика при его прокрутке. При этом хотелось иметь возможность циклически менять два возможных варианта текста метки, смещая ее мышью с исходного положения.


А почему вы пользуетесь текстовым объектом, а не текстовой меткой? Ведь объект-текст привязывается к цене и времени, а поэтому смещается с перемещением графика. Если же использовать текстовую метку (OBJ_LABEL), то автоматически отпадает необходимость слежения за положением графика, так как метка позиционируется относительно графика в пикселях, а не относительно времени и цены.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 07.01.10
ссылка на сообщение  Отправлено: 07.01.10 20:55. Заголовок: Scriptong пишет: А ..


Scriptong пишет:

 цитата:
А почему вы пользуетесь текстовым объектом, а не текстовой меткой?


Я отмечал, что мне нужна привязка к цене. :) Вообще-то у меня в полном варианте идет горизонтальная линия и привязанная к ней интерактивная метка. Ну, вернее текст. Из меток, само собой, я собрал панель инструментов и информационную панель... :)

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 07.01.10
ссылка на сообщение  Отправлено: 07.01.10 22:15. Заголовок: SK пишет: Из предст..


SK пишет:

 цитата:
Из представленного кода не очень понятно какое управляющее воздействие должно осуществляться.


Менять значение переменной-переключателя Value и отображать его (значение). Или соответствующий значению текст, но это тонкости.
Вообще-то проблема в том, что я уже второй раз сталкиваюсь вот с какой несуразицей - чем глубже зарыта инструкция ObjectSet() во вложенные операторы if, тем нестабильнее она работает. Не буду приводить здесь весь код, он довольно громоздок, покажу лишь принцип.
Нужно мне было при определенных условиях изменить стиль отрисовки линии. На протяжении жизни линии это делалось лишь один раз и больше стиль линии не менялся. В общих чертах конструкция выглядела так:

if(проверка условия 1)
{
(набор действий)
if(проверка условия 2)
{
(набор действий)
if(проверка условия 3)
{
LevOp=1;
ObjectSet(name,OBJPROP_STYLE,STYLE_DASH);
}
}
}
Надо отметить, что стиль линии визуализировал состояние переменной LevOp (либо 0, либо 1). Так вот, переменной присваивалось новое значение, а линия не изменялась. Мало того, GetLastError() выдавала ошибку 4202 - объект не существует, а я сидел и смотрел на этот самый объект в окне графика! Уже чисто машинально я изменил код, вытащив ObjectSet() с третьего уровня на второй и это начало срабатывать. Но очень нестабильно. На первом уровне все заработало вроде нормально. Правда условие проверялось теперь на каждом тике и стиль линии присваивался вне зависимости от того, как она была отрисована. Но это уже казалось мелочью... :)))

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 41 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет