Ваши вопросы по языку MQL4

adamir

Активный участник
Я уже 3 дня объясняю. Не понимает, возможно проблемы с переводом.

Nie je možné nepoužívať profily. Je možné používať len profil "default". V tom prípade môžem použiť len jeden pár (jednu šablónu) pre jeden MT4. To nepotrebujem.

Prostá otázka: Napíšete robot, ktorý zmení aktuálny profil za nejaký iný? Na základe equity.


Это не возможно, чтобы не использовать профили. Он может быть использован в качестве профиля "по умолчанию". В этом случае, я могу использовать только одну пару (один шаблон) на один MT4. Мне не нужно.

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

Ugar

Гуру форума
Nie je možné nepoužívať profily. Je možné používať len profil "default". V tom prípade môžem použiť len jeden pár (jednu šablónu) pre jeden MT4. To nepotrebujem.

Prostá otázka: Napíšete robot, ktorý zmení aktuálny profil za nejaký iný? Na základe equity.


Это не возможно, чтобы не использовать профили. Он может быть использован в качестве профиля "по умолчанию". В этом случае, я могу использовать только одну пару (один шаблон) на один MT4. Мне не нужно.

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

В MQL4 нет функции смены профиля. Возиться с dll желания нет. Да и сама работа с профилями не надёжна, так как они не постоянны и могут видоизменяться. Шаблоны же остаются такими какими были сохранены.
В этой ветке форума задают вопросы те кто сам пишет программы если возникли трудности. Просьбы о написании роботов размещают в другой ветке http://forexsystemsru.com/yazyk-programmirovaniya-mql4/65203-predlozheniya-po-avtomatizacii-torgovli-31.html
 

adamir

Активный участник
Любое количество шаблонов можно применять к любому количеству символов и использовать в любом количестве терминалов.

В MQL4 нет функции смены профиля. Возиться с dll желания нет. Да и сама работа с профилями не надёжна, так как они не постоянны и могут видоизменяться. Шаблоны же остаются такими какими были сохранены.
В этой ветке форума задают вопросы те кто сам пишет программы если возникли трудности. Просьбы о написании роботов размещают в другой ветке http://forexsystemsru.com/yazyk-programmirovaniya-mql4/65203-predlozheniya-po-avtomatizacii-torgovli-31.html
Ďakujem za spoluprácu. (Ja som zvyknutý problémy riešiť, nie sa im vyhýbať).

Благодарим Вас за сотрудничество. (Я привык решать проблемы, а не избегать их).
 

asers1111

Активный участник
Добрый день.Уважаемые мастера mql ,подскажите как в сове открыть серию ордеров по индикатору?Сам сов открывает по кнопкам,выведенным в чарте.Индикатор я вписал в сов.Условие сделки записал....Только нужно вместо моих OrderSend и DeleteOrders(я даже сами функции не вписывал в сов) как-то инициализировать нажатие кнопок советника Buy ,Sell и Close All.......Автора сова сейчас застать не могу - он появляется либо поздно,либо рано очень.С ребенком сижу и комп не включить в такое время.
 

Вложения

  • Sniper_v2_LexLmod.mq4
    66,4 КБ · Просмотры: 29
  • @Ratio_MACD_v3_2_alert.mq4
    10,4 КБ · Просмотры: 24

vadimww

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

Ugar

Гуру форума
Привет всем.Подскажите,при перезапуске советника ,сов открывает ордера по новой те которые были открыты ранее,что за это отвечает?как избежать?сов подхватывает старые ордера и выставляет новые
Значит так он написан. Здесь нет экстрасенсов.
 

ddima200

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

При работе с ордерами есть понятие идентификационное ("магическое") число выбранного ордера. Скорей всего в советнике не идет проверка данного числа.
 

Understanding

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

innovision

Новичок форума
Всем здравствуйте)

Прошу помощи по следующему вопросу:
- как програмно узнать общее количество баров отдельных графиков по ChartID(), запустив индикатор/скрипт/эксперт, запущенный в "третьем" окне.
Имеется ввиду не "видимых", а всего баров в окне

Это тоже что покажет предопределенная переменная
Код:
Bars
рассчитанная на каждом нужном окне.

Эти две функции не подходят
Код:
long bars1=ChartGetInteger(chart_ID,CHART_WIDTH_IN_BARS);
long bars2=ChartGetInteger(chart_ID,CHART_FIRST_VISIBLE_BAR);
 

AlexeyVik

Программист mql4 mql5
Всем здравствуйте)

Прошу помощи по следующему вопросу:
- как програмно узнать общее количество баров отдельных графиков по ChartID(), запустив индикатор/скрипт/эксперт, запущенный в "третьем" окне.
Имеется ввиду не "видимых", а всего баров в окне

Это тоже что покажет предопределенная переменная
Код:
Bars
рассчитанная на каждом нужном окне.

Эти две функции не подходят
Код:
long bars1=ChartGetInteger(chart_ID,CHART_WIDTH_IN_BARS);
long bars2=ChartGetInteger(chart_ID,CHART_FIRST_VISIBLE_BAR);
Ну попробуй iBars("EURUSD", PERIOD_H1); Это именно то-же самое что и Bars для текущего графика.
Ну а дальше можно определить для какого окна, какой там период и именно это значение подставить.
 

innovision

Новичок форума
Ну попробуй iBars("EURUSD", PERIOD_H1); Это именно то-же самое что и Bars для текущего графика.
Ну а дальше можно определить для какого окна, какой там период и именно это значение подставить.

Это будет работать для стандартных ТФ-мов..
А что делать с НЕ стандартными?)
 

innovision

Новичок форума
опишу чуть подробнее..
есть индикатор рендж-баров, строящий их на оффлайн графиках..
в самом терминале задано макс. кол-во баров в окне = "30 000"
как только кол-во всех баров на оффлайн графике превышает 30 000 - график "сыпется" ))
моя задача - сделать отдельный индюк на "третьем" (=постороннем) графике, который переберет окна, узнает оффлайны, узнает кол-во уже существующих (нарисованных рендж-индюком) баров и скажет алертом что мол на таком то оффе осталось 1000 баров свободных (29 000 уже заполнено)

Увеличить 30 000 до 50 000 и т.д. - не вариант особо.. окон в терминале довольно много и весь терминал начинает серьезно подтормаживать поскольку эти 50 000 будут во всех абсолютно окнах

еще момент - рендж-индикатор скомпилен в МТ раннего билда .. в 500-м как минимум компилится корректно, я бы мог узнать это кол-во (30 000) через
int terminal_maxbars=TerminalInfoInteger(TERMINAL_MAXBARS);
и сделать алерт в самом рендж-индюке, но тот билд и ниже еще не в курсе такой фукции

такая вот трабла... подскажите, кто сталкивался или предложите решение
 

Understanding

Активный участник
Сделал 3 "выборки" из 7 в ТЗ
Внимательно посмотри - оно - нет? )

Крутейше) Спасибо) Если еще все остальные цвета радуги в этом-же стиле в индикаторе увижу, то вот оно - счастье!)

P.S. и маленькая просьба: если можно, то очень желаю получить индикатор в виде .mq4 файла, чтоб увидеть метод кодинга, т.к. я тоже учу язык MQL и легче учиться и понимать работу индикатора/сова, когда изучаешь код.
 

Understanding

Активный участник
Сделал 3 "выборки" из 7 в ТЗ
Внимательно посмотри - оно - нет? )

Дополнение к моему предыдущему сооб. Хочется вместо "Value" в окне данных (вызываемое по Ctrl+D) видеть тип линии (EMA или SMA и в скобках период МА-шки). И, было бы супер, вынести показатель цвета линии в окно данных. Правда, не знаю, можно ли цвет вставлять в окно данных? - если нельзя, то хотя бы сделать на подобии разделителя, например: идет строка с названием группы по цвету - Gold, а далее список включенных в эту группу МА-шек строками ниже, когда закончилась группа Gold, то пишется строка с последующим цветом, а ниже линии в этой группе цвета.
 

Understanding

Активный участник
//+------------------------------------------------------------------+
//| LinearRegressionChannel.mq4 |
//| dimicr |
//| _http://www.signalsbg.com |
//| _SignalsBG.com - development of trading tools for Metatrader |
//////////////////////////////////////////////////////////////////////
#property copyright "Copyright © 2008 signalsbg.com"
#property link "http://www.signalsbg.com"
#property indicator_chart_window

#property indicator_buffers 3
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_color1 Aqua
#property indicator_color2 SpringGreen
#property indicator_color3 OrangeRed

extern bool UseClose = true;
extern int barsToCount=250;

double LR_line[];
double Sup_line[];
double Res_line[];

//////////////////////////////////////////////////////////////////////
int init()
{
//IndicatorShortName("LinearRegressionChannel:"+barsToCount);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,LR_line);
SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Sup_line);
SetIndexEmptyValue(1,0.0);

SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,Res_line);
SetIndexEmptyValue(2,0.0);


return(0);
}

//////////////////////////////////////////////////////////////////////
int deinit()
{
return(0);
}

//////////////////////////////////////////////////////////////////////
int start()
{
// variables
double a,b,c,
sumy=0.0,
sumx=0.0,
sumxy=0.0,
sumx2=0.0,
h=0.0,l=0.0;
int x;

// calculate linear regression

for(int i=0; i<barsToCount; i++)
{
sumy+=Close;
sumxy+=Close*i;
sumx+=i;
sumx2+=i*i;
}

c=sumx2*barsToCount-sumx*sumx;

if(c==0.0)
{
Alert("Error in linear regression!");
return;
}


// Line equation
b=(sumxy*barsToCount-sumx*sumy)/c;
a=(sumy-sumx*b)/barsToCount;

// Linear regression line in buffer
for(x=0;x<barsToCount;x++)
LR_line[x]=a+b*x;




// Use PRICE_CLOSE for support-resistance
if (UseClose)
for(x=0;x<barsToCount;x++)
{
if(Close[x]-LR_line[x] > h) h = Close[x]-LR_line[x];
if(LR_line[x] - Close[x]> l) l = LR_line[x] - Close[x];
}

// Use HIGH - LOW
else
for(x=0;x<barsToCount;x++)
{
if(High[x]-LR_line[x] > h) h = High[x]-LR_line[x];
if(LR_line[x] - Low[x]> l) l = LR_line[x] - Low[x];
}

// Drawing support - resistance lines
if (h>l)
{
for(x=0;x<barsToCount;x++)
{
Sup_line[x]=a-h+b*x;
Res_line[x]=a+h+b*x;
}
}
else
{
for(x=0;x<barsToCount;x++)
{
Sup_line[x]=a-l+b*x;
Res_line[x]=a+l+b*x;
}
}

LR_line[x] = 0.0;
Sup_line[x] = 0.0;
Res_line[x] = 0.0;

return(0);
}



Помогите пожалуйста добавить/изменить индикатор. Хочу поменять отображение в окне данных вызываемого по Ctrl+D. Чтоб в окне данных отображались линии не как теперь - "Value", а "Upper Line", "Middle Line", "Lower Line" - соответственно. Спасибо.
 
Последнее редактирование модератором:

Andy200577

Новичок форума
Здравствуйте!
Хочу задать такой вопрос по поводу ограничения работы советников во времени.
Если мы хотим ограничить торговлю советника в режиме реального времени, то это можно сделать с помощью условия в начале void OnTick() { if(TimeCurrent() > D'дата и время') return;.....}. Но только вот до этой даты советника можно тестировать в тестере стратегий МТ4, т.к. текущее время моделируется на период теста. Можно ли как-то сделать, чтоб при достижении указанной даты нельзя было также использовать советника и в тестере стратегий?
Спасибо.
 
Последнее редактирование:

CastEt

Активный участник
Ну есть ещё TimeLocal(); :) или dll подцепить и проверку времени и не только мутить уже там...
А оно вам надо, ну сможет умник подготовив историю запустить чудо-бота на котировках отправленных в прошлое, но он или задолбается так делать или временной лаг всю малину спортит.
 

Understanding

Активный участник
innovision, Благодарствую!) То, что надо) Только увидеть бы полностью все МА-шки этой "Радуги" в комплекте. Ну и, если можно, то чтоб в окне данных разделялись разделителями по цвету. Например, перед МА-шкой (2) идет строка в окне данных указывающая на цвет группы, потом по возрастанию идут МА-шки с указанием данных вместо "Volume" тип линий (EMA, SMA, WMA и т.д.) и в скобках период МА-шки (2). Чтоб это выглядело так:

Ctrl+D в окне данных видим:

Gold
EMA (2) 0.77643
EMA (3) 0.77670
DeepSkyBlue
... и далее.
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
опишу чуть подробнее..
есть индикатор рендж-баров, строящий их на оффлайн графиках..
в самом терминале задано макс. кол-во баров в окне = "30 000"
как только кол-во всех баров на оффлайн графике превышает 30 000 - график "сыпется" ))
моя задача - сделать отдельный индюк на "третьем" (=постороннем) графике, который переберет окна, узнает оффлайны, узнает кол-во уже существующих (нарисованных рендж-индюком) баров и скажет алертом что мол на таком то оффе осталось 1000 баров свободных (29 000 уже заполнено)

Увеличить 30 000 до 50 000 и т.д. - не вариант особо.. окон в терминале довольно много и весь терминал начинает серьезно подтормаживать поскольку эти 50 000 будут во всех абсолютно окнах

еще момент - рендж-индикатор скомпилен в МТ раннего билда .. в 500-м как минимум компилится корректно, я бы мог узнать это кол-во (30 000) через
int terminal_maxbars=TerminalInfoInteger(TERMINAL_MAXBARS);
и сделать алерт в самом рендж-индюке, но тот билд и ниже еще не в курсе такой фукции

такая вот трабла... подскажите, кто сталкивался или предложите решение
К сожалению я не интересовался никогда рендж-барами и не проверял какие функции и как работают на них, но если Bars подсчитывает количество баров, то и iBars вроде-бы должен работать. Ну и самое простое это исправить рендж-индикатор под новые требования.
 
Верх