Учусь писать советников на MQL4 прочитал весь материал, подан очень сложно. Хочу написать примитивный советник на мувингах в целях практики значит записываю так
......
выбивается предупреждение и советник не работает return value of 'OrderSend' should be checked кто может подсказать почему?
Код эксперта должен выполнятся внутри функции OnTick(). Так как у вас эта функция пустая (в ней нет вызова вашей пользовательской функции Start()) то советник ни чего не делает (работает в холостую).
Код эксперта должен выполнятся внутри функции OnTick(). Так как у вас эта функция пустая (в ней нет вызова вашей пользовательской функции Start()) то советник ни чего не делает (работает в холостую).
По теме вопроса.
Специальные функции
Функции обработки событий
Стоит определиться start() или OnTick() использовать. В MQL4 данность еще актуальна.
start() пока ещё подсвечивается как встроенная функция и всё ещё используется в древних древних кодах кажется за место OnTick, да в древних советниках именно start() за место OnTick()
Это я знаю. А вот как компилятор будет работать встретив в коде две функции предназначение которых вызываться при получении нового тика, при этом одна из них устаревшая? Как минимум надо использовать какую то одну из них, а не обе вместе. Функция Start() оставлена для совместимости с устаревшими версиями и на данный момент ее уже ни кто не использует. Я думаю, что топик стартер просто начитался где то старых статей по Mql4.
Это я знаю. А вот как компилятор будет работать встретив в коде две функции предназначение которых вызываться при получении нового тика, при этом одна из них устаревшая? Как минимум надо использовать какую то одну из них, а не обе вместе. Функция Start() оставлена для совместимости с устаревшими версиями и на данный момент ее уже ни кто не использует. Я думаю, что топик стартер просто начитался где то старых статей по Mql4.
Посмотрите повнимательней CodeBase и найдёте в достаточно свежих кодах и extern и start() не только в советниках, но и в индикаторах.
extern
extern то чем не угодил?
extern то чем не угодил?
Сам не знаю. Отвык и уже бросается в глаза как старьё. Наверное так-же как Open[i] и open[i] в индикаторах. Казалось-бы нет разницы, а уже непривычно.
Сам не знаю. Отвык и уже бросается в глаза как старьё. Наверное так-же как Open[i] и open[i] в индикаторах. Казалось-бы нет разницы, а уже непривычно.
Разница есть. В 4-ке есть моменты, когда нужно изменить значение переменной в процессе выполнения программы. extern с этой задачей справиться, input -не справиться.
Из справки:
Подобно input-переменным, extern-переменные также определяют входные параметры mql4-программы, они доступны из окна свойств. В отличии input-переменных, значения extern-переменных могут быть программно изменены в процессе работы программы.
start() пока ещё подсвечивается как встроенная функция и всё ещё используется в древних древних кодах кажется за место OnTick, да в древних советниках именно start() за место OnTick()
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Учусь писать советников на MQL4 прочитал весь материал, подан очень сложно. Хочу написать примитивный советник на мувингах в целях практики значит записываю так
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int Period_MA_1=6; здесь в заглавной части можно указать свои периоды
extern int Period_MA_2=10; здесь в заглавной части можно указать свои периоды
extern int Period_MA_3=1; здесь в заглавной части можно указать свои периоды
extern int Magic=2345; магический номер пока ничего ещё не расписал и его не использую
extern double Lots=0.1; здесь в заглавной части можно задавать программе значение лотажа чтоб не лесть в исходник
//---
int OnInit() основная специальная функция по умолчанию
{
//---
return(INIT_SUCCEEDED); выход из неё
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) основная специальная функция по умолчанию
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start() моя специальная функция в которой я буду записывать нужный мне параметры и значения
{
double MA_1; здесь я указал что у меня есть переменная MA_1 и указал её тип
MA_1=iMA(Symbol(),0,6,0,1,0,0); здесь я расписал свою переменную что она будет базироваться на индикаторе МА и указал параметры где, нет привязки к символу Symbol(), ко времени 0, период я указал 6, сдвиг индикатора 0, метод вычисления экспоненциальное среднее 1, цена закрытия используется 0 и без смещения 0
double MA_3;
MA_3=iMA(Symbol(),0,1,0,1,0,0);
{
if(MA_3 > MA_1) здесь я написал условие if если 1 MA_3 скользящая имеет значение больше 6 MA_1
OrderSend(Symbol(),0,Lots,Ask,0,0,0,NULL,0,0,Green); откроется сделка без привязки к символу Symbol(), цены учитываются по закрытию 0 с лотажом который прописывается в заглавной части, цену открытия указал Ask, без привязки к проскальзыванию 0 стопу 0 и тейк профиту 0, без комментария Null, магический ордер тоже не указывал 0, срок истечения ордера тоже не указывал написал ноль и цвет.
if(MA_3 < MA_1)
OrderSend(Symbol(),1,Lots,Bid,0,0,0,NULL,0,0,Red); обратное условие на продажу
return(0);
}
return(0);
}
выбивается предупреждение и советник не работает return value of 'OrderSend' should be checked кто может подсказать почему?