Ответить
27.03.2016, 06:50
Аватар для Cemen4yk1
Cemen4yk1 Cemen4yk1 на форуме Местный житель
Регистрация: 18.09.2014 / Сообщений: 231
Поблагодарили 251 раз(а) / Репутация: 252
Не то. Нужна функция для совы
PHP код:
for(int i=1<= ni++)
  {
    if(((
iLow(NULL,PERIOD_H1,0)<=
    (
iLow(NULL,PERIOD_H1,i)+3*Point))&&
    ((
iLow(NULL,PERIOD_H1,0)>=
    (
iLow(NULL,PERIOD_H1,i)-3*Point)))
  {
   
Signal true;
   } else 
Signal false;
   } 
27.03.2016, 09:20
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
Здарова ребята. Помогите закодить элементарную функцию для совы с такими условиями:
если минимумы последних N свечей равны или отличаются на 3 пункта -- то true, если условие не соблюдается то false.

Слыш, теоретик, ты почитай до осознания, о чём тебе люди написали, или пиши в другую ветку, типа "заплачу денег, если кто напишет".
Три предложения решения для ситуации, более чем достаточны!
28.03.2016, 11:37
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,846
Поблагодарили 9,499 раз(а) / Репутация: 9504
На соседнем форуме:

Скрытый текст

Один тоже пришёл к известному профессору
и заявил, что хочет изучить типа MQL и программировать рынок.
- Ты знаешь английский? - спросил профессор.
- Нет.
- А русский?
- Нет.
- А букварь в детстве учил?
- Нет, Учитель.) Но вы не волнуйтесь. Я закончил философский факультет
Беркли и только что защитил диссертацию по логике в философии Сократа.
А теперь, чтобы восполнить белые пятна в моих познаниях, я хочу
немного поучить MQL.
- Ты не готов учить MQL, - сказал профессор. - Это глубочайшая книга из
всех, написанных людьми.)) Но раз ты настаиваешь, я устрою тебе тест на
логику: справишься - буду с тобой заниматься.
Молодой человек согласился, и профессор продолжил.
- Два человека спускаются по дымоходу. Один вылезает с чистым лицом,
другой - с грязным. Кто из них пойдёт умываться?
У молодого философа глаза на лоб полезли.
- Это тест на логику?!
Профессор кивнул.
- Ну, конечно, тот, у кого грязное лицо!
- Неправильно. Подумай логически: тот, у кого грязное лицо, посмотрит на
того, у кого лицо чистое, и решит, что его лицо тоже чистое. А тот, у
кого лицо чистое, посмотрит на того, у кого лицо грязное, решит, что сам
тоже испачкался, и пойдёт умываться.
- Хитро придумано! - восхитился гость. - А ну-ка, дайте мне ещё
один тест!
- Хорошо, юноша. Два человека спускаются по дымоходу. Один вылезает с
чистым лицом, другой - с грязным. Кто из них пойдёт умываться?
- Но мы уже выяснили - тот, у кого лицо чистое!
- Неправильно. Оба пойдут умываться. Подумай логически: тот, у кого
чистое лицо, посмотрит на того, у кого лицо грязное, и решит, что его
лицо тоже грязное. А тот, у кого лицо грязное, увидит, что второй пошёл
умываться, поймёт, что у него грязное лицо, и тоже пойдёт умываться.
- Я об этом не подумал! Поразительно - я допустил логическую ошибку!
, давайте ещё один тест!
- Ладно. Два человека спускаются по дымоходу. Один вылезает с чистым
лицом, другой - с грязным. Кто из них пойдёт умываться?
- Ну: Оба пойдут умываться.
- Неправильно. Умываться не пойдёт ни один из них. Подумай логически:
тот, у кого лицо грязное, посмотрит на того, у кого лицо чистое, и не
пойдёт умываться. А тот, у кого лицо чистое, увидит, что тот, у кого
лицо грязное, не идёт умываться, поймёт, что его лицо чистое, и тоже не
пойдёт умываться.
Молодой человек пришёл в отчаяние.
- Ну поверьте, я смогу программировать! Спросите что-нибудь другое!
- Ладно. Два человека спускаются по дымоходу:
- О Господи! Ни один из них не пойдёт умываться!!!
- Неправильно. Теперь ты убедился, что знания логики Сократа
недостаточно, чтобы учить Рынок? Скажи мне, как может быть такое, чтобы
два человека спускались по одной и той же трубе, и один из них испачкал
лицо, а другой - нет?! Неужели ты не понимаешь? Весь этот вопрос -
бессмыслица, и если ты потратишь жизнь, отвечая на бессмысленные
вопросы, куда пойдет цена то все твои ответы тоже будут лишены смысла
[свернуть]
30.03.2016, 04:53
Аватар для egorr007
egorr007 egorr007 вне форума Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Всем доброго дня!

Помогите пожалуйста сделать МА линию, что бы она отображалась через один бар.

PHP код:
    for(i=limiti>=0i--)
   {
      
Line_МА[i]=iMA(NULL0,Period_MA,0,MODE_EMA,PRICE_OPEN,i);// Red
       
   

Как такое сделать ? Что бы, на одном баре она отображалась на другом нет. (через один)

п.с.

Просто визуально сразу не видно, где заканчивается и начинается МА, когда на нескольких барах она однонаправлена.
30.03.2016, 09:26
Аватар для egorr007
egorr007 egorr007 вне форума Новичок форума
Регистрация: 31.08.2012 / Сообщений: 45
Поблагодарили 14 раз(а) / Репутация: 15
Допустим , что бы МА отображалась только на чётных барах от нулевого,
а на не чётных, не отображалась.

такое можно сделать?
30.03.2016, 09:58
Аватар для HUDSON
HUDSON HUDSON вне форума Новичок форума
Регистрация: 09.01.2016 / Сообщений: 92
Поблагодарили 8 раз(а) / Репутация: 9
Ребят не Работает EventSetTimer в сове , выдает false , а GetLastError показывает ошибку 4051 , которая в справке - "Недопустимое значение параметра функции" , хотя передаю я в нее int значение как и положено , передавал 1 , передавал 60 , разницы нет . Вызываю таймер из OnInit() , Естественно и OnTimer не срабатывает
30.03.2016, 10:20
Аватар для Степа
Степа Степа вне форума Активный участник
Регистрация: 25.11.2013 / Адрес: Петербург / Сообщений: 53
Поблагодарили 108 раз(а) / Репутация: 109
  • Отправить сообщение для Степа с помощью Skype™

По умолчанию Custom Moving Averages (options)

возможно ли опцию (shift - сдвиг) которая имеется в стандартном Custom Moving Averages вставить в другие индикаторы ??? такие например как -
Coridor FullSSA normalize... ?!?!?!?
если да то буду признателен заполучить его с добавленной опцией (shift-сдвиг) об идеи вам будет ясно по скинам, да он еще и рисует...
30.03.2016, 10:29
Аватар для Cemen4yk1
Cemen4yk1 Cemen4yk1 на форуме Местный житель
Регистрация: 18.09.2014 / Сообщений: 231
Поблагодарили 251 раз(а) / Репутация: 252
Ребят не Работает EventSetTimer в сове , выдает false , а GetLastError показывает ошибку 4051 , которая в справке - "Недопустимое значение параметра функции" , хотя передаю я в нее int значение как и положено , передавал 1 , передавал 60 , разницы нет . Вызываю таймер из OnInit() , Естественно и OnTimer не срабатывает
вот вам рабочий таймер
30.03.2016, 14:14
Аватар для HUDSON
HUDSON HUDSON вне форума Новичок форума
Регистрация: 09.01.2016 / Сообщений: 92
Поблагодарили 8 раз(а) / Репутация: 9
вот вам рабочий таймер
А нельзя ли сделать чтобы и таймер и тик срабатывали ? Ну естественно с заданием приоритета в случае пересечения двух событий .. Просто именно такая конфигурация нужна . Насколько я понял либо тики лови либо по таймеру работай .. не годится ..
31.03.2016, 14:07
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
А нельзя ли сделать чтобы и таймер и тик срабатывали ? Ну естественно с заданием приоритета в случае пересечения двух событий .. Просто именно такая конфигурация нужна . Насколько я понял либо тики лови либо по таймеру работай .. не годится ..
А логику по тикам и таймеру никак не разделить?
Или пожертвуй чем нибудь.

И что значит "пересечения двух событий .. " ?
На то они и события, что бы их обработать отдельно каждое,
ну или флаг обработки ставь, кто первый, того и тапки.
31.03.2016, 15:13
Аватар для HUDSON
HUDSON HUDSON вне форума Новичок форума
Регистрация: 09.01.2016 / Сообщений: 92
Поблагодарили 8 раз(а) / Репутация: 9
А логику по тикам и таймеру никак не разделить?
Или пожертвуй чем нибудь.

И что значит "пересечения двух событий .. " ?
На то они и события, что бы их обработать отдельно каждое,
ну или флаг обработки ставь, кто первый, того и тапки.

ну пересечение имею в виду если тик пришел одновременно с событием таймера , в этом случае должен стоять приоритет выбора какое событие первое и стоит ли после него выполнять второе . А логика просто в том что основные вычисления и основные процессы гораздо лучше и оптимальнее с приходом тика делать . А если я даже милисекундный таймер поставлю то я все равно время прихода последнего тика могу лишь с точностью не менее секунды определить , так как datetime в секундах мериет ... По сути мне таймер нужен чисто для вспомогательных целей , если конкретно , определить сколько времени прошло после прихода последнего тика , при условии что новый тик еще не пришел .
31.03.2016, 15:44
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,846
Поблагодарили 9,499 раз(а) / Репутация: 9504
А если я даже милисекундный таймер поставлю то я все равно время прихода последнего тика могу лишь с точностью не менее секунды определить
Что-то Вы сами себе противоречите, если использовать ф-цию EventSetTimer - минимальный шаг будет в 1 сек., а если использовать ф-цию EventSetMillisecondTimer - тогда можно установить период повторения в 1 миллисекунду.
31.03.2016, 15:53
Аватар для moldsystems
moldsystems moldsystems вне форума Почётный гражданин
Регистрация: 01.04.2011 / Адрес: Мидгард / Сообщений: 449
Поблагодарили 378 раз(а) / Репутация: 379
Добрый день! Обращаюсь с таким вопросом,может кто поможет!
Сделал советника по 1 стрелочнику и 1 трендовому индикаторам. Но не знаю как сделать так, чтобы он на каждой стрелке открывал по n ордеру. У меня же получается, что как появилась стрелка на каждом тике открывает столько ордеров, сколько n. Спасибо!
int ticket=0;
priceliniaGREEN = iCustom(NULL, 0, "beforexguru-2",Sensitivity, PopUp_Alert, Email_Alert,HomePage, 1, 1);
priceliniaRED = iCustom(NULL, 0, "beforexguru-2",Sensitivity, PopUp_Alert, Email_Alert, HomePage, 2, 1);
signalBuy = iCustom(NULL, 0,"1FxSoni_Entry_v3.a",tf,g_period_76,dev_long,dev _short,sc_upper,sc_lower,appliedpriceupper,
appliedpricelower,gd_84,gi_92,gi_96,gi_100, 2,1);
signalSell = iCustom(NULL, 0,"1FxSoni_Entry_v3.a",tf,g_period_76,dev_long,dev _short,sc_upper,sc_lower,appliedpriceupper,
appliedpricelower,gd_84,gi_92,gi_96,gi_100, 3,1);
//bufBuy = iCustom(NULL,0,"beforexguru-2",Sensitivity, false, false,3,1);
//bufSell = iCustom(NULL,0,"beforexguru-2",Sensitivity, false, false,4,1);
if (priceliniaGREEN != EMPTY_VALUE && CountBuy() < numberopenorders && signalBuy != -1)
{
ticket = OrderSend( Symbol(), OP_BUY, Lots, Ask, 5, 0, 0, "", Magic, 0, Blue);

if(ticket>0)
{

TP = NormalizeDouble( Ask + TakeProfit*Point, Digits);
SL = NormalizeDouble( Ask - StopLoss*Point, Digits);

if(OrderSelect(ticket,SELECT_BY_TICKET))
if(OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("Ордер успешно модифицирован");

}
}

if( priceliniaRED != EMPTY_VALUE && CountSell() < numberopenorders && signalSell != -1)
{
ticket = OrderSend( Symbol(), OP_SELL, Lots, Bid, 5, 0, 0, "", Magic, 0, Red);

if(ticket>0)
{
TP = NormalizeDouble( Bid + TakeProfit*Point, Digits);
SL = NormalizeDouble( Bid - StopLoss*Point, Digits);

if(OrderSelect(ticket,SELECT_BY_TICKET))
if(OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("Ордер успешно модифицирован");
}

}

}
31.03.2016, 18:04
Аватар для HUDSON
HUDSON HUDSON вне форума Новичок форума
Регистрация: 09.01.2016 / Сообщений: 92
Поблагодарили 8 раз(а) / Репутация: 9
Что-то Вы сами себе противоречите, если использовать ф-цию EventSetTimer - минимальный шаг будет в 1 сек., а если использовать ф-цию EventSetMillisecondTimer - тогда можно установить период повторения в 1 миллисекунду.
MqlTick.time это переменная типа datetime которая содержит время в секундах с 1970 года , она пишет только целую часть секунды , округляя все милисекунды микросекунды наносекунды и прочее , а милисекунды это уже тысячные доли секунды . Поэтому хорошенько подумайте и поймете что толку от милисекундного таймера не будет . функция которая возвращает время прихода последнего тика тоже возвращает datetime . Здесь выход один - В момент прихода тика сброс таймера и отсчет с нуля .. и так каждый тик . Это конкретно касаемо времени прошедшего с точки прихода последнего тика . Которое как раз мне и нужно ! Хотя конечно врядли что то подобное здесь возможно ... раз даже просто таймер запустить нельзя параллельно с OnTick()

Последний раз редактировалось HUDSON; 31.03.2016 в 18:19.
31.03.2016, 19:48
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
ну пересечение имею в виду если тик пришел одновременно с событием таймера , в этом случае должен стоять приоритет выбора какое событие первое и стоит ли после него выполнять второе . А логика просто в том что основные вычисления и основные процессы гораздо лучше и оптимальнее с приходом тика делать . А если я даже милисекундный таймер поставлю то я все равно время прихода последнего тика могу лишь с точностью не менее секунды определить , так как datetime в секундах мериет ... По сути мне таймер нужен чисто для вспомогательных целей , если конкретно , определить сколько времени прошло после прихода последнего тика , при условии что новый тик еще не пришел .
Для нескольких инструментов я использую таймер, для стратегии с одним можно и тиками обойтись.
Рекомендую написать код, который фиксирует совпадения времени таймера и тика, и для нескольких инструментов, по результатам принять решение.
Чё тут париться?

А потом и другую статистику подсобрать, в том числе и для разных ДЦ и разрядности и тд и тп.....

В общем будет весело при принятии решения. Успехов.

Последний раз редактировалось _SERG_; 31.03.2016 в 19:50.
01.04.2016, 08:39
Аватар для HUDSON
HUDSON HUDSON вне форума Новичок форума
Регистрация: 09.01.2016 / Сообщений: 92
Поблагодарили 8 раз(а) / Репутация: 9
Для нескольких инструментов я использую таймер, для стратегии с одним можно и тиками обойтись.
Рекомендую написать код, который фиксирует совпадения времени таймера и тика, и для нескольких инструментов, по результатам принять решение.
Чё тут париться?

А потом и другую статистику подсобрать, в том числе и для разных ДЦ и разрядности и тд и тп.....

В общем будет весело при принятии решения. Успехов.
А мне нужно чтобы работал и тик и таймер . Чего как я понял на этом языке не сделать . А вспомогательные скрипты и прочее писать не хочу.
01.04.2016, 09:47
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,846
Поблагодарили 9,499 раз(а) / Репутация: 9504
А мне нужно чтобы работал и тик и таймер . Чего как я понял на этом языке не сделать . А вспомогательные скрипты и прочее писать не хочу.
А что Вам мешает создать все необходимые функции для работы с таймером, создать выполнение Вашего кода в ф-ции OnTick, которая будет работать по тикам, при этом её же вызывать из ф-ции OnTimer?

PHP код:
void OnTimer()
  {
//---
    
OnTick();
  } 
01.04.2016, 09:47
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
А мне нужно чтобы работал и тик и таймер . Чего как я понял на этом языке не сделать . А вспомогательные скрипты и прочее писать не хочу.
Они так и так работают, а обработка прикладных событий, это всегда был головняк
программиста, а не разработчика языка.

Так что, если интересует результат, ты через не хочу попробуй.

По поводу, "сделать - не сделать", сделай на том языке, на котором считаешь полностью сможешь реализовать прикладной алгоритм, хоть на ORACLE или другом SQL сервере, или ассемблере или 1С.
А из терминала только котировки толкай, и команды управления процессом обратно в терминал.
Мешает не язык тебе, а один чел, в зеркале его и увидишь.

Последний раз редактировалось _SERG_; 01.04.2016 в 09:53.
01.04.2016, 11:38
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
... По сути мне таймер нужен чисто для вспомогательных целей , если конкретно , определить сколько времени прошло после прихода последнего тика , при условии что новый тик еще не пришел .
И для чего в этом случае нужен OnTimer() достаточно использовать функцию GetTickCount() или GetMicrosecondCount()
Код:
void OnTick()
{
   static ulong start;
  ulong end = GetMicrosecondCount()-start;

// здесь код всей программы

   Comment(end);
     start = GetMicrosecondCount();
}/*******************************************************************/
01.04.2016, 21:12
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 271
Поблагодарили 86 раз(а) / Репутация: 86
И для чего в этом случае нужен OnTimer() достаточно использовать функцию GetTickCount() или GetMicrosecondCount()
Код:
void OnTick()
{
   static ulong start;
  ulong end = GetMicrosecondCount()-start;

// здесь код всей программы

   Comment(end);
     start = GetMicrosecondCount();
}/*******************************************************************/
Да он балуется, не парься.
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 20:30. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO