Добрый день, коллеги.
Прошу добавить в советник функцию открытия лота по проценту от свободных средств. Сейчас можно только фиксированный размер указать.
Спасибо.
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
Лови
Спасибо большое все вроде работает.Плюсанул.
Заказывал написание советника на mql5.com по этой доработанной методике.
Отличия. В рынке только один ордер по одному инструменту.
Во вложении сам советник.
Мониторинг _http://www.myfxbook.com/members/mexicanoeso/weltrade/1062271
Первый ордер/колено открываю вручную, не рандомно.
Наблюдаю такие ошибки работы сова. Особенно когда первое колено открываю на продажу, если дошло до четвертого (последнего) колена, то часто оно на продажу, а должно быть на покупку.
На быстром рынке тоже бывают ошибки, а также из-за проскальзываний. Программист говорит что логика в советнике работает правильно, но я же вижу по факту в терминале неправильную работу сова. Хотя в журнале терминала никаких ошибок нет.
Может кто что подскажет?
Входные параметры:
TP1=50.0, // размер тейк профита для 1-го "колена" открытого вручную (в пунктах), если 0 - отключен
TP2=50.0, Lot2=0.02, // рамер тейк профита и лота для 2-го "колена"
TP3=50.0, Lot3=0.04, // рамер тейк профита и лота для 3-го "колена"
TP4=50.0, Lot4=0.08, // рамер тейк профита и лота для 4-го "колена"
z=50.0, // расстояние от открытого ордера до отложенного стоп ордера (в пунктах)
BE2=0.0, BE3=0.0, BE4=0.0; // безубыток (бу) для 2-4 "колен" (в пунктах), если 0 - бу для соответствующего "колена" отключен
Глянул код. У автора есть опыт, решения не самые оптимальные, но рабочие, с его творениями ранее не встречался.
Что Вы хотите? - чтоб мы нашли почему иногда не в ту сторону 4-й ордер открывается? так для этого есть более простое решение - выслать логи Вашему программисту с указанием тех строк, где по-Вашему нарушена логика ( и соответственно Ваше ТЗ) ему проще в своей проге разобраться.
В том то и дело, что в журнале никаких ошибок.
Программист сказал что "Советник как на покупку, так и на продажу работает аналогично. В коде логика полностью одинаковая в оба направления."
Я Вам не про ошибки исполнения толкую, а про ошибки в логике и то, что она одинаково неправильная Вам, наверное, не легче...
В том то и дело, что в журнале никаких ошибок.
Программист сказал что "Советник как на покупку, так и на продажу работает аналогично. В коде логика полностью одинаковая в оба направления."
В журнале ошибок не будет, если код грамотно написан. Вот Вы в школе написали сочинение, грамотно написали - ни одной ошибки, но только писали Вы про Пушкина, а тема сочинения была про Толстого.
В логах есть время открытия ордеров - можно проследить какой ордер открылся и в какой последовательности.
Поймите правильно - нерегулярные ошибки (про которые в журнале не пишут) очень трудно искать, тем более в чужом коде. Легче сову заново переписать.
Подскажите пожалуйста, что прописать нужно в OrderModify(). так чтобы не открывшийся отложенный ордер перемещался (т.е менялась цена открытия) с изменением maxprice/minprice?
Добавлено: 03-11-2014 18:23:09
Серьезно помогите!!! вот код
if(maxprice>=Ask)
{
SL = minprice;
TP = NormalizeDouble (maxprice + TakeProfit*Point, Digits);
int tic=OrderSend(Symbol(), OP_BUYSTOP, Lots, maxprice, Slippage, 0, 0, NULL, Magic,0, Blue);
bool sel=OrderSelect(tic,SELECT_BY_TICKET);
bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);
}
Изменено 3 ноября, 2014 пользователем Бучацкий
В приведённом коде устанавливаете отложку, а затем, зачем-то, модифицируете СЛ и ТР отложки, когда это можно сделать сразу в ОрдерСенд.
Серьезно помогите!!!
Потом должны наступить условия для модификации, затем нужно найти и выбрать рабочую отложку, расчитать новые параметры (цены открытия, СЛ и ТР), затем модифицировать.
Просто непонятно на каком этапе у Вас проблемы? - неужели в том, как записать новую цену в OrderModify?
Вот так пробовали?
Новый урок от Сергея xbms:
http://tradelikeapro.ru/signalyi-na-pochtu-i-mobilnyie/ b-)
15-я минута видео о том, что на почту не пришли сообщения. Так ведь советника нет на графике, вот и не завалило....))
15-я минута видео о том, что на почту не пришли сообщения. Так ведь советника нет на графике, вот и не завалило....))
Точно!
Накосячил, потом уже видел... когда поздно было :)
А сразу и не обратил внимания, т.к. на тестах реально поздно приходят.
В любом случае, сообщения на почту приходят с опозданием как минимум на пять минут...
По крайней мере у меня так...
Так что рекомендую для этого использовать мобильные устройства :)
15-я минута видео о том, что на почту не пришли сообщения. Так ведь советника нет на графике, вот и не завалило....))
Точно!
Накосячил, потом уже видел... когда поздно было :)
А сразу и не обратил внимания, т.к. на тестах реально поздно приходят.
В любом случае, сообщения на почту приходят с опозданием как минимум на пять минут...
По крайней мере у меня так...
Так что рекомендую для этого использовать мобильные устройства :)
Ничего страшного!)) Сам порой могу выкинуть номер, над которым в итоге сам же и улыбаюсь)))
За урок - спасибо!))
Ребят, что-то порылся тут-да-там и не нашёл конкретного пояснения по OrdersTotal. При применении цикла for, можно перебирать до обнуления, либо наоборот до максимума. Дак вот, насколько понимаю, эта функция имеет собственный подсчёт ордеров и нумерацию, но при этом всё равно ордера идут в особом порядке. Значит ли это что при раскладке номеров используется ещё и приоритет по номерам тикетов?
Мне просто нужно сделать перебор либо снизу-вверх, либо сверху-вниз, в зависимости от ситуации и при этом нужно проверять различие соседних ордеров, плюс ко всему ещё присутствует частичное закрытие, поэтому тикеты меняются и пока получается не очень, поэтому нужно знать этот нюанс. Если кто знает способ при таких условиях, то прошу поделиться или хотя бы наставить и направить.
Изменено 6 ноября, 2014 пользователем chistaia-rodina
Номера ордерам присваиваются по времени открытия (читал где-то, но это не официальная инфа), но любое действие с ордерами меняет их нумерацию.
Для анализа соседних ордеров я делал так:
- создаётся двумерный массив double с первым полем например дата/время (можно тикет или цену открытия)
- в цикле выбор ордера и записываешь в массив нужные для анализа значения (цена, объём)
- после выхода из цикла - сортировка (всегда по первому полю)
- ну, и собственно - анализ ордеров по записям из массива.
Этот вариант исключает возможные ошибки.
Здравствуйте Уважаемые. Мне не хотелось бы злоупотреблять Вашей отзывчивостью, но все же обратиться больше мне не к кому!
Ребята помогите пожалуйста приделать линии к индикатору, с возможностью выбора цвета и толщины. Довольно интересные результаты получаются)), Вы можете и сами посмотреть на графике. Линии по предыдущей (закрытой) свече старшего ТФ(выбранного в настройках индикатора). Линии по открытию/закрытию свечи и хай/лоу. Спасибо.
Изменено 7 ноября, 2014 пользователем Strong-Tezis
3 раза перечитал, но так и не понял, что делать надо.
Вам нужно раскрасить те 4 горизонтальные линии? или какие-то другие нарисовать?
Здравствуйте. Эти 4-е линии нарисованы вручную(в paint), нужно автоматизировать процесс. Что бы индикатор сам рисовал их. С возможностью выбора цвета и толщины. Спасибо.
Держи.
Примите мою искреннюю благодарность. Спасибо!
Добавлено: 07-11-2014 13:39:42
Простите за назойливость. Индикатор стал оставлять какие то линии(выделил черным) можно как то исправить? И если не сложно, можно добавить выбор цвета на линии? т.е. все разного цвета.

Добавлено: 07-11-2014 16:52:01
А можно как нибудь оставить только желтые линии, остальной код убрать?
Изменено 7 ноября, 2014 пользователем Strong-Tezis
Можно. Код закомментировал, если что - легко вернуть.
А можно как нибудь оставить только желтые линии, остальной код убрать?
Те линии на скрине видимо от нового Н4 бара. Закинте индюк на график ещё раз. У меня всё рисуется корректно (хотя этот код я не трогал).
Шикарно... просто шикарно. Огромная Благодарность Вам. Спасибо. Спасибо, что Вы всегда так бескорыстно выручаете! Удачи Вам во всех начинаниях!
Всем привет!
Пытаюсь разобрать один код:
for (int i = barsback; i >= 1; i--)
{
high_56 = High[Li_52]; - в данной строке присвоим переменной high_56 значение максимальной цены на i-ом баре
high_88 = High[Li_52 + 1]; - ПОМОГИТЕ РАЗОБРАТЬ что происходит здесь
1. Цикл у Вас по i, а в внутри почему-то Li_52? - это так задумано?
2. high_88 = High[Li_52 + 1] - это хай предыдущего бара (который перед Li_52)
3. Надо что-то делать с этими хаями - иначе цикл не оправдан.
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем