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

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


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

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

все равно не работает! Привожу код еще раз со всеми исправлениями:


if (ticket>0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
{
if (OrderStopLoss()
else

if (NormalizeDouble(Ask {
SL = NormalizeDouble(OrderOpenPrice() - TralingStep*Point, Digits);
bool modify = OrderModify(ticket, OrderOpenPrice(), SL, OrderTakeProfit(), Blue);
}
else

return;


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

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

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

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

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

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

Перейти

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

Перейти

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

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


Мы-же здесь учимся кодировать... Я думаю если человеку нужен готовый код, то в гугле сразу найдёт.


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

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

nct21 Вы не все ошибки исправили из моего предыдущего поста - будьте внимательны...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

все равно не работает! вроде все поправил. текущий код для СЕЛЛ, бай вообще пока не трогаю!:


if (ticket>0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true)
{
if (OrderStopLoss()
else

if (Ask {
SL = NormalizeDouble(OrderOpenPrice() - TralingStep*Point, Digits);
bool modify = OrderModify(ticket, OrderOpenPrice(), SL, OrderTakeProfit(), Blue);
}
else

return;

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
nct21 по данно му фрагменту замечаний нет. Ставьте Print() после каждого if() с понятным комментом и смотрите как выполняется...
Ссылка на сообщение
Поделиться на другие сайты

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

Всем привет ! У меня вопрос, есть советник и индикатор к нему. Связка работает хорошо, дала за месяц 70% прибыли при 20% просадки. Автор говорит что советник не работает без индюка. Смотрю информацию по буферам индикатора в окне данных, но там только название индикатора в последней строчке и все. Может ли советник получать информацию от индикатора без буферов ? Сова бесплатно работает только на демо, хочу написать свою с использованием индикатора.

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

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

Может ли советник получать информацию от индикатора без буферов ? Сова бесплатно работает только на демо, хочу написать свою с использованием индикатора.

Может. Встречал несколько вариантов. А где индюк? а в тестере сова работает?
Ссылка на сообщение
Поделиться на другие сайты

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

Индюк выкладываю, имя файла изменено. для тестера автором написан другой советник - только для тестов. _http://www.myfxbook.com/members/AtnetFX/fx-levels/1208200

Levels.ex4

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
atnet Что-то Вы темните... ну-да ладно.
Индюк перерисовывает - 2 раза запустил на одном и том-же графике (он-лайн) показал разные уровни.
Индюк защищён - в защитах не силён - не моя тема. Чтоб на нём делать сову надо его исследовать, т.е. писать специальные совы и скрипты для исследования следов его работы. Т.е. что в буфере, доступ к графическим объектам. глобальных переменных вроде нет, но надо смотреть не создает ли сова файл, в который пишет данные индюк.
Много работы. т.к. Вы инфу не выкладываете, то занимайтесь сами.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Да мне то скрывать нечего, я ведь не автор. А так инфа находиться здесь

Спойлер


_http://forexsystems.ru/sovetniki-eksperty-foreks-roboty/78759-fx-levels-pro-monsters-%C2%A9-triada-dlya-effektivnoi-torgovli-indikator-ekspert-i-tester-4.html



Я лишь хотел узнать возможна ли работа без буферов. Теперь все понятно. Спасибо.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Всем привет!
Прошу помощи в решении слующей задачи:
выставлен отложенный ордер с последующей его модификацией. код модификации следующий void ModifyOrdersbuystop () // используется
{
for (int i=OrdersTotal()-1; i>=0;i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUYSTOP)
{
if (OrderOpenPrice()>high1+rasstoynie)
{
SL=NormalizeDouble(low1-rasstoynie,Digits);;
double TPbuy=NormalizeDouble(OrderOpenPrice()+(OrderOpenPrice()-SL)*Koef,Digits);

if (OrderStopLoss()!=SL)
if (OrderModify(OrderTicket(), bidbuy, SL,0,0))
{
Print(" Buystop изменен SL");
}
else Print (" Buystop НЕ изменен SL");
if (OrderTakeProfit()!=TPbuy)
if (OrderModify(OrderTicket(), bidbuy, SL, TPbuy,0,0))
{
Print(" Buystop изменен TP");
}
else Print (" Buystop НЕ изменен TP");
}
}
}
}
}
}
Задача следующая: после срабатывания отложенного ордера, необходимо запомнить и больше не изменять тейк профит рыночного ордера buy с тейкпрофитом, который был у buystop.
Например: отложенный ордер buystop выставлен по цене 1.5681 sl=1.5864. После модификации ордера buystop стало: цена 1.5723 sl=1.5912 tp=1.4526. Сработал ордер buystop и стал ордеров buy по цене 1.5723 sl 1.5912 tp 1.4526 (причем тейкпрофит рыночного ордера должен быть равен TP ордера buystop).

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Crik
Даже не понял в чём вопрос. Ну сработал ордер - зачем "запоминать" ТР чтоб его не менять? - просто его не меняйте и всё.
Зачем показали код? там кстати логическая ошибка - Вы когда СЛ меняете ставите ТР = 0, а потом меняете ТР и опять передаёте в функцию СЛ - может глючить и выдавать ошибку модификации. Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

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


Crik
Даже не понял в чём вопрос. Ну сработал ордер - зачем "запоминать" ТР чтоб его не менять? - просто его не меняйте и всё.
Зачем показали код? там кстати логическая ошибка - Вы когда СЛ меняете ставите ТР = 0, а потом меняете ТР и опять передаёте в функцию СЛ - может глючить и выдавать ошибку модификации.



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

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

так если отложенного ордера нет, то и и его тейкпрофит равен нулю. разве нет?

Ордера нет и тейка нет ! ;)
Вы о чём? Если о своём коде, то там идёт модификация отложки от текущего low
SL=NormalizeDouble(low1-rasstoynie,Digits);;
double TPbuy=NormalizeDouble(OrderOpenPrice()+(OrderOpenPrice()-SL)*Koef,Digits);
Я даже возомнил, что на каждой свече и поэтому указал на немного некорректный участок - т.е. отложка вроде-как была и даже ТР и СЛ у неё были...
Ссылка на сообщение
Поделиться на другие сайты

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

Привет всем :-H.

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

Может кто нибудь помочь!!!

SR_индикатор.zip

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

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

Здравствуйте! Подскажите как правильно использовать данные с этого индикатора, пытался использовать стандартные значения iCustom(NULL, 0, "LuKu_SSA_v30", SSA_Lag , SSA_NumComps, SSA_PeriodNorm, PCA_Lag, PCA_NumComps, PCA_PeriodNorm, MaMode, 3, 1) сразу перегружает память и терминал зависает, :(

SSA.zip

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

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

Дуплетом...
rva7171 индюк криво написан. в некоторых условиях может некорректно работать. +для старого билда. Исправлять долго - времени нет. Если хотите, чтоб кто-нибудь занялся исправлением - покажите его ценность.

AlanG по Вашему вопросу невозможно понять какой тип данных у переменных передаваемых в индюк, но если тупо посчитать количество внешних переменных индюка, то сильно не совпадает (в 2 раза). Рекомендую внести в вызов ВСЕ extern переменные, включая строковые, даже если это только подписи (можно ""). Индюк делает спектральный анализ, сопряжённый с вычислением матриц не детского размера (тысячи строк), поэтому даже в случае корректного вызова возможен завис МТ.

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

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



AlanG по Вашему вопросу невозможно понять какой тип данных у переменных передаваемых в индюк, но если тупо посчитать количество внешних переменных индюка, то сильно не совпадает (в 2 раза). Рекомендую внести в вызов ВСЕ extern переменные, включая строковые, даже если это только подписи (можно ""). Индюк делает спектральный анализ, сопряжённый с вычислением матриц не детского размера (тысячи строк), поэтому даже в случае корректного вызова возможен завис МТ.


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

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

При модификации ордера переодически показывает ошибку ordermodify error 1. первый и второй ордер модифицирует и без ошибок, а третий оредр модифицирует но выдает ошибку ordermodify error 1. в связи с чем это связано?

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Crik видимо пытаетесь модифицировать теми-же значениями. Пробуйте проверять СЛ и ТР перед модификацией на минимальное отклонение типа: if (MathAbs(SL - OrderStopLoss())
Ссылка на сообщение
Поделиться на другие сайты

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


Crik видимо пытаетесь модифицировать теми-же значениями. Пробуйте проверять СЛ и ТР перед модификацией на минимальное отклонение типа: if (MathAbs(SL - OrderStopLoss())


так почему первые ордера отработывает нармально, а с третьего начинает чудить?
if (OrderType() == OP_SELL)
{

if (OrderStopLoss()!=h)
{
if (OrderModify(OrderTicket(), OrderOpenPrice(), h, OrderTakeProfit(),0,0))
{
Print(" sell");
}

Добавлено: 02-05-2015 22:08:29



Crik видимо пытаетесь модифицировать теми-же значениями. Пробуйте проверять СЛ и ТР перед модификацией на минимальное отклонение типа: if (MathAbs(SL - OrderStopLoss())


так почему первые ордера отработывает нармально, а с третьего начинает чудить?
if (OrderType() == OP_SELL)
{

if (OrderStopLoss()!=h)
{
if (OrderModify(OrderTicket(), OrderOpenPrice(), h, OrderTakeProfit(),0,0))
{
Print(" sell");
}



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

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

написал тестовый советник. никак не пойму, почему на некоторых валютных парах (например EURNZD), на одном баре открываются сделки одна за одной? Пример на картинке.

Из-за чего такое происходит и как этого избежать?

buy.png

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

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

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

Здравствуйте!
Друзья подскажите как написать код так, что при одном сигнале открывалась одна сделка? (а не накаждом тике и не на открытии следующей свечи) Пример представлен на картинке.

Рисунок1.JPG

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Sany2912 сигналы возникают как правило на 1 баре. надо сохранить время открытия бара, отправить ордер, а на следующем тике проверить если время совпало, то значит сигнал отработан - выход. пример:
static datetime sigDT;
if ( /условия входа/ && sigDT != Time[0]) { sigDT = Time[0]; OrderSend(...); } else { return; }
как-то так. а что за индюк волшебный?
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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