nct21 Опубликовано 29 апреля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 апреля, 2015 все равно не работает! Привожу код еще раз со всеми исправлениями: 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; } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 29 апреля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 апреля, 2015 Мы-же здесь учимся кодировать... Я думаю если человеку нужен готовый код, то в гугле сразу найдёт. дак никто ж и не говорит, что не надо писать самому.Но надо получить представление хотя бы об азах структурного программирования, да и как выглядит код первоклассного программиста тоже не лишне увидеть.Разобрать, изучить, понять до оператора 3-5 чужих качественных кодов - это еще какая школа. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 апреля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 апреля, 2015 Старик да я согласен... просто стараюсь тут не давать готовых решений, а разбирать чужие косяки...nct21 Вы не все ошибки исправили из моего предыдущего поста - будьте внимательны... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
nct21 Опубликовано 30 апреля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 апреля, 2015 все равно не работает! вроде все поправил. текущий код для СЕЛЛ, бай вообще пока не трогаю!: 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; } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 апреля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 апреля, 2015 nct21 по данно му фрагменту замечаний нет. Ставьте Print() после каждого if() с понятным комментом и смотрите как выполняется... Ссылка на сообщение Поделиться на другие сайты More sharing options...
atnet Опубликовано 30 апреля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 апреля, 2015 Всем привет ! У меня вопрос, есть советник и индикатор к нему. Связка работает хорошо, дала за месяц 70% прибыли при 20% просадки. Автор говорит что советник не работает без индюка. Смотрю информацию по буферам индикатора в окне данных, но там только название индикатора в последней строчке и все. Может ли советник получать информацию от индикатора без буферов ? Сова бесплатно работает только на демо, хочу написать свою с использованием индикатора. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 апреля, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 апреля, 2015 Может ли советник получать информацию от индикатора без буферов ? Сова бесплатно работает только на демо, хочу написать свою с использованием индикатора.Может. Встречал несколько вариантов. А где индюк? а в тестере сова работает? Ссылка на сообщение Поделиться на другие сайты More sharing options...
atnet Опубликовано 1 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 мая, 2015 Индюк выкладываю, имя файла изменено. для тестера автором написан другой советник - только для тестов. _http://www.myfxbook.com/members/AtnetFX/fx-levels/1208200 Levels.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 1 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 мая, 2015 atnet Что-то Вы темните... ну-да ладно.Индюк перерисовывает - 2 раза запустил на одном и том-же графике (он-лайн) показал разные уровни.Индюк защищён - в защитах не силён - не моя тема. Чтоб на нём делать сову надо его исследовать, т.е. писать специальные совы и скрипты для исследования следов его работы. Т.е. что в буфере, доступ к графическим объектам. глобальных переменных вроде нет, но надо смотреть не создает ли сова файл, в который пишет данные индюк.Много работы. т.к. Вы инфу не выкладываете, то занимайтесь сами. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
atnet Опубликовано 1 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 мая, 2015 Да мне то скрывать нечего, я ведь не автор. А так инфа находиться здесь Спойлер _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 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Crik Опубликовано 1 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 мая, 2015 Всем привет!Прошу помощи в решении слующей задачи:выставлен отложенный ордер с последующей его модификацией. код модификации следующий 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). Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 1 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 мая, 2015 CrikДаже не понял в чём вопрос. Ну сработал ордер - зачем "запоминать" ТР чтоб его не менять? - просто его не меняйте и всё.Зачем показали код? там кстати логическая ошибка - Вы когда СЛ меняете ставите ТР = 0, а потом меняете ТР и опять передаёте в функцию СЛ - может глючить и выдавать ошибку модификации. Изменено 1 мая, 2015 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
Crik Опубликовано 1 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 мая, 2015 CrikДаже не понял в чём вопрос. Ну сработал ордер - зачем "запоминать" ТР чтоб его не менять? - просто его не меняйте и всё.Зачем показали код? там кстати логическая ошибка - Вы когда СЛ меняете ставите ТР = 0, а потом меняете ТР и опять передаёте в функцию СЛ - может глючить и выдавать ошибку модификации. так если отложенного ордера нет, то и и его тейкпрофит равен нулю. разве нет? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 1 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 мая, 2015 так если отложенного ордера нет, то и и его тейкпрофит равен нулю. разве нет?Ордера нет и тейка нет ! ;)Вы о чём? Если о своём коде, то там идёт модификация отложки от текущего low SL=NormalizeDouble(low1-rasstoynie,Digits);; double TPbuy=NormalizeDouble(OrderOpenPrice()+(OrderOpenPrice()-SL)*Koef,Digits);Я даже возомнил, что на каждой свече и поэтому указал на немного некорректный участок - т.е. отложка вроде-как была и даже ТР и СЛ у неё были... Ссылка на сообщение Поделиться на другие сайты More sharing options...
rva7171 Опубликовано 2 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 мая, 2015 Привет всем :-H.Хочу использовать в эксперте индикатор SRm. Но ни как не могу получить с него данные. В тестере показывает значение только до начала тестирования и остальное вырисовывается только после остановки тестера, соответственно и в окне ничего не рисует пока тест не завершен ну и буферы полную чепуху показывают.Может кто нибудь помочь!!! SR_индикатор.zip Ссылка на сообщение Поделиться на другие сайты More sharing options...
AlanG Опубликовано 2 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 мая, 2015 Здравствуйте! Подскажите как правильно использовать данные с этого индикатора, пытался использовать стандартные значения iCustom(NULL, 0, "LuKu_SSA_v30", SSA_Lag , SSA_NumComps, SSA_PeriodNorm, PCA_Lag, PCA_NumComps, PCA_PeriodNorm, MaMode, 3, 1) сразу перегружает память и терминал зависает, :( SSA.zip Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 2 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 мая, 2015 Дуплетом...rva7171 индюк криво написан. в некоторых условиях может некорректно работать. +для старого билда. Исправлять долго - времени нет. Если хотите, чтоб кто-нибудь занялся исправлением - покажите его ценность.AlanG по Вашему вопросу невозможно понять какой тип данных у переменных передаваемых в индюк, но если тупо посчитать количество внешних переменных индюка, то сильно не совпадает (в 2 раза). Рекомендую внести в вызов ВСЕ extern переменные, включая строковые, даже если это только подписи (можно ""). Индюк делает спектральный анализ, сопряжённый с вычислением матриц не детского размера (тысячи строк), поэтому даже в случае корректного вызова возможен завис МТ. Ссылка на сообщение Поделиться на другие сайты More sharing options...
AlanG Опубликовано 2 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 мая, 2015 AlanG по Вашему вопросу невозможно понять какой тип данных у переменных передаваемых в индюк, но если тупо посчитать количество внешних переменных индюка, то сильно не совпадает (в 2 раза). Рекомендую внести в вызов ВСЕ extern переменные, включая строковые, даже если это только подписи (можно ""). Индюк делает спектральный анализ, сопряжённый с вычислением матриц не детского размера (тысячи строк), поэтому даже в случае корректного вызова возможен завис МТ. 0ll Спасибо. попробую Ссылка на сообщение Поделиться на другие сайты More sharing options...
Crik Опубликовано 2 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 мая, 2015 При модификации ордера переодически показывает ошибку ordermodify error 1. первый и второй ордер модифицирует и без ошибок, а третий оредр модифицирует но выдает ошибку ordermodify error 1. в связи с чем это связано? Изменено 2 мая, 2015 пользователем Crik Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 2 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 мая, 2015 Crik видимо пытаетесь модифицировать теми-же значениями. Пробуйте проверять СЛ и ТР перед модификацией на минимальное отклонение типа: if (MathAbs(SL - OrderStopLoss()) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Crik Опубликовано 2 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 мая, 2015 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"); } Разобрался, заработало. Изменено 2 мая, 2015 пользователем Crik Ссылка на сообщение Поделиться на другие сайты More sharing options...
nct21 Опубликовано 4 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 мая, 2015 написал тестовый советник. никак не пойму, почему на некоторых валютных парах (например EURNZD), на одном баре открываются сделки одна за одной? Пример на картинке.Из-за чего такое происходит и как этого избежать? buy.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 4 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 мая, 2015 nct21 перед открытием ордера проверяйте наличие открытых ордеров данной совой по магику. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 4 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 мая, 2015 Здравствуйте!Друзья подскажите как написать код так, что при одном сигнале открывалась одна сделка? (а не накаждом тике и не на открытии следующей свечи) Пример представлен на картинке. Рисунок1.JPG Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 4 мая, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 мая, 2015 Sany2912 сигналы возникают как правило на 1 баре. надо сохранить время открытия бара, отправить ордер, а на следующем тике проверить если время совпало, то значит сигнал отработан - выход. пример:static datetime sigDT;if ( /условия входа/ && sigDT != Time[0]) { sigDT = Time[0]; OrderSend(...); } else { return; }как-то так. а что за индюк волшебный? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти