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

От xbms, 13 апреля, 2013 в Уголок Программиста

#851

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

Test3Indicator.mq413 скач.

#852

Курс MQL на английском языке - может поможет :)]

CodersGuruFullCourse.zip16 скач.

#853


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


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

Test3Indicator.mq413 скач.

#854

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

#855


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


#import "user32.dll"
#import "kernel32.dll"
и т.п.
и справка

Изменено 27 апреля, 2014 пользователем fv2500

#856

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

#857

ну где она прописана, оттуда и вытаскивай

#858

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

#859

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

#860

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

#861

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

Изменено 28 апреля, 2014 пользователем emelenium@gmail.com

#862


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


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


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


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

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

#865

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

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

KC.mq419 скач.

#866


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



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

В справку давно заглядывал?
#867

Люди добрые помогите с решением ДЗ по уроку №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);
}
//+------------------------------------------------------------------+

Изменено 29 апреля, 2014 пользователем denkudo

#868

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

#869


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



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


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

И еще раз, люди! Чаще жмите F1. Там много всего интересного!

Изменено 29 апреля, 2014 пользователем fv2500

#870

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

#871

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

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

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

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

#872

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

HardTrailing.mq413 скач.

#873

При трейлинг-стопе по 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);
#874


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


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

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


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

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

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

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


MarketInfo
#875


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


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

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

Перейти к списку тем
Форум · 2.0.20260627.0025