Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Господа программисты, при определенном размере массива если он полностью заполнен и поступает новое значение - выдаст ошибку или перепишет самое старое?

Какой индекс укажете туда и запишет, если индекс выйдет из размера массива - не запишет. Автоматом, как в индикаторах, в сове размерность не увеличивается и индексация не сдвигается - надо ручками прописывать.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано

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



Необходим текстовый - без всяких наворотов. Считывание - каждые пол часа. Этот индикатор необходим для общего представления, чтобы не открывать множество различных сайтов для сбора информации для анализа ситуации.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

здраствуйте. при созданий обьекта (ObjectCreate ("TREND_TEXT", OBJ_LABEL, 0, 0, 0) ),
редактирование ( ObjectSet ("TREND_TEXT", OBJPROP_FONT,"Times New Roman")) наткнулся на непонятную вещь, может кто знающий прокоментирует, что это глюк или я ошибся?
выскакивает предупреждение.

глюк.jpg

Изменено пользователем vitek01
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добрый день!
Подскажите мне, можно ли какой то функцией советника, включить стандартный TS в MT4? Я понимаю, что его можно включить руками, но когда много сделок, и очень резкие движения цены, то это просто не возможно.У меня в советнике есть кнопка на экране, специально для этого, но программный TrailingStop только включается(выставляет SL) но не тралит.

Изменено пользователем Сергей Попов
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ребят , скажите , возможно ли с кода страницы сайта https://ru.investing.com/economic-calendar/ найти ссылки на прямые источники , которые обновляют экономические данные ?

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


Добавлено: 21-12-2017 21:32:40

Тут наверное потребуются также знание PHP языка ? Изменено пользователем 4er58
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
4er58 нет там источника. Источников полно в инете, новостные индюки тоже есть, даже в исходном коде.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


4er58 нет там источника. Источников полно в инете, новостные индюки тоже есть, даже в исходном коде.



Ни одного нормально быстрого новостного индикатора в сети нету , если есть то показывают архив или дату выхода новостей , а быстро обновляемых фактических данных нету , один хлам в сети . Поэтому и просил сделать урок на основе сайта Инвестинг.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

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


Чтобы реализовать Ваше желание создайте тему с обзором новостных источников и доступных индюков. Я думаю найдутся желающие подправить код какого-нибудь индюка на получение новостей с инвестинг. Просто нужно красиво расписать проблему.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


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


Чтобы реализовать Ваше желание создайте тему с обзором новостных источников и доступных индюков. Я думаю найдутся желающие подправить код какого-нибудь индюка на получение новостей с инвестинг. Просто нужно красиво расписать проблему.


Я ведь просил эту тему сделать в виде урока , чтобы что то подобное можно было самому писать . Да и такая тема с уроком хорошо бы развила дополнительные возможности программирования . Павел вроде говорил что эта тема в разработке , но смущает тишина , может вы у него спросите , что бы быть в курсе событий , вы же все там начальство друг друга знаете :)
Можете узнать , будет урок или нет , чтобы ни терять время и обращаться к фрилансерам ? Изменено пользователем 4er58
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
4er58 я исхожу из того, что Вы погружены в новостную тему и для форума Ваш обзор новостных ресурсов и индюков был-бы очень полезен, может быть всё-таки сделаете?
По поводу урока - задайте Павлу или Сергею в личку. Я их знаю так-же как и Вас.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


4er58 я исхожу из того, что Вы погружены в новостную тему и для форума Ваш обзор новостных ресурсов и индюков был-бы очень полезен, может быть всё-таки сделаете?
По поводу урока - задайте Павлу или Сергею в личку. Я их знаю так-же как и Вас.



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

Добавлено: 24-12-2017 13:42:07

Изменено пользователем 4er58
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ребята как в mql4 в редакторе добавить текст и чтобы при компиляции в советнике выходил мой текст?
Хочу сделать Баланс: , просадку и тп.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ребята как в mql4 в редакторе добавить текст и чтобы при компиляции в советнике выходил мой текст?
Хочу сделать Баланс: , просадку и тп.

Вы хотите увидеть некие параметры торговли на экране? Самое простое с помощью Comment("Баланс = ", AccountBalans())
Есть вариант через Label, но он посложнее
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите пожалуйста!!! Как мне в переменную x вставить значение котировки с которой началась торговая сессия?

Screenshot_13.png

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите пожалуйста!!! Как мне в переменную x вставить значение котировки с которой началась торговая сессия?

Вы хотите при запуске совы в настройках увидеть актуальную цену? Я не знаю как это сделать программно, только ручками.
Всех форумчан с наступающим!
Меня не будет неделю - поеду в Россию сыну снег показывать. :)
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите пожалуйста!!! Как мне в переменную x вставить значение котировки с которой началась торговая сессия?



Как то так (CSym::TodayOpenPrice()):


class CDT
{
public:
CDT() {}
~CDT() {}
static ENUM_DAY_OF_WEEK
DayOfWeek(const datetime time) { CDateTime dt; dt.DateTime(time); return(ENUM_DAY_OF_WEEK(dt.day_of_week)); }
static ENUM_DAY_OF_WEEK
DayOfWeek(void) { return(DayOfWeek(TimeCurrent())); }
static datetime DayStartTime(const datetime time) { CDateTime dt; dt.DateTime(time); dt.hour=0; dt.min=0; dt.sec=0; return(dt.DateTime()); }
static datetime DayStartTime(void) { return(DayStartTime(TimeCurrent())); }
}



class CSym
{
public:
CSym() {}
~CSym() {}
static string GetSymbol(const string symbol) { return(symbol == "" || symbol == NULL ? _Symbol : symbol); }
static datetime TodayOpenTime(const string symbol=NULL);
static double TodayOpenPrice(const string symbol=NULL);
}
//+------------------------------------------------------------------+
datetime CSym::TodayOpenTime(const string symbol=NULL)
{
datetime ses_open, ses_close;
if (!SymbolInfoSessionQuote(GetSymbol(symbol),CDT::DayOfWeek(),0,ses_open,ses_close))
_WL("eS","Unble to get session open/close info",0,return(0))
return(CDT::DayStartTime()+ses_open);
}
//+------------------------------------------------------------------+
double CSym::TodayOpenPrice(const string symbol=NULL)
{
double price_buf[];
ENUM_TIMEFRAMES tf=(ENUM_TIMEFRAMES)_Period;
tf=tf > PERIOD_D1 ? PERIOD_D1 : tf;
if (CopyOpen(GetSymbol(symbol),tf,TodayOpenTime(symbol),1,price_buf) != 1)
_WL("eS","",USR_GET_RATES_UNEXP_CNT,return(0))
return(price_buf[0]);
}
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Павел , или кто может , помогите пожалуйста декомпильнуть 2 новостных ex4 , первый индиктор IceFX.NewsInfo.v2.6.1 , он должен показывать актуальные данные но не хочет , второй сделан демо советником , показывает почти все что нужно .

IceFX.NewsInfo.v2.6.1.zip
investing.ex4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте, подскажите пожалуйста. Как написать советник на базе стрелочного индикатора?(его код прикрепляю чуть ниже). Дело в том что, я не могу придумать логику, по которой должна работать данная сова, заранее спасибо.
P.S. Советник не перерисовывает

Спойлер

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int NumBars=500;
extern string SoundFilename1="alert.wav";
extern string SoundFilename2="alert.wav";

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double spread;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexArrow(0,233);
SetIndexStyle(1,DRAW_ARROW);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexArrow(1,234);
spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int counted_bars=IndicatorCounted();
//----

int artp=7;
double dartp=7.0;
double cecf=0.7;
int satb=0;
int Shift=0;
bool river=True;
double Emaxtra=0;
double widcha=0;
double TR=0;
double Values[100];
int glava=0;
double ATR=0;
int J=0;
double Weight=0;
double r=0;
double r1=0;
int p=0;
int Curr=0;
double Range1=0;
double s=2;
double f=10;
double val1=0;
double val2=0;
double h11=0;
double h12=0;
double h13=0;
double const=0;
double orig=0;
double st=0;
double h2=0;
double h1=0;
double h10=0;
double sxs=0;
double sms=0;
double temp=0;
double h5=0;
double r1s=0;
double r2s=0;
double r3s=0;
double r4s=0;
double pt=0;
double pts=0;
double r2=0;
double r3=0;
double r4=0;
double tt=0;


if( Bars if( Close[satb - 2] > Close[satb - 1]) river = True; else river = False;
Emaxtra = Close[satb - 2];
Shift=satb-3;
while(Shift>=0) {
TR = spread+ High[Shift] - Low[Shift];
if( MathAbs(spread+ High[Shift] - Close[Shift + 1]) > TR ) TR = MathAbs(spread+ High[Shift] - Close[Shift + 1]);
if( MathAbs(Low[Shift] - Close[Shift + 1]) > TR) TR = MathAbs(Low[Shift] - Close[Shift + 1]);
if (Shift == satb - 3 ) {
for(J=0;Shift Values[J] = TR;
}
}
Values[glava] = TR;
ATR = 0;
Weight = artp;
Curr = glava;
for (J = 0;J ATR += Values[Curr] * Weight;
Weight -= 1.0;
Curr--;
if (Curr == -1) Curr = artp - 1;
}
ATR = 2.0 * ATR / (dartp * (dartp + 1.0));
glava++;
if (glava == artp) glava = 0;
widcha = cecf * ATR;
if (river && Low[Shift] river = False;
Emaxtra = spread+ High[Shift];
}
if (!river && spread+ High[Shift] > Emaxtra + widcha) {
river = True;
Emaxtra = Low[Shift];
}
if (river && Low[Shift] > Emaxtra) {
Emaxtra = Low[Shift];
}
if (!river && spread+ High[Shift] Emaxtra = spread+ High[Shift];
}
Range1 = iATR(NULL,0,10,Shift);
val1 = 0;
val2 = 0;
if (river) {
if (p != 1) r1 = Low[Shift] - Range1 * s / 3.0;
if (p == 1) r1 = -1.0;
if (r1 > 0) {
val1 = r1;
val2 = 0;
} else {
val1 = 0;
val2 = 0;
}
ExtMapBuffer1[Shift]=val1;

p = 1;
} else {
if (p != 2) r1 = spread+ High[Shift] + Range1 * s / 3.0;
if (p == 2) r1 = -1.0;
if (r1 > 0) {
val1 = 0;
val2 = r1;
} else {
val1 = 0;
val2 = 0;
}
ExtMapBuffer2[Shift]=val2;

p = 2;
}
Shift--;
}

//----
return(0);
}
//+------------------------------------------------------------------+

Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Народ, всех приветствую! Что-то никак не приходит учебник из первого поста на ящик. Так должно быть? Если что-то пропустил - сильно не пинать! Так понимаю, он ушел на доработку и не вернулся? >D-b

Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте. Пишу себе советник по уровнях и вот хочу узнать как можно вытащить значения экстремумов из индикатора "ZigZag" и провести по ним уровни.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Evendx есть разные зигзаги с 1 и 2 буферами, но суть одна - в буферах содержатся "0" между экстремумами, а когда он сформировался, то записывается цена. Сложность заключается в том, то это происходит не на 0 или 1 свече, а зависит от настроек зигзага и может быть 3, 5 и т.д.
Т.е. надо вычислить номер свечи на которой появляется вершина зигзага, типа: int n = (int)(zzSize / 2) + 1;
Затем в советнике по закрытии свечи проверять наличие вершины, типа: if ( newBar() ) newV = iCustom("ZigZag",..., n)
if ( newV > 0 ) // Здесь код пересчёта уровня
Имейте в виду - в одно-буферном Зигзаге верх и низ вершины строго чередуются.

Более простой для понимания вариант - это искать в цикле на каждом новом баре 2 верхних и 2 нижних вершины и строить уровни...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Evendx есть разные зигзаги с 1 и 2 буферами, но суть одна - в буферах содержатся "0" между экстремумами, а когда он сформировался, то записывается цена. Сложность заключается в том, то это происходит не на 0 или 1 свече, а зависит от настроек зигзага и может быть 3, 5 и т.д.
Т.е. надо вычислить номер свечи на которой появляется вершина зигзага, типа: int n = (int)(zzSize / 2) + 1;
Затем в советнике по закрытии свечи проверять наличие вершины, типа: if ( newBar() ) newV = iCustom("ZigZag",..., n)
if ( newV > 0 ) // Здесь код пересчёта уровня
Имейте в виду - в одно-буферном Зигзаге верх и низ вершины строго чередуются.

Более простой для понимания вариант - это искать в цикле на каждом новом баре 2 верхних и 2 нижних вершины и строить уровни...


А вы можете пожалуйста написать этот цикл кодом для Однобуферного ЗигЗага чтоб на выходе я мог получить отдельно все High экстремумы и Low экстремумы за последние 500 баров?
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...