Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 318

 
barabashkakvn:

Вот ещё нашел:

 

Нужно пробовать.

спасибеки , надо взять на закладку

  Дак  готовую анимацию получается (в формате gif) в чарт запихать нельзя , или прогресс ушел дальше и есть простое решение?

 
pako:

Чтобы озвучить торговое событие средствами MQL5 можно воспользоваться функциями Alert() и PlaySound(). Если использовать функцию Alert(), то будет воспроизводиться всегда один и тот же звук, при этом будет открываться окно с сообщением.

 

интересная идея озвучивания событий для советников!

может, могли-бы это озвучивание сделать для МТ4?

пробую (в МТ4) также озвучить событие: "закрытие ордера по SL или TP"  

никак не получается "простым" путём сделать.

(или нужно все изначальные условия "ложить" в массив ...??? ... как это сделать корректно?) 

Может кто-то сталкивался с этим вопросом озвучивания? 

 
mobility-energy:

...

Может кто-то сталкивался с этим вопросом озвучивания? 

Посмотрите в этой статье примеры: Рецепты MQL5 - Озвучиваем торговые события в MetaTrader 5

Функция SoundNotification(). 

 

tol64:

 


Посмотрите в этой статье примеры: Рецепты MQL5 - Озвучиваем торговые события в MetaTrader 5

Функция SoundNotification(). 

спасибо, за комментарий.

ранее уже (тщательно) смотрел ,это именно то что надо (!!!) ,но версии и вариант для МТ5.

А, мне нужно аналогичный вариант (звуки) только для МТ4 (Рецепт для МТ4), 

т.к. функционал МТ5 шире чем МТ4 и функции по другому описываются и применяются и 1:1 нельзя применить/использовать..

пока никак не могу корректно разобратся, как сделатьв коде для МТ4 звук при закрытии ордера(именно) по SL (TP).

общие моменты по открытие/закрытие ордеров (звук) всё уже решено/сделано .

а, вот по тем условиям SL (TP) не могу корректно состыковать условий и  функции на выполнение.

н.п. ордер открыт, модифицирован, ок!

дальше  если ордер закрывается по условиям профит, ок!  закрывается и "звучит".

а, если срабатывает SL(TP) заложенный , после модификации ордера, ничего не "озвучивается" ,т. т. терминал  закрывает ордер "тихо".

простое указание (типо перебор ордеров и if()) не помогает, или неправильно это указываю.

наверное, нужно "ложить" все ордера в масив, и ставить условие(проверка, выбор из массива) ,

и потом при выполнении и условия SL(TP ) на  "звук" ... Но, как это корректно описать в коде?

смотрел(опробовал) некоторые "кимовские" варианты озвучивания событий ,

н.п. срабатывание отложенных ордеров и  озвучивание этого события (условия+масив) всё работает красиво,

а аналогично по SL(TP) не работает (скорее что-то не так указываю/использую) поэтому сдесь и спросил, возможно кто-нибудь имеет проверенное и уже конкретное решение в коде?

хотелось-бы не очень усложнять всё это,

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

================================

решение нашёл, всё получилось, всем спасибо за дискуссию.

вопрос закрыт.


================================ 

 

Уважаемые форумчане!

Пытаюсь делать сортировку одномерного массива. Массив объявлен как статический с числом элементов 150. Сначала пробовал  ArraySort(). Получил выход за пределы. Написал простейшую сортировку сам (код ниже).

Распечатал все, что можно, в том числе значения элементов массива и индексы. Результат тот же. Распечатка не показывает выхода индексов за пределы массива.

В чем может быть дело?

Заранее признателен,

e2718 

for(i=0;i<n;i++) ag[i]=pow(o[i]*h[i]*l[i]*c[i],0.25); //Создание массива

Print("ag0=",ag[0]," ag1=",ag[1]," ag2=",ag[2]," ag3=",ag[3]," ag4=",ag[4]," ag5=",ag[5]); //Печать значений проходит

for(i=1;i<=n;)//Начало сортировки методом вставки
 {
 Print("i=",i); 
  w=ag[i]; j=i-1;
  Print("j=",j); 
  while((w<ag[j]&&(j>=0)))
   {
    ag[j+1]=ag[j];j=j-1;
   }
  ag[j+1]=w; 
 } 
//if(!ArraySort(ag))return;//Стандартная сортировка

Результат в обоих случаях:
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   array out of range in 'EHHT.mq5' (145,14)
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   j=0
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   i=1
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   ag0=1.254399984056122 ag1=1.254224993272838 ag2=1.254049991029702 ag3=1.254024993271765 ag4=1.254 ag5=0.0
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   t5=1970.01.01 00:00:00o1=0.0 h1=0.0 l1=0.0 c1=0.0
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   t4=2014.11.21 00:00:00o1=1.254 h1=1.254 l1=1.254 c1=1.254

Вопрос: Что не так? Где выход за пределы массива?

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
e2718:


Код лучше вставлять так: Правильно вставляем код на форуме

Какая строка имеет номер 145?

И вот еще это условие:

for(i=1;i<=n;)//Начало сортировки методом вставки

 похоже должно быть:

for(i=1;i<n;)//Начало сортировки методом вставки
 

Добрый день!

Подскажите, пожалуйста, каким образом оценивать вкладку АКТИВЫ окна ТЕРМИНАЛЫ (Ctrl + T) торгового терминала?

Чисто визуально...

 
e2718:

Уважаемые форумчане!

Пытаюсь делать сортировку одномерного массива...

Не придумывайте велосипед. Используйте стандартную библиотеку, а именно классы группы СArray... (CArrayObj, CArrayInt и т.д.) Там сортировка сделана максимально быстро и качественно. Сортировать в этих массивах Вы можете по любым критериям.
 
e2718:

Уважаемые форумчане!

Пытаюсь делать сортировку одномерного массива. Массив объявлен как статический с числом элементов 150. Сначала пробовал  ArraySort(). Получил выход за пределы. Написал простейшую сортировку сам (код ниже).

Распечатал все, что можно, в том числе значения элементов массива и индексы. Результат тот же. Распечатка не показывает выхода индексов за пределы массива.

В чем может быть дело?

Заранее признателен,

e2718 


Результат в обоих случаях:
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   array out of range in 'EHHT.mq5' (145,14)
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   j=0
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   i=1
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   ag0=1.254399984056122 ag1=1.254224993272838 ag2=1.254049991029702 ag3=1.254024993271765 ag4=1.254 ag5=0.0
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   t5=1970.01.01 00:00:00o1=0.0 h1=0.0 l1=0.0 c1=0.0
2014.11.23 20:16:30 Core 1 2014.11.21 00:00:30   t4=2014.11.21 00:00:00o1=1.254 h1=1.254 l1=1.254 c1=1.254

Вопрос: Что не так? Где выход за пределы массива?

За науку о вставке кода спасибо! Сам не догадался. 145 строка это строка  с циклом while. В ней происходит первое обращение к массиву ag. Уже первое обращение приводит к конфликту. Замечание по поводу верхней границы цикла на это не влияет. Кроме того, почему обращение к стандартной сортировке  ArraySort(ag) приводит к тому же рузультату?


 
e2718:

Чтобы понять где ошибка, нужен не только этот участок кода, но и объявление переменных. Остаётся только гадать, что там у Вас объявлено.

И вот ещё одна ссылка: Форум: при ответе курсор заскакивает в цитату

 

Причина обращения: