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

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

#2426


Буквально страницу назад об этом писали. Функции OrderSend() и OrderModify() возвращают булево значение true или false при успешной операции или неудачной. Предполагается, что вас интересует столь важное действие как открытие или модификация ордера и вы захотите это проверить.
В самом простом варианте пишите:
bool result = OrderModify() - и это предупреждение компиляции исчезнет.


Уточнение - про OrderModify() согласен,
а вот OrderSend() возвращает номер тикета (то есть целое число), который назначен ордеру торговым сервером или -1 в случае неудачи
#2427

Да-да, спасибо за уточнение, все правильно, конечно же номер тикета (заработался :) ). Смысл в том, что эту операцию тоже нужно проверять.

#2428

Добрый день уважаемые программисты. Помогите перевести вот этого советника вот в такой подвальный индикатор. Логин советника: f.zhukov12@mail.ru, Пароль: zhukov

Insaider_1.png
Insaider_2.gif
Insaider.rar10 скач.

#2429
F.Zhukov советник Вам никто не переделает - он компилированный. Проще с фх-бука именно эти данные скачать и две линии в подвале нарисовать. Но не все смогут/захотят этим заниматься...
#2430


F.Zhukov советник Вам никто не переделает - он компилированный. Проще с фх-бука именно эти данные скачать и две линии в подвале нарисовать. Но не все смогут/захотят этим заниматься...



Жаль, данные вообще супер. На их основе очень хорошие индикаторы могут получится. Что ж буду искать того кто подтянется за этим делом...
#2431

Здравствуйте! :)
Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?
Заранее благодарю!

#2432

:) если форум почитать: пост #305 /torgovye-sistemy/2/d1-supremacy/9346

/torgovye-sistemy/2/d1-supremacy/9346/?do=findComment&comment=203781

Изменено 6 августа, 2015 пользователем Старик

#2433

И действительно: если вообще ничего не помогает - прочтите, наконец, инструкцию! (с) :)


Добавлено: 06-08-2015 17:12:26

F.Zhukov, вы все же напишите то или не то вы искали.

Но, в принципе, с автором того индюка общий язык вам удастся найти быстрее всего - а главное, он глубоко в теме и, с высокой вероятностью, готов к её развитию.

Изменено 6 августа, 2015 пользователем Старик

#2434

Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?

Вычисляете уровень безубытка, узнаёте у МТ сколько стоит тик по этой паре, 5$/стоимость тика - получаете кол-во тиков до прибыли, прибавляете к уровню БУ и получаете желаемую цену закрытия. Всё.
Как вычислить БУ для пары ордеров знаете? цена_БУ = (цена1*лот1 + цена2*лот2) / (лот1 + лот2)
#2435


Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?

Вычисляете уровень безубытка, узнаёте у МТ сколько стоит тик по этой паре, 5$/стоимость тика - получаете кол-во тиков до прибыли, прибавляете к уровню БУ и получаете желаемую цену закрытия. Всё.
Как вычислить БУ для пары ордеров знаете? цена_БУ = (цена1*лот1 + цена2*лот2) / (лот1 + лот2)

Спасибо, 0ll !!!
#2436

Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться.

for (int pos_16 = 0; pos_16 ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) {
g_symbol_664 = OrderSymbol();

Изменено 7 августа, 2015 пользователем sla1000

#2437
Цитата


Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться.

ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES);



Надо проверять возвращаемое значение.

for (int pos_16 = 0; pos_16 if (OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) функция возвращает true в случае удачного завершения, false - если не удалось выбрать ордер.
{
if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) {
g_symbol_664 = OrderSymbol();
#2438

Спасибо. Я как оказалось не убирал знак - ;

#2439


Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться.

for (int pos_16 = 0; pos_16 ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) {
g_symbol_664 = OrderSymbol();



Об этом было написано чуть выше, ; тут ни причём .Компилятор сообщает,что функция должна возвращать какое-то значение.
#2440




Вы в этих функциях не поставили скобки(выделены).И советник стал тестироваться.
Только какие это экстремумы это просто хай или лоу предыдущей свечи!


Блин, надо же такие ошибки допускать)) код этого советника полностью аналогичен тому, что на видео про трейлингстопы. Там же не просто хай\лоу возвращается от предыдущей свечи, а ищется это значение за период "BarCount" свечей
#2441

Всем привет! Сразу извиняюсь, если пишу не в тот раздел форума!
Просьба не судить строго, т.к. я только учусь писать советники! :)
Итак, к делу: Идея, написать сов, открывающий 2а противоположных стоп-отложенника в определенное время(1раз в сут). Затем, после срабатывания одного из отложенников, 2й(противоположный, не сработавший) удаляется.
Принципиальна привязка к тикетам, ну или к мэджику, т.е. ,есть бай-стоп с тикетом 11111111 и селл-стоп с тикетом 22222222,
при срабатывании бай-стоп, получается бай с тикетом 1111111 в рынке, а селл-стоп с тикетом 2222222 удаляем.

Но, что-то я запутался, помогите плиз! :">

P.S. "Огромное спасибо за такие полезные и подробные уроки по mql!"

my_expert_stoporders.ex48 скач.

Изменено 9 августа, 2015 пользователем mark4431

#2442
mark4431, во-первых, выкладывайте исходный код советника, если хотите, чтобы вам помогли.
Во-вторых, напишите универсальную функцию, считающую количество открытых ордеров определенного типа (она была в видеоуроках) - она вам пригодится в любом советнике, с ней ваша задача становится просто тривиальной.
У меня эта функция выглядит так:
int CountTrades(int otype) //Считаем количество ордеров нужного типа  
{
int Count = 0;
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderType() == otype && OrderMagicNumber() == Magic)
Count ++;
}
}
return (Count);
}


Далее, следуя логики вашего ТЗ, алгоритм примерно такой:
if (CountTrades(OP_BUYSTOP) == 0 && CountTrades(OP_SELLSTOP) == 0)
{
if (время_подходит)
{
открываем ордера
}
}
if (CountTrades(OP_BUY) > 0)
удаляем селлстоп
else if (CountTrades(OP_SELL) > 0)
удаляем байстоп

Изменено 9 августа, 2015 пользователем JR

#2443


mark4431, во-первых, выкладывайте исходный код советника, если хотите, чтобы вам помогли.
Во-вторых, напишите универсальную функцию, считающую количество открытых ордеров определенного типа (она была в видеоуроках) - она вам пригодится в любом советнике, с ней ваша задача становится просто тривиальной.


Пардон, не тот файл кинул, спасибо за отклик! :)
Вот, поправил, вроде работает без ошибок. Если не сложно, поправьте если где не так, может чего лишнего наворотил.. :">

my_expert_stoporders.mq410 скач.

#2444


И действительно: если вообще ничего не помогает - прочтите, наконец, инструкцию! (с) :)


Добавлено: 06-08-2015 17:12:26

F.Zhukov, вы все же напишите то или не то вы искали.

Но, в принципе, с автором того индюка общий язык вам удастся найти быстрее всего - а главное, он глубоко в теме и, с высокой вероятностью, готов к её развитию.


Мне нужно что бы в подвале МТ4 показывала так же, как на втором скрине. Далее я со своим програмером думаю написать ряд индикаторов по Ларии Уильямсу (Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса). Мне бы только перед тем как мой программер из отпуска вернется уже дать ему готовый MQL код такого подвального индюка - и далее дело в шляпе.
#2445

Добрый день, друзья!
Кто нибудь сталкивался с такой ситуацией - отложенный ордер (бай-стоп) исполняется не по той цене на которой он был установлен, а выше заданного уровня??? Это происходит из-за резкого изменения цен или причина другая? Какие есть варианты устраниение этой ситуации? Хотелось бы, чтоб отложенный ордер (или любой другой) исполнялся по заданной цене...
Спасибо!

#2446


Добрый день, друзья!
Кто нибудь сталкивался с такой ситуацией - отложенный ордер (бай-стоп) исполняется не по той цене на которой он был установлен, а выше заданного уровня??? Это происходит из-за резкого изменения цен или причина другая? Какие есть варианты устраниение этой ситуации? Хотелось бы, чтоб отложенный ордер (или любой другой) исполнялся по заданной цене...
Спасибо!



Если ты про sell-ордера-выше, buy- ниже, в общем раньше)) это происходит из-за спреда, на сильных движениях особенно заметно это явление..)
#2447


Добрый день уважаемые программисты. Помогите перевести вот этого советника вот в такой подвальный индикатор. Логин советника: f.zhukov12@mail.ru, Пароль: zhukov




Добрый день. Моежет помочь реализовать вот такую идею?
Мне нужно что бы в подвале МТ4 показывала так же, как на втором скрине. Далее я со своим програмером думаю написать ряд индикаторов по Ларии Уильямсу (Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса). Мне бы только перед тем как мой программер из отпуска вернется уже дать ему готовый MQL код такого подвального индюка - и далее дело в шляпе.



Здравствуйте.
Переделать тот советник что Вы предложили точно не получится, так как это компилированная версия.
Сделать парсинг информации с фх-бука возможно (как для проверки на истории, так и для онлайн работы).
MQL код является продуктом моей интеллектуальной деятельности по реализации Вашей идеи, индикатор для форума tradelikeapro будет представлен в компилированной версии.
Если вы изложите ТЗ на ваши идеи "(Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса)" то я постараюсь включить это в индикатор.
Единственная проблема это время. Постараюсь реализовать ТЗ, но не обещаю, что это будет быстро.
Спасибо

Изменено 10 августа, 2015 пользователем Blohastik

#2448

0

Изменено 3 октября, 2015 пользователем F.Zhukov

#2449

Нужен совет специалистов. Такой вопрос:

Допустим, строим мы сетку ордеров. Максимальное разрешенное количество - 10. Каждый ордер имеет индивидуальный одинаковый стоплосс (а не общий для корзины). Возникает такая ситуация - открылись 10 ордеров, к примеру, цена идет дальше и 2 ордера закрываются по стоплоссу. Обычная функция счетчика рыночных ордеров будет возвращать 8 и советник будет дальше открывать ордера, хотя максимально разрешеннное для сетки (10) мы прошли.
Собственно вопрос: что надежней для отслеживания количества ордеров сетки: считать виртуальным счетчиком и записывать в глобальные переменные или пытаться высчитать закрытые по стоплоссу ордера сетки в истории (MODE_HISTORY) и плюсовать к текущим?
Может еще есть другие варианты?

#2450


Нужен совет специалистов. Такой вопрос:

Допустим, строим мы сетку ордеров. Максимальное разрешенное количество - 10. Каждый ордер имеет индивидуальный одинаковый стоплосс (а не общий для корзины). Возникает такая ситуация - открылись 10 ордеров, к примеру, цена идет дальше и 2 ордера закрываются по стоплоссу. Обычная функция счетчика рыночных ордеров будет возвращать 8 и советник будет дальше открывать ордера, хотя максимально разрешеннное для сетки (10) мы прошли.
Собственно вопрос: что надежней для отслеживания количества ордеров сетки: считать виртуальным счетчиком и записывать в глобальные переменные или пытаться высчитать закрытые по стоплоссу ордера сетки в истории (MODE_HISTORY) и плюсовать к текущим?
Может еще есть другие варианты?



Привет, я конечно не спец, но может удастся, хотя бы чем-то помочь)) Условие закрытие сети какое? Может стоит исходить из инициирующего ордера? Пока он существует и сеть достигла 10-запрет на выставление новых отложек...И скорее всего, лучше писать в глоб. переменную, например bool a=true если кол-во отложек достигало 10, если инициирующий ордер закрылся- a=false;

Изменено 11 августа, 2015 пользователем mark4431

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

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