SpyRF Опубликовано 24 мая, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 мая, 2014 ПОМОГИТЕ! для открытия сделки я использую функцию для определения нового бара Спойлер void Fun_New_Bar() // Ф-ия обнаружения ..{ // .. нового бара static datetime New_Time=Time[0]; // Время текущего бара New_Bar=false; // Нового бара нет if(New_Time!=Time[0]) // Сравниваем время { New_Time=Time[0]; // Теперь время такое New_Bar=true; // Поймался новый бар }} затем в функции OnTick проверяю на наличие нового бара: Спойлер Fun_New_Bar(); // Обращение к ф-ии if (New_Bar==false) // Если бар не новый.. return; // ..то уходимif (New_Bar==true){открываем сделку на покупку или продажу} за пределами оператора if(New_Bar==true) { }я пишу условия модификации открытого ордера и частичного его закрытия: Спойлер if (Ask 0 && order_open==true) { for (int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) { if (OrderMagicNumber() == Magic && OrderType() == OP_SELL) { bool order_mod=OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), TP, 0); bool order_close=OrderClose(OrderTicket(), 0.5*Lots, Ask, Slippage, Black); order_open=false; } } } } все вроде бы замечательно и компилятор не ругается, но есть маленькое НО: сделка у меня открывается на новой свече при соблюдении условий, которые там прописаны, и самое главное - модификация ордера при достижении центральной линии TMA с частичным закрытием ордера осуществляется так же на новой свече. P.S. прикладываю картинку из тестора для наглядности. Синим отмечен правильная модификация или закрытие сделки, красным - которые были сделаны программой по факту.Добавлено: 24-05-2014 21:26:17выделил код той части советника, который не хочет корректно работать. (см вложенные файлы)123.JPGEA.mq4EA.ex4 Изменено 24 мая, 2014 пользователем SpyRF Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 25 мая, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 мая, 2014 ПОМОГИТЕ! Чего-же Вы хотели? Сами воткнули функцию закрытия под новый бар, а хотите чтобы закрывался на старом баре. Поймите - функция закрытия отрабатывает 1 раз по цене Опен 0-бара, потом бар сходил за линии индюка, но ф-ция закрытия об этом ничего не узнала...Короче смотрите за ценами Опен и Вам станет всё ясно. Ссылка на сообщение Поделиться на другие сайты More sharing options...
davidov656 Опубликовано 3 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 июня, 2014 Помогите кто нибудь, изучая курс споткнулся же на первом вводном уроке, компилятор выдает ошибку по одному фрагменту кода. //+------------------------------------------------------------------+//| Avto-Acceleration.mq4 |//| ALEKSANDR |//| |//+------------------------------------------------------------------+#property copyright "ALEKSANDR"#property link ""#property version "1.00"#property strict//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//---//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick(){ /*int x, y, z; x = 1; y = 8; z = y - x; Comment (z);*/ /*double x, y, z; x = 645833555554556; y = 356882568558868; z = y - x; Print (z); Comment (z);*/ double X, Y , Z; bool bb; X = 0; Y = 1; if (X == 0) bb = true; else bb = false if (bb == true) Print ("Привет!"); else Print ("Пока!")} //+------------------------------------------------------------------+ Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 4 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 июня, 2014 Здраствуйте всем,ребята поможете не много доработать сову.Она работает но не много как мне кажется парится. В общем она не торгует, должна закрывать все сделки не зависимо от того открыты они вручную или советником по любому символу по выставленому проценту убытка или прибыли в совокупе либо отдельно взятому ордеру и символу.не знаю как это сделать. Close_Loss_v1_0_AUTO..mq4 Изменено 4 июня, 2014 пользователем denis77515 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 4 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 июня, 2014 Помогите кто нибудь, изучая курс споткнулся же на первом вводном уроке, компилятор выдает ошибку по одному фрагменту кода.Какой компилятор, какая ошибка, в какой строке? Что думаете по этому поводу? Мы-же здесь обучаться пытаемся, а не просто исправлять ошибки в чужом коде. Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 6 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июня, 2014 Люди сведущие в программировании, хочу у вас прояснить один момент, насчёт того можно ли вообще такое реализовать. К примеру работаем линейным мартином в широком диапазоне, соответственно идут последовательно ордера с приращением скажем на 0,01 и так как движения очень значительные, то часто возникают ситуации, когда цена существенно продвигается в нужную сторону, но не дотягивает до общего закрытия. При этом можно определить, что вероятность падает и закрыть прибыльные ордера. Дак вот, интересует такой функционал, при закрытии части прибыльных ордеров, скажем половина полученной прибыли уходит в буфер и уже исходя из полученной суммы, тут же закрываются самые дальние ордера, тем самым сдвигая пирамиду. При этом первый ордер 0,01 закрывается полностью, а у всех остальных частичное закрытие по 0,01 пока хватает прибыли. Если на полный цикл не хватает, то он продолжается после очередного наполнения буфера, пока не переберёт всю пирамиду. Если прибыли получилось больше, то по проходу цикл начинается по новой, пока не произойдёт полное опустошение буфера. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июня, 2014 chistaia-rodina Я в Зерге делал следующее:- при некой просадке (более средней по истории) включалась ф-ция частичного закрытия- бот ждал откат не менее некого процента от всего движения- считалась прибыль всех профитных ордеров и из неё вычитались лоссовые ордера начиная с первого. При этом можно было оставить прибыль (+) или закрывать в общий (-) - настраивалось.- после этого все выбранные ордера закрывались. При этом если от всей пирамиды оставался один ордер, то он так-же закрывался в (-).Я уже писал, что данная функция хорошо работала и иногда спасала депо, но сливалась там, где обычная сетка отрабатывала на ура... В итоге выключил.Вы предлагаете иной алгоритм, но на практике будет то-же. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 6 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 июня, 2014 Ну это понятно, что существует такая вероятность. Я же хочу конкретно узнать, реализуемо ли такое в коде и насколько сложно, просто ни где не встречалось именно такой функции, разве что в боте Hero есть нечто подобное, но там не совсем так и он гораздо агрессивнее. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Айдар_Л Опубликовано 8 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 июня, 2014 Для xbms: Начал ручками пробовать запрограммировать хотя бы домашнее задание 1.5. Но даже с этим не справился...Поможете его выполнить?)) test1.mq4 Изменено 8 июня, 2014 пользователем Айдар_Л Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sancho Опубликовано 9 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 июня, 2014 День добрый! Хотелось бы попросить Сергея Xbms записать серию уроков по новому mql4, в частности более подробно осветить ООП (урок 9 и 10 просмотрел, дз сделал) и его основные постулаты и особенности (инкапсуляция, наследование, полиморфизм, виртуальные функции, перегрузка, принципиальное отличие ссылки от указателя, поподробнее о конструкторах класса и т.к. далее). Также был бы не лишним урок по написанию пользовательского индикатора и графических объектов. 8-> 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 10 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 июня, 2014 Здарова!!! Народ а почему так происходит? Я выставил селстоп цена пошла вниз но он не сработал а сдвинулся ниже на 80 пунктов и там сработал ~x( :-? хотя спред был 33 пункта! это на золате! Screen_Shot_2014-06-09_at_8.38.07_PM.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
arthur0001 Опубликовано 11 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 июня, 2014 здравствуйте. хочу сам научиться писать советники, скачал курс, просмотрел, все понятно, начинаю делать д.з., таких функций нет, в метаэдиторе просто нет. оказывается вся проблема в новых билдах, уже повыходили обучающие видео для новых билдов, но эти видеоуроки предназначены для тех кто уже умеет что то, видео ориентированы на опытных писак, для тех кто только начинает изучать путается, приходится изучать не по порядку, а всмешку с какими то новыми видео. в общем все тяжело, становится невозможно. появились какие то новые функции, что то убрали. хотелось бы поинтересоваться, появятся ли новые уроки для новых метаэдиторов, не запутанные, не смешанные с какими то новыми уроками по отличиям между билдами, а просто новые уроки программирования mql? пережевывать ничего не нужно, я не ноюсь тут, просто уроки для новых билдов, понятные для начинающихзаранее спасибо Ссылка на сообщение Поделиться на другие сайты More sharing options...
fintech Опубликовано 13 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 июня, 2014 Добрый день, подскажите, Как написать функцию, которая возвращает тикет уже стоящего buy stop ордера и аналогично для sell stop ордера. ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 13 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 июня, 2014 Примерно так: int f_GET_Order_Ticket(int oType) //БайСтоп = OP_BUYSTOP = 4; OP_SELLSTOP = 5 { for (int no=0; no { if (!OrderSelect(no, SELECT_BY_POS, MODE_TRADES)) continue; if (!(OrderSymbol()== Symbol() && OrderMagicNumber() == Magic && OrderType() == oType)) continue; return(OrderTicket()); } } Только если этих ордеров несколько, то нужен перебор... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
denis77515 Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 Привет всем, господа подскажите как написать вот эту функцию что бы она не выдавала предупреждение от том что не явное преобразование строки в число. то есть implicit conversion from 'string' to 'number' Спойлер int instrument; int symbol(int otypex) { ticket = 0 ; int oldticket; for(int i =OrdersTotal()-1; i >= 0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if ( OrderMagicNumber() == Magic && OrderType() == otypex) { oldticket = OrderTicket(); if(oldticket > ticket) { instrument = OrderSymbol(); ticket = oldticket; } } } } return(instrument); } Изменено 14 июня, 2014 пользователем denis77515 Ссылка на сообщение Поделиться на другие сайты More sharing options...
fintech Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 Спасибо, функция понятна, но что значит OP_BUYSTOP = 4; и OP_SELLSTOP = 5эти значения куда то надо подставлять? как я понял функция перебирает ордера с помощью цикла for, но если ордеров несколько будет возвращать тикеты всех ордеров без разбора. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 Привет всем, господа подскажите как написать вот эту функцию что бы она не выдавала предупреждение от том что не явное преобразование строки в число. то есть implicit conversion from 'string' to 'number' Я не понял: зачем Вы хотите присвоить числовой переменной строковое название символа?Чтоб не ругалась вместо "int instrument;" пишите "string instrument;" (для 600 - возможны варианты)Вы здесь не раз задавали вопросы и получали ответы - обратной реакции нет - поняли/нет... Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 Спасибо, функция понятна, но что значит OP_BUYSTOP = 4; и OP_SELLSTOP = 5эти значения куда то надо подставлять? OP_BUYSTOP = 4; Это название константы и её значение - можете использовать оба значения - без разницы (правильнее использовать OP_BUYSTOP, т.е. название константы, во избежании проблем перекомпиляции в других билдах)как я понял функция перебирает ордера с помощью цикла for, но если ордеров несколько будет возвращать тикеты всех ордеров без разбора.Нет, только первого найденного - мы же не в курсе логики Вашего бота, как он ставит ордера и сколько нам не ведомо. И что значит "без разбора"? - сортировка по символу, магику и типу не устраивает? Ссылка на сообщение Поделиться на другие сайты More sharing options...
fintech Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 Да, сортировка устраивает. но если ордеров несколько тогда подумал что возвратит тикет любого найденного ордера.Спасибо буду пробовать добавлять в код. Ссылка на сообщение Поделиться на другие сайты More sharing options...
stepa31101 Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 у меня маленький вопрос: Как избавиться от этих предупреждений (return value of 'OrderModify' should be checked, и return value of 'OrderClose' should be checked? Ссылка на сообщение Поделиться на другие сайты More sharing options...
stepa31101 Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 у меня маленький вопрос: Как избавиться от этих предупреждений (return value of 'OrderModify' should be checked, и return value of 'OrderClose' should be checked? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 у меня маленький вопрос: Как избавиться от этих предупреждений (return value of 'OrderModify' should be checked, и return value of 'OrderClose' should be checked?Код дадите? Ссылка на сообщение Поделиться на другие сайты More sharing options...
dzennn2 Опубликовано 14 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июня, 2014 Например bool Rezultat = OrderModify(...............);Т.е. просто надо присвоить результат ф-ции левой переменной, а эту перменную можно потом не использовать.При успешном выполнении будет - true Ссылка на сообщение Поделиться на другие сайты More sharing options...
leshik3i Опубликовано 15 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 июня, 2014 Доброго здоровья всем! Долго искал этот курс, но пока искал МетаЭдитор стал на MQL5 и теперь видео урок не сочетаются с МетаЭдитором. Подскажите пожалуйста как решить эту задачку, перевести МетаЭдитор на MQL4? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 июня, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 июня, 2014 перевести МетаЭдитор на MQL4?Скачайте терминал 509 билда (есть в Гугле и в этом блоге)После распаковки терминала в директории будет старый Метаэдитор Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти