Jump to content

Общие вопросы по языку MQL


Recommended Posts

Galim_v
3 часа назад, Ugar68 сказал:

Если много данных, использование GV не оправдано. Слишком много GV. Можно конечно использовать много глобальных переменных, но проще, вместо переменных, использовать массив и скидывать его в файл при каждом изменении значений. При инициализации прочитать из файла в массив.

Да, вариант с файлом выглядит более оптимальным. Благодарю.


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

Link to post
Share on other sites
  • 2 weeks later...
  • Replies 7.6k
  • Created
  • Last Reply

Top Posters In This Topic

  • AntFX

    577

  • sergey1294

    569

  • Ugar68

    517

  • Programmer

    419

Top Posters In This Topic

Popular Posts

Ну, в данном случае мне стоило бы сразу соблюдать простейшие приёмы защитного программирования, то есть проверять, не равна ли нулю переменная, оказавшаяся под знаком деления. Ведь она "чужая", то ест

На счёт проверок, это правильно. Я больше очень практикую, то же нарывался. Но в моём случае у меня советник открывал ордер минимальным лотом вместо нормального, когда замечал, доливаться было поздно.

Основной советник выставляет "сигнальный" отложенный ордер далеко от текущей цены и каждую например, минуту модифицирует у него время экспирации: это может быть текущее время плюс 1 час, или плюс 1 су

Posted Images

sviter

Здраствуйте! Помогите сделать следующее:

есть стандартный индикатор АО
 

Код:
 AO_0 = iAO(NULL, PERIOD_M5, 0);
 AO_1 = iAO(NULL, PERIOD_M5, 1);

AO_0-15 = iAO(NULL, PERIOD_M15 , 0);
AO_1-15 = iAO(NULL, PERIOD_M15 , 1);

AO_0-30 = iAO(NULL, PERIOD_M30, 0);
AO_1-30 = iAO(NULL, PERIOD_M30, 1);

AO_0-1 = iAO(NULL, PERIOD_H1, 0);
AO_1-1 = iAO(NULL, PERIOD_H1, 1);


нужно сделать, что бы сигнал срабатывал на красной(вниз) и на зеленой(вверх) и одновременно следил за более старшими тайфреймами, (PERIOD_M15 и PERIOD_M30, PERIOD_H1), что бы они были того же цвета.... тоесть на М5 он ловит сигнал, а старшие таймфреймы просто как фильтр...

как делать пересечение я знаю:
 

Код:
if(AO_0 < AO_1)
     {
      сигнал вниз
     }
   if(AO_0 > AO_1)
     {
      сигнал вверх
     }

а вот как отслеживать старшие таймфреймы нет!!! расскажите пожалуйста???

Link to post
Share on other sites
Ugar68

 

Это не пересечение а цвет. Надо в условия добавить все остальные цвета, аналогично.

Нельзя в названии переменной использовать минус, по этому я заменил его нижней чертой.

if(AO_0 < AO_1 && AO_0_15 < AO_1_15 && AO_0_30 < AO_1_30 && AO_0_1 < AO_1_1)

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
sviter
14 минут назад, Ugar68 сказал:

 

Это не пересечение а цвет. Надо в условия добавить все остальные цвета, аналогично.

Нельзя в названии переменной использовать минус, по этому я заменил его нижней чертой.


if(AO_0 < AO_1 && AO_0_15 < AO_1_15 && AO_0_30 < AO_1_30 && AO_0_1 < AO_1_1)

мне надо что бы М5  ловил сигнал (вверх\вниз), а старшие таймфреймы просто как фильтры были. тоесть смысл со старшими таймфрэймами тот же как и на М5 ???

Link to post
Share on other sites
Ugar68

Для начала надо понять что хочется.

Что значит ловил сигнал  вверх\вниз?

То что я привёл это условие совпадения цветов всех индикаторов на текущем баре. В данном случае все красные. 


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
sviter
3 минуты назад, Ugar68 сказал:

Для начала надо понять что хочется.

Что значит ловил сигнал  вверх\вниз?

То что я привёл это условие совпадения цветов всех индикаторов на текущем баре. В данном случае все красные. 

мне нужно сделать следущее, что бы именно М5  ловил цвет (зеленый-вверх\красный-вниз) на первой своей свече(при смене цвета на первой свече) и открывал определенное условие, а старшие таймфреймы просто как фильтры были. чтоб когда М5 хочет покупать к примеру, то на старших тайфрэймах был тот же цвет

Link to post
Share on other sites
Ugar68

Значит на М5 смена цвета с зелёного на красный. Но тогда надо значение индикатора на 3 барах, а не на 2.

AO_0 = iAO(NULL, PERIOD_M5, 0);
AO_1 = iAO(NULL, PERIOD_M5, 1);
AO_2 = iAO(NULL, PERIOD_M5 , 2);

Сначала цвет был зелёным AO_1>AO_2, потом стал красным AO_0<AO_1. Добавляем остальные красные, получается:

if(AO_1 > AO_2 && AO_0 < AO_1 && AO_0_15 < AO_1_15 && AO_0_30 < AO_1_30 && AO_0_1 < AO_1_1)

 


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
  • 4 weeks later...
sviter

Добрый день!
Делаю скрин экрана

string filename = "ChartScreenShot" + "CHART_OPEN" + ".png";
   bool scCapture = ChartScreenShot(0,filename,800,600,ALIGN_RIGHT);
   if (scCapture) 
    {
      PrintFormat("Take screenshot successful");
    } else {
      PrintFormat("Take screenshot failure");
    }

и он сохраняется по стандартному пути \MQL4\Files, но мне надо этот скрин переотправлять при отдельных случаях! Подскажите как мне прописать путь, что бы я это мог сделать??? ато мне всегда бьет ошибку: The specified file could not be found.

Link to post
Share on other sites
Ugar68

\MQL4\Files это безопасная песочница. В терминалах MQL4, MQL5 не предусмотрено использование любых путей. Только \MQL4\Files и общяя папка всех терминалов. Если надо работать с другими путами, придётся использовать возможности других языков программирования. Например с помощью DLL.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
sviter

так а как мне достать этот скрин? 

какой путь писать?

Link to post
Share on other sites
Ugar68

Проще всего вручную через терминал. Файл - Открыть каталог данных - \MQL4\Files

 

При установке и запуске терминала по умолчанию, он создаёт свой каталог данный в c:\Users\Учётная запись\AppData\Roaming\MetaQuotes\Terminal\

При запуске в портативном режиме каталог данных находится в каталоге терминала

 

Общая папка для всех терминалов c:\Users\Учётная запись\AppData\Roaming\MetaQuotes\Terminal\Common\Files\


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
Andres74

Здравствуйте, коллеги.

Вопрос в техподдержку. Возможно я не первый задаю его, но почему при реальной стоимости пункта на XAUUSD - 1USD

https://yadi.sk/i/QOtZNDVSrWx7vw

Функция SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE); упорно показывает 0.1USD

https://yadi.sk/i/u6I2sHysH9LsuA

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

З.Ы. Терминал МТ5

Edited by Andres74
Link to post
Share on other sites
  • 3 weeks later...
BidAsk

Здравствуйте, уважаемые программеры.

В далёких 2007-2008 годах изучил язык mql4 по учебнику С.Ковалёва  и другим источникам, потом это дело забросил.

Сейчас решил освежить память и столкнулся со следующим: функций Start(), Init() и, скорее всего, других тоже более нет в этом языке, в виду чего учебник С.Ковалёва более не актуален.

Вопрос. Где можно найти приличную актуальную обучалку языку mql4?


ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
Malcolm
1 час назад, BidAsk сказал:

функций Start(), Init() и, скорее всего, других тоже более нет в этом языке,

Как это нет? Есть они. Вот только пишутся с маленькой буквы, в MQL4 регистр вообще очень важен. 

Или вы все-таки про MQL5 , то есть язык для 5го МТ? Там вроде изменений много, может этих функций и нет уже. 

 

 

2020-04-14_01-10-21.png

Edited by Malcolm
Link to post
Share on other sites
BidAsk
1 минуту назад, Malcolm сказал:

Как это нет? Есть они

это старый mql4

в новом этих функций нет:

Предопределенные функции init(), deinit() и start() остались для совместимости, но вместо них теперь можно использовать OnInit(), OnDeinit(), OnStart(), OnCalculate(), OnTick()

язык сильно изменился с 2008-го года

  • Upvote 1

ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
Ugar68

Не думаю что тот кто писал на старом языке, не сможет писать на новом. Если не нравятся классы и структуры, вполне можно обойтись без них, дедовским процедурным методом. Всё же есть новшества в работе. Справочник надо внимательно читать.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
BidAsk
2 минуты назад, Ugar68 сказал:

Справочник надо внимательно читать

а кроме справочника есть приличная обучалка актуальному mql4?


ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
RazorFish
3 минуты назад, Ugar68 сказал:

Если не нравятся классы и структуры, вполне можно обойтись без них

 

Это-ж вроде все к MQL5 относится?


Don't throw your pearls before the pigs, lest perhaps they trample them under their feet, and turn and tear you to pieces.

Link to post
Share on other sites
BidAsk
1 минуту назад, RazorFish сказал:

 

Это-ж вроде все к MQL5 относится?

mql4 максимально приблизили к mql5, насколько я понимаю


ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
Ugar68
3 минуты назад, RazorFish сказал:

 

Это-ж вроде все к MQL5 относится?

В MQL5 без классов можно обойтись, но без структур уже нет. В MQL4 можно и без структур и без классов обойтись.

Edited by Ugar68

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
Ugar68
5 минут назад, BidAsk сказал:

а кроме справочника есть приличная обучалка актуальному mql4?

К сожалению не встречал.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites
BidAsk
5 минут назад, Ugar68 сказал:

В MQL5 без классов можно обойтись, но без структур уже нет. В MQL4 можно и без структур и без классов обойтись.

это получается, что mql4 более универсален, чем mql5?


ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
RazorFish
2 минуты назад, BidAsk сказал:

это получается, что mql4 более универсален, чем mql5?

 

MQL5 вообще не нужен. Его придумали и сделали несовместимым с MQL4 с единственной целью - принудить разработчиков отказаться от поддержки MetaTrader4. 


Don't throw your pearls before the pigs, lest perhaps they trample them under their feet, and turn and tear you to pieces.

Link to post
Share on other sites
Ugar68
1 минуту назад, BidAsk сказал:

это получается, что mql4 более универсален, чем mql5?

Он проще, для тех кто знает старый. Про универсальность, пожалуй нет. Возможностей в MQL5 больше. Например в MQL5 можно выбрать в истории удалённый отложенный ордер и узнать причину удаления. Ну другого функционала больше. В MQL4 нельзя узнать причину удаления. В общем, MQL5 возможностей больше, он универсальней, но и сложнее.

  • Thanks 1

Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...