[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 316

 
gyfto:

Другим индикатором на #property indicator_chart_window через iCustom, а там на DRAW_ARROW.

 

а есть другой способ? или немоглибы дать ссылку где реалезован такой случай, возможно вы сталкиивались с таким... 

 
Zhunko:

Тестовый скрипт из комплекта работает?


Да, заработал, разобрался.

Zhunko: 

Очень много синтаксических ошибок. 
Странно... Может на греческий так MetaEditor реагирует? У меня-то всё хотя бы компилится...
 
gyfto:


Сейчас попробую. Когда мы пишем

 то во всех случаях эти какие-то действия будут всегда выполняться, потому что первые две аналогичны третьей (проверьте, упростите выражение). То есть если это логические переменные, нам не надо ставить ==true, ==false, потому что они уже сами по себе равны true или false.

 


Понял, спасибо! Простите за офф-топ. В профиле я подписался на эту тему и указал сообщать об ответах на е-майл. Но почему-то об ответах меня не уведомляют. Как мне решить этот вопрос?
 
clubsmi:

 

а есть другой способ? или немоглибы дать ссылку где реалезован такой случай, возможно вы сталкиивались с таким... 


Нет, я iCustom тогда не воспользовался, потому что я про него тогда ещё не знал. Вот два примера, один и тот же алгоритм, только один в подокне, а другой сигнальный на пересечении у первого.
Файлы:
sst_alert.mq4  3 kb
sst_line.mq4  2 kb
 
gyfto:


Да, заработал, разобрался.

Странно... Может на греческий так MetaEditor реагирует? У меня-то всё хотя бы компилится...

 

Уже легче. Значит надо искать ошибки в коде.

Да. Греческие символы появляются почему-то. 

 
alsu:

если это именно скрипт, и лежит он в папке scpirts, то он отработал один раз и снялся с графика. Чтоб оставить его насовсем впишите ваш код внутрь вот этого



Под фразой "скрипт" я имел ввиду алгоритм.

ну так мне кто то поможет с алгоритмом?

чтобы при открытии рынка срабатывал Alert что рынок открылся, и аналогично когда рынок закрылся и торговля прекратилась Alert что рынок закрылся!

 
Я кажется понял в чём причина. ТФ у нас секундный с пропусками, соответственно я попытался сформировать дополнительный одномерный массив индексов, в котором каждому элементу а "нужное количество секунд назад" ставится в соответствии элемент b "индекс этой свечи на секундном ТФ с пропусками". Нужное значение индекса потом, повторюсь, вычисляется по формуле n(x)=ind[final]-ind[final-x]+1. Но т.к. этот ТФ пока без синхронизации, в отличие от минуток, которые автоматически докачиваются, если терминал снова запускается после закрытия несколько минут назад например, то и Δt на сек. ТФ будет порой аномально большим, а именно он определяет ресайз дополнительного массива, т.е. Δt ячеек заполняются одним и тем же значением (индексом данного бара). В этом случае как раз MemoryWrite, MemoryRead зашкаливает. Выход, в принципе, "простой": запускать сек. ТФ на VPS, а с ним уже синхронизироваться, если терминал был снова открыт после непродолжительного закрытия. Если говорить более реалистично, то лучше отставить работу с библиотекой до понедельника, а в понедельник начать формировать этот дополнительный массив вживую на реал-тайме. Или сразу перейти со своего компьютера на VPS, а там уже формировать.
 
pasha5282:

Под фразой "скрипт" я имел ввиду алгоритм.

ну так мне кто то поможет с алгоритмом?

чтобы при открытии рынка срабатывал Alert что рынок открылся, и аналогично когда рынок закрылся и торговля прекратилась Alert что рынок закрылся!


Не знаю, Паш, честно говоря я так и не понял, что у тебя там не работает. Это не скрипт, а кусок кода, правильно я понимаю? Попробуй для успокоения совести обрамить всё скобками:

      if((DayOfWeek()==1) && (Hour()==0) && (Minute()==0) && (Seconds()==1)) Alert("Рынок открылся.");
      if((DayOfWeek()==5) && (Hour()==23) && (Minute()==59) && (Seconds()==59)) Alert("Рынок закрылся.");
 
чтобы при открытии рынка срабатывал Alert что рынок открылся, и аналогично когда рынок закрылся и торговля прекратилась Alert что рынок закрылся!
bool Opened=false;
...
int start()
if( !MarketInfo(Symbol(), MODE_TRADEALLOWED) ){
   if( Opened ){
   Alert("Рынок закрылся.");
   Opened=false;
}  }
else{
   if( !Opened ){
   Alert("Рынок открылся.");
   Opened=true;
}  }
 

Как упростить это выражение?

 

это из алгоритма ADX от MetaQuotes. Сами MetaQuotes пользуются таким оборотом:

if(pdm<0) pdm=0;
if(mdm<0) mdm=0;
if(pdm==mdm) { pdm=0; mdm=0; }
  else if(pdm<mdm) pdm=0;
    else if(mdm<pdm) mdm=0;

  - как его упростить? По Вики,

 

 

, здесь я рассматриваю  как одну и ту же функцию, только с разными входными параметрами.