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

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


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

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

Здравствуйте. Помогите найти ошибку.
В журнале при тестировании находит ошибку 130 - неправильные стопы.

Test3Indicator.mq4

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

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

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

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

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

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

Перейти

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

Перейти

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

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


Здравствуйте. Помогите найти ошибку.
В журнале при тестировании находит ошибку 130 - неправильные стопы.


Вы после установки стоповых ордеров не выбираете ордер OrderSelect(), а пытаетесь модифицировать СЛ и ТР.
Я не знаю какой у вас билд терминала - видимо 600+, я сделал для 509.
Кстати, сова тормозит - ужас... Может Вам вместо ТМА использовать КС? - он чуть похуже, но быстрее раз в 10!

Test3Indicator.mq4

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

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


Кто нить знает есть ли в MQL4 что то типа указателей как в си - @WindowProc ?


#import "user32.dll"
#import "kernel32.dll"
и т.п.
и справка Изменено пользователем fv2500
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

та нет я имею ввиду как сослаться на свою функцию точнее нужен указатель оконной функции, функция то есть а как указатель на неё получить?

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

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

Извращения в виде работы с указателями надо уносить в библиотеку. Не совсем понятно о какой оконной функции идет речь. Окно чего, терминала, чарта, ? Или какое-то свое? Или речь о CallWindowProc, DefWindowProc, EnumWindows, ‎EnumChildWindows?
В любом случае надо правильно подбирать инструмент, никто к примеру не обрабатывает текст на поиск url самопальными библиотеками на си шарпе, когда есть перл. Так и тут, оконный функционал надо кодить на си, делфи, хоть на ассемблере. И эти функции вызывать из мкл.
Лучше опишите чего желаете добиться, может и не потребуется некий указатель.

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

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

В структуре WNDCLASSEX есть параметр lpfnWndProc - Указатель на оконную процедуру(функцию) CallWindowProc. В MQL4 есть функция а как на нее указатель получить??

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

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

То есть вы желаете вызвать CallWindowProc передав в качестве параметра оконной функции wndproc адрес какой-то функции из кода mql? @-)
Если да, то поздравляю, вы люто ошиблись в архитектуре своего приложения. Получить адрес функции mql нельзя. Так было еще до 600+ билдов. Теперь в 600+ билдах есть возможность получить адрес любой функции во время работы в отладчике но официальных методов получить данные адреса не существует. Еще раз задам вопрос - какой функционал вы желаете получить?

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

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

Можно ли вызвать функцию RegisterClassEx из MQL4 (без использования dll), чтоб затем вызвать createwindowex?

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

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


Можно ли вызвать функцию RegisterClassEx из MQL4 (без использования dll), чтоб затем вызвать createwindowex?


нет такого (или я не знаю)
мы и дальше будем гадать, что тебе нужно?
ты хочешь создавать левое окно из mql и из этого окна запускать функцию из mql? извращенец!
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Вы после установки стоповых ордеров не выбираете ордер OrderSelect(), а пытаетесь модифицировать СЛ и ТР.
Я не знаю какой у вас билд терминала - видимо 600+, я сделал для 509.
Кстати, сова тормозит - ужас... Может Вам вместо ТМА использовать КС? - он чуть похуже, но быстрее раз в 10!


Большое спасибо за то, что ткнули носом в ошибку. Глаз замылился, поэтому не увидел её.
Вы правы, билд 609.
На моей машине всё вроде нормально работало. Может, оттого что железо мощное. Или мне надо осваивать профилировщик.
А что такое КС? Подскажите, как отловить редко проявляющуюся ошибку 130?
Ссылка на сообщение
Поделиться на другие сайты

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

А что такое КС? Подскажите, как отловить редко проявляющуюся ошибку 130?

КС - индюк, похожий на ТМА, только без рекурсии (перерисовки). Внизу прикрепил.
Когда ошибка 130 редко возникает, то нужно ставить Print(параметры цены и стопов) в блоке обработки возможных ошибок после установки/модификации ордеров.

KC.mq4

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

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


Кнопки sell и buy в отдельном окне, как можно сделать?
Ну или хотя бы на графике.



ObjectCreate(chart_ID,name,OBJ_BUTTON,wind,0,0);

В справку давно заглядывал?
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

Люди добрые помогите с решением ДЗ по уроку №6, а именно с 3 пунктом: "при написании первого скрипта в данном видео-уроке была заведомо допущена ошибка, которая может привести к его некорректной работе. Найдите её и предложите своё решение."

Уже сутки сижу голову ломаю, не могу понять где ошибка. Спасибо.

Если что, вот код скрипта где допущена ошибка:

#property strict
#property show_inputs

extern int Profit = 5;
extern int Slippage = 5;

double point;
int digits, ask, bid, open;

//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
int start()
{
digits = MarketInfo (OrderSymbol (), MODE_DIGITS);

if (digits == 3 || digits ==5)
{
Profit *= 10;
Slippage *= 10;
}
for (int i=OrdersTotal () -1; i>=0; i--)
{
if (!OrderSelect (i,SELECT_BY_POS, MODE_TRADES)) break;

if (OrderType() == OP_BUY)
{
point = MarketInfo (OrderSymbol (), MODE_POINT);
bid = MathRound (MarketInfo (OrderSymbol (), MODE_BID)/point);
open = MathRound (OrderOpenPrice ()/point);
if (bid - open if (OrderClose (OrderTicket (), OrderLots (), bid*point, Slippage)){}
}
if (OrderType() == OP_SELL)
{
point = MarketInfo (OrderSymbol (), MODE_POINT);
ask = MathRound (MarketInfo (OrderSymbol (), MODE_ASK)/point);
open = MathRound (OrderOpenPrice ()/point);
if (open - ask if (OrderClose (OrderTicket (), OrderLots (), ask*point, Slippage)){}
}
}

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

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

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

Это кнопки на графике получатся. (В принципе можно так)
Но в идеале хотелось бы отдельную панельку от терминала!

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

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


Это кнопки на графике получатся. (В принципе можно так)
Но в идеале хотелось бы отдельную панельку от терминала!



В MT4 в индикаторах есть папка Example, в ней пример панели с кнопками, чекбоксами и прочей начинкой. Можешь оттуда черпать вдохновение. Лично я строю свой муравейник, можешь глянуть тут: http://tlap.com/forum/hardwaresoftware-dlya-treydera/27/vspomogatelnyy-sovetnik-tradesystem-2-tester/6576


Добавлено: 29-04-2014 13:31:36

И еще раз, люди! Чаще жмите F1. Там много всего интересного! Изменено пользователем fv2500
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Люди, помогите пож новичку с ММ!

Хочу рассчитывать в сове размер лота, как это делается в предложенном Павлом калькуляторе http ://tradelikeapro.ru/mani-menedzhment-forex/

Как узнать минимальный размер лота на данном счете (0,1 или 0,01)?
Как узнать цену пункта на данной валютной паре в том виде, в котором она дана в этом калькуляторе (то есть, EURUSD = 1,00, EURGBP = 1,59 и т. д.)

Пытаюсь гуглить "цену пункта", а выдает совсем не то, что мне надо :(

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

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

Всех с 1 Мая! Снова прошу Вашей помощи в поиске ошибки.
При трейлинг-стопе по parabolic SAR проявляется ошибка 1 в OrderModify. Трейлинг-стоп по фракталам работает нормально.
Код прилагаю. Заранее спасибо.

HardTrailing.mq4

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

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

При трейлинг-стопе по parabolic SAR проявляется ошибка 1 в OrderModify.

Возможно САР возвращает значения с большей точностью - надо нормализовать...
вместо:
 if(OrderStopLoss() != SL)
OrderModify(OrderTicket(), OrderOpenPrice(), SL, OrderTakeProfit(), 0);
пробуй так:
 SL = NormalizeDouble(SL, Digits);
if(MathAbs(OrderStopLoss()-SL) > Point) //Я-бы даже сделал Point*5 (на 5-знаке) - что-б не раздражать брокера...
OrderModify(OrderTicket(), OrderOpenPrice(), SL, OrderTakeProfit(), 0);
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


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


Есть функция терминала OnEvent. Только она реагирует на событияна графике. Всё остальное твои заботы. Состояние кнопки нажата/отжата можно проверить

Добавлено: 01-05-2014 12:38:23


Люди, помогите пож новичку с ММ!

Хочу рассчитывать в сове размер лота, как это делается в предложенном Павлом калькуляторе http ://tradelikeapro.ru/mani-menedzhment-forex/

Как узнать минимальный размер лота на данном счете (0,1 или 0,01)?
Как узнать цену пункта на данной валютной паре в том виде, в котором она дана в этом калькуляторе (то есть, EURUSD = 1,00, EURGBP = 1,59 и т. д.)

Пытаюсь гуглить "цену пункта", а выдает совсем не то, что мне надо :(


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

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


Возможно САР возвращает значения с большей точностью - надо нормализовать...


Увы, теперь появились ошибки 130 в OrderModify.
Буду пытаться выловить. Всё равно спасибо!
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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