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

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


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

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

В уроках ведь рассматривали как делать подсчет ордеров.
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >= 0; trade --)
{
OrderSelect(trade, SELECT_BY_POS);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}
return (count);
}

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

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

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

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

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

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

Перейти

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

Перейти

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

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

Все правильно. Это функция расчета количества уже открытых ордеров.
А надо обнулить переменную количества ордеров ПОСЛЕ закрытия.
Как это сделать -- х.з.

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

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


Все правильно. Это функция расчета количества уже открытых ордеров.
А надо обнулить переменную количества ордеров ПОСЛЕ закрытия.
Как это сделать -- х.з.



int count = 0;

Вот это и есть обнуление. Ты сперва присваеваешь 0 потом уже считаешь, если ордера есть, то будет 1, если нет то так и останется 0.
Ссылка на сообщение
Поделиться на другие сайты

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

А надо обнулить переменную количества ордеров ПОСЛЕ закрытия.


Дык, переменная обнуляется при каждом вызове функции. Только надо исправить:
Цитата

int Count = 0;

на
Цитата

int count = 0;

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

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

Всем привет!
Ребята, у меня возник вопрос: как сделать, что бы советник брал во внимание старшие таймы. Например входит на М15, но тренд по МА смотрит на Н1, Д1 и дальше. Как то так.... буду очень благодарен!

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

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


Всем привет!
Ребята, у меня возник вопрос: как сделать, что бы советник брал во внимание старшие таймы. Например входит на М15, но тренд по МА смотрит на Н1, Д1 и дальше. Как то так.... буду очень благодарен!


для МА можно увеличить период во столько на сколько большее высшей тф твоего, т.е. с тф м15 ты хочешь посмотреть ма на h1 с периодом 10, тф h1 больше м15 на 4, нужно период (10) умножить на 4.
Ссылка на сообщение
Поделиться на другие сайты

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


Всем привет!
Ребята, у меня возник вопрос: как сделать, что бы советник брал во внимание старшие таймы. Например входит на М15, но тренд по МА смотрит на Н1, Д1 и дальше. Как то так.... буду очень благодарен!



Нужно просто указать функции нужный таймфрейм:

double ma_h1 = iMA(NULL, PERIOD_H1,..);
double ma_d1 = iMA(NULL, PERIOD_D1,..);
Ссылка на сообщение
Поделиться на другие сайты

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

Приветствую, а скажите пожалуйста, почему файл MQL4 Source File невозможно декомпильнуть, в чем может быть причина? заранее спасибо.

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

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

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

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

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


Приветствую, а скажите пожалуйста, почему файл MQL4 Source File невозможно декомпильнуть, в чем может быть причина? заранее спасибо.


Что значит "MQL4 Source File"? С расширением *.mq4 или *.ex4?
Если это файл *.ex4 , то проблема может быть в новом билде терминала.
Декомпайлер возможно не поддерживает последние билды.

А лучше выложить скрин с ошибкой :)
Ссылка на сообщение
Поделиться на другие сайты

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

А вот сам файл,. @-)


Добавлено: 19-07-2013 12:13:37

у кого получилось компильнуть его, поделитесь, просто я в этом деле чайник, мягко говоря :-s

Ultimate_Market_Harmonics.mq4

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

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

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

P.S. Стратегия изначально рассчитана на золото, но я тестил на евробаксе Н1, т.к. с золотом какие-то заморочки.

Gold.mq4

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

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

Всем привет.
Есть проблема с использованием значений индикаторов в советнике.
И так, нужные мне индикаторы для советника - ExtremeTMALine, TMASlope.v1.5 Normalized, Heiken Ashi.
С первым, вроде как, всё понятно - #property indicator_color2 White - верхняя граница (Индекс линии индикатора - 1)
#property indicator_color3 White - нижняя граница (Индекс линии индикатора - 2)

А вот с остальными двумя что-то непонятное.
TMASlope и Heiken Ashi, по идее, должны выдавать только одно дробное значение на каждый тик, а вот параметров подобных ExtremeTMALine у каждого индикатора несколько.
Если с Heiken Ashi ещё можно поиграться с цветами и кое как вкурить о чем там(чем щас и занят).
То с TMASlope не понятно вообще какой именно индекс линии индикатора надо ставить в iCustom для получения значения TMASlope на каждом тике?

Если вкратце, то помогите определить индексы линий индикатора для TMASlope и Heiken Ashi для получения их значения на каждом тике.

UPD. С TMASlope и Heiken Ashi, вроде как, разобрался, пока на истории показывают правильные результаты, точнее можно будет проверить когда рынок снова затикает(выдрал формулы из ExtremeTMAInfo).
А вот с ExtremeTMALine всё оказалось наоборот, работают с 0 по 3-й индексы линий, но не один из них не соответствует линиям(уровням) которые этот индикатор рисует в окне инструмента. HELP SOMEONE, HELP!

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

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

Добрый день.

В новом уроке, первый трейлинг не тралит Sell-ордера.

Цитата

if (OrderStopLoss() > Ask + (TrailingStop + TrailingStep)*Point)


Если стопа нет, значит OrderStopLoss() == 0.

xbms, специально так сделал, чтобы думать учились?
Я чуть голову не сломал :)
Ссылка на сообщение
Поделиться на другие сайты

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

Вопрос такой. Есть два отдельных советника - один торгует, другой тралит. Если их поставить на одну валютную пару, но в разные окна и передать magic торгующего советника в трал. Будет работать?


Добавлено: 20-07-2013 16:04:32

Еще вопрос. С 3-х и 5-значным брокером понятно. А если в данном инструменте (например, золото) два знака после запятой, как тогда быть? Чтобы все правильно обрабатывалось. Изменено пользователем Cerebellum
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Cerebellum
1. Да.
2. Если советник тралит только символ на который установлен, то на золоте, достаточно выставить адекватные TrailingStop и TrailingStep. Если трал универсальный (тралит все ордера по всем парам), для золота можно вписать проверку
Цитата

if (OrderSymbol() == "XAUUSD")
{
TrailingStop *= x;
TrailingStep *= x;
StopLoss *= x;
Slippage *= x;
}


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

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


x - вынести во внешние переменные.


И чему равно Х? Я все-таки не понял нужно ли что-то менять, если 2 знака после запятой?
На 3- и 5-знаках умножаем на 10. А если 2 знака?
Ссылка на сообщение
Поделиться на другие сайты

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

И чему равно Х?

Золотом не торгую. Теоретически 30 - 100.
Цитата

На 3- и 5-знаках умножаем на 10. А если 2 знака?

Не умножаем.
Проверка на количество знаков котировок брокера - это вторично. Это сделано для универсальности, если для четырёхзначного SL будет 50 пунктов, то для пятизначного советник автоматически поставит 500. Для себя это можно вообще не писать, ИМХО.

Здесь важно понять, для чего нужна Point (размер пункта текущего инструмента в валюте котировки). Умножая наш SL в 50 пунктов на Point, получаем (4-х знаке) 0,0050 (теперь его можно вычитать из цены, или прибавлять). На золоте мы получим 0,50. Просто для золота 50 пунктов - это, обычно, меньше чем спред, то TrailingStop = 1000, а TrailingStep = 400.
Как-то так ;)

ДЗ Parabolic:

SAR_Trailing_0001.mq4

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

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

Здравствуйте!
Немного переделал советник по ТМА.
Идея такая: он открывает ордера на границах канала и плюс еще лимитный ордер.
При срабатывании лимитника открывается новый лимитный ордер и т.д.
Закрытие ордеров на противоположных границах.
Вот только работает он как-то криво. Лимитники строчит на каждом тике.
В чем ошибка?

Скрин и советник во вложении.
С уважением.

123.JPG
Test_TMA_Limit.mq4

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

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


Здравствуйте!
Немного переделал советник по ТМА.
Идея такая: он открывает ордера на границах канала и плюс еще лимитный ордер.
При срабатывании лимитника открывается новый лимитный ордер и т.д.
Закрытие ордеров на противоположных границах.
Вот только работает он как-то криво. Лимитники строчит на каждом тике.
В чем ошибка?

Скрин и советник во вложении.
С уважением.


Цитата

if(Bid >= PriceHigh && CountSellLimit() == 0)

OT = NormalizeDouble(Bid + Otstup*Point, Digits);
OrderSend(Symbol(), OP_SELLLIMIT, Lots, OT, Slippage, 0, 0, comment, Magic, 0, Red);



нет скобок после if, поэтому условие описанное в этом операторе не ограничивает открытие ордера. на бай таж фигня.

Добавлено: 25-07-2013 04:57:00

Помогите разобраться с вопросом в этом посте:
http://tlap.com/forum/ugolok-programmista/13/obuchenie-yazyku-mql4-pod-metatrader-4/4034/?do=findComment&comment=81313 Изменено пользователем bizforex
Ссылка на сообщение
Поделиться на другие сайты

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


Ребят подскажите как в массивы снять данные файла истории котировок?



double array1[][6];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("Current bar ",TimeToStr(array1[0][0]),"Open", array1[0][1]);

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

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


double array1[][6];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("Current bar ",TimeToStr(array1[0][0]),"Open", array1[0][1]);



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

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

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

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

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

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

Войти

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

Войти

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


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

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