А зачем сносить? здесь коммерция запрещена, а не поиск услуги, так что всё нормально.Щас снесут...
Dob2k я понимаю, что программировать не все могут, но поиском в интернете нужно уметь пользоваться... Вот нашёл для Вас советник.
От Garfik, 4 августа, 2011 в Уголок Программиста
А зачем сносить? здесь коммерция запрещена, а не поиск услуги, так что всё нормально.Щас снесут...
Господа товарищи, помогите , не пойму в чем дело. В тестере сова ставит безубыток, а на демо нет. :((
В тестере сова ставит безубыток, а на демо нет.
//+------------------------------------------------------------------+
bool ModifyOrder (int aticket, double aprice, double astoploss,double atakeprofit, datetime expiration,color arrow_color = clrRed){if (IsStopped())
{Print("Ошибка, остановлен: IsStopped() == true");return(false);}int TryCount = 20;int cnt = 0;while(!IsTradeAllowed() && cnt cnt++;}if (!IsTradeAllowed()){Print("Ошибка: Операция недопустима - IsTradeAllowed()==false");return(false);}if (OrderSelect(aticket, SELECT_BY_TICKET,MODE_TRADES))
{string symbol = OrderSymbol();int digits = int(MarketInfo(symbol, MODE_DIGITS));if (digits > 0){aprice = NormalizeDouble(aprice,digits);astoploss = NormalizeDouble(astoploss,digits);
atakeprofit = NormalizeDouble(atakeprofit,digits);}}int err = GetLastError();err = 0;bool exit_loop = false;bool result = false;while (!exit_loop){
if (IsTradeAllowed()){result = OrderModify(aticket, aprice, astoploss, atakeprofit, expiration, arrow_color);err = GetLastError();}else cnt++;if (result == true)
exit_loop = true;switch (err){case ERR_NO_ERROR:exit_loop = true;break;case ERR_NO_RESULT:exit_loop = true;break;case ERR_SERVER_BUSY:case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:case ERR_OFF_QUOTES:case ERR_BROKER_BUSY:case ERR_TRADE_CONTEXT_BUSY:case ERR_TRADE_TIMEOUT:cnt++;break;case ERR_PRICE_CHANGED:
case ERR_REQUOTE:RefreshRates();continue;default:exit_loop = true;break;}if (cnt > TryCount)exit_loop = true;if (!exit_loop){Print("Ошибка, попыток: (" + IntegerToString(cnt) + "/" + IntegerToString(TryCount));
Sleep(500);RefreshRates();}if (exit_loop){if ((err != ERR_NO_ERROR) && (err != ERR_NO_RESULT))Print("Ошибка: " + IntegerToString(err));}}
if ((result == true) || (err == ERR_NO_ERROR)){Print("Успешная модификация");if(OrderSelect(aticket, SELECT_BY_TICKET, MODE_TRADES)){OrderPrint();
return(true);}else{return(false);}}if (err == ERR_NO_RESULT){return(true);}Print("Ошибка модификации после " + IntegerToString(cnt) + " попыток");
Print("Ошибка модификации: " + IntegerToString(aticket) + " " + _Symbol + "@" + DoubleToString(aprice) + " tp@" + DoubleToString(atakeprofit) + " sl@" + DoubleToString(astoploss));
Print("Ошибка : " + IntegerToString(err));return(false);}
Все работает кромме бу.
А эту ф-ю я просто ужал в строчку.
Все индикаторы считаются каждый тик.
Изменено 18 сентября, 2018 пользователем Серега7317
Есть советник для ручной торговли, больше похож на тестировние стратегий. Но не хватает функционала. Если можно, добавте умножитель лота следующей сделки и общий профит, при котором закрываются все открытые ордера. Хочу протестировать ряд индикаторов по такой схеме. Поступает сигнал открываю ордер. Каждый следующий ордер с умножением. Закрываются ордера в указанном профите. Можно писы или денежный показатель. Советник прилагаю. И по возможности установите инфопанель для мониторинга торговли. Инфопанель так же прилагаю.
Изменено 7 октября, 2018 пользователем DirektoLTD
Никто не пробовал переписывать Ilan 1.6 под MQL5 ?
Изменено 7 октября, 2018 пользователем Pavel888
Приветствую, уважаемые программисты форума!
Есть просьба одна к тем, кто разбирается и пишет коды советников. Просьба такова: нужен блок кода, который бы можно было встроить в советник, и который закрывает ордера, открытые этим советником, по достижении этими ордерами определенного "процента прибыли на мин.лот 0.01". Желательно процент прибыли рассчитывать от баланса, а не от эквити. И значение вводимой переменной ProfitMinLot сделать не до целых, а до десятых долей процента.
Пример: открылся сов лотом 0.01 по какой-либо паре, счет с балансом 100USD, настройка ProfitMinLot стоит 5%, прибыль достигла 5USD - кроем ордер. На ордер 0.02 профит нужен 10USD соответственно.
Возможно, это уже есть в каких-либо совах с открытым кодом, но я пока таковых не нашёл.
Сам в написании кода не силён. Только модифицировал совы "переносом" блоков кода с добавлением недостающих переменных из одной совы в другую.
Есть просьба одна к тем, кто разбирается и пишет коды советников. Просьба такова: нужен блок кода, который бы можно было встроить в советник, и который закрывает ордера, открытые этим советником, по достижении этими ордерами определенного "процента прибыли на мин.лот 0.01". Желательно процент прибыли рассчитывать от баланса, а не от эквити. И значение вводимой переменной ProfitMinLot сделать не до целых, а до десятых долей процента.
Ок. Чуть позже. Код открытый.
Здравствуйте.Можете дописать в советнике,что бы была возможность выставить время в которое нужно выставлять отложенные ордера
Добрый день! Есть советник, задумка для дальнейшего прогона интересна, но почему- то даже не смотря на то, что увеличенные мартингейлом лоты, закрывающиеся по ТП не закрывают минуса предыдущих сделок. Почему-то меняется сам ТП новых сделок. Помогите кто может исправить эту проблему,заранее благодарю .
Изменено 11 октября, 2018 пользователем loveЦ
Мне необходимо добавить магик код в советник Profiter_105_mt4 Его там нет и советник начинает работать с любым ордером вручную открытым, т.е. магиком 0
Хорошо бы было работать только с одним единственным ордером по мейджик коду. Со вторым ордеров будет работать второй экземпляр советника.
Мне необходимо добавить магик код в советник Profiter_105_mt4 Его там нет и советник начинает работать с любым ордером вручную открытым, т.е. магиком 0
Хорошо бы было работать только с одним единственным ордером по мейджик коду. Со вторым ордеров будет работать второй экземпляр советника.
К сожалению такого файла нет. Советник имеет закрытый код и терминал не конвертирует его в файл MQL4 Так может написать подобный советник для частичного закрытия ордера и переноса в безубыток, но только чтобы в настройках имелось поле: магик
Изменено 15 октября, 2018 пользователем seric245
К сожалению такого файла нет. Советник имеет закрытый код и терминал не конвертирует его в файл MQL4 Так может написать подобный советник для частичного закрытия ордера и переноса в безубыток, но только чтобы в настройках имелось поле: магик
Изменено 16 октября, 2018 пользователем loveЦ
Приветствую, уважаемые программисты форума!
Есть просьба одна к тем, кто разбирается и пишет коды советников. Просьба такова: нужен блок кода, который бы можно было встроить в советник, и который закрывает ордера, открытые этим советником, по достижении этими ордерами определенного "процента прибыли на мин.лот 0.01". Желательно процент прибыли рассчитывать от баланса, а не от эквити. И значение вводимой переменной ProfitMinLot сделать не до целых, а до десятых долей процента.
Пример: открылся сов лотом 0.01 по какой-либо паре, счет с балансом 100USD, настройка ProfitMinLot стоит 5%, прибыль достигла 5USD - кроем ордер. На ордер 0.02 профит нужен 10USD соответственно.
Возможно, это уже есть в каких-либо совах с открытым кодом, но я пока таковых не нашёл.
Сам в написании кода не силён. Только модифицировал совы "переносом" блоков кода с добавлением недостающих переменных из одной совы в другую.
Здравствуйте, только начал изучать MQL4.
Нужно подключить индикатор Oscillator of Indicator and MA.mq4 в советник.
Для того чтобы им пользоваться мне нужно получить и записать в переменные значения линий и шкалы с помощью iCustom, но найти индексы линий и шкалы не могу.
Вот в коде индикатора эти переменные заданы:
#property indicator_buffers 5
#property indicator_color1 clrLimeGreen
#property indicator_color2 clrFireBrick
#property indicator_color3 clrAqua
#property indicator_color4 clrMagenta
а вот задаются индексы:
//--- indicator buffers mapping
IndicatorBuffers(indicator_buffers);
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_LINE);
SetIndexStyle(3,DRAW_LINE);
SetIndexStyle(4,DRAW_NONE);
SetIndexBuffer(0,OscBuffer1);
SetIndexBuffer(1,OscBuffer2);
SetIndexBuffer(2,IndicatorBuffer);
SetIndexBuffer(3,SignalBuffer);
SetIndexBuffer(4,Oscillator);
SetIndexShift(3,MAShift);
и какие индексы мне брать не пойму, может кто сказать?
В Вашем индикаторе 2 линии во 2 и 3 буфере, гистограмма состоит тоже из 2 буферов №№ 0 и 1 они разного цвета. Если нужны все линии, то нужно 4 раза объявить iCustom с одинаковыми параметрами и разными № буфера.какие индексы мне брать не пойму, может кто сказать?
Спасибо, а как ты определил, какой номер буфера за что отвечает?
Обрати внимание на надписи DRAW_HISTOGRAM - гистограмма, DRAW_LINE - линия, цифрой обозначается №буфера, с цветом чуть сложнее: если номер буфера = 3, то номер линии для цвета = 4 (отсчёт не с 0, а с 1), т.е. для буфера 3 (линия) - indicator_color4 clrMagentaкак ты определил, какой номер буфера за что отвечает?
Вроде как понял.
А что здесь SetIndexStyle(4,DRAW_NONE);?
Это не отображаемый буфер для промежуточных расчётов. Вам нужно справкой пользоваться - в редакторе выделили интересуемое слово и открыли редактор, он сразу покажет справку по этому слову.А что здесь SetIndexStyle(4,DRAW_NONE);?
Изменено 18 октября, 2018 пользователем vitek01
День добрый! Задача по доработке состоит из 2 моментов:
1) добавить возможность закрывать позиции, открытые советником, не только по встроенным фильтрам, ТП и СЛ, а ещё и по приросту депозита. Оставить кнопку выбора: закрывать позиции по стандарту, или по приросту депозита. Расчёт прироста депозита:
- сов при открытии позиции записывает текущее значение баланса в память;
- пользователь в настройках задаёт значение прироста депозита на мин лот 0.01 (думаю нужно сделать с точностью до 0,1% на лот 0,01);
- по достижении ордером заданного процента профита - ордер прикрывается.
Пример: открылся сов лотом 0.01 по какой-либо паре, счет с балансом 100USD, настройка ProfitMinLot стоит 5%, прибыль достигла 5USD - кроем ордер. На ордер 0.02 профит нужен 10USD соответственно.
Так как совы, предложенные для доработки, открывают по 2 ордера сразу, то возможно сделать настройку процента прироста депозита для каждого из 2 ордеров индивидуально.
2) добавить планировщик времени работы(6 временных интервалов на сутки), - сов, идею планировщика которого желательно копировать - LaguerreScalper(он, к сожалению только в ex4).
Советников для доработки - аж 3 штуки. Но в каждом из них нужно добавить одни и те же функции, что описаны выше.
Исходники сов для доработки прилагаю.
Force_Trader_v1.0.mq4
Milky_way_EA_v3.24_m07_DayChange.mq4
Turtles_v1.0.mq4
Laguerre_v1.05.ex4
День добрый! Задача по доработке состоит из 2 моментов:
1) добавить возможность закрывать позиции, открытые советником, не только по встроенным фильтрам, ТП и СЛ, а ещё и по приросту депозита. Оставить кнопку выбора: закрывать позиции по стандарту, или по приросту депозита. Расчёт прироста депозита:
- сов при открытии позиции записывает текущее значение баланса в память;
- пользователь в настройках задаёт значение прироста депозита на мин лот 0.01 (думаю нужно сделать с точностью до 0,1% на лот 0,01);
- по достижении ордером заданного процента профита - ордер прикрывается.
Пример: открылся сов лотом 0.01 по какой-либо паре, счет с балансом 100USD, настройка ProfitMinLot стоит 5%, прибыль достигла 5USD - кроем ордер. На ордер 0.02 профит нужен 10USD соответственно.
Так как совы, предложенные для доработки, открывают по 2 ордера сразу, то возможно сделать настройку процента прироста депозита для каждого из 2 ордеров индивидуально.
Спасибо за труды!
Единственное, что подправить: значение прироста депозита на мин.лот округлять не до десятых, а до сотых долей процента для более гибкой настройки(просто в большинстве сделок этих ботов прибыль в % прироста депозита не превышает 0.1% на мин.лот 0.01).
По поводу Милки: да, сделать 6 временных интервалов торговли. По примеру планировщика в LaguerreScalper:
MondayTrade__________false\true
MondayTimeFilter_1____false\true
MondayStartHour_1____0...23 \\значение задаётся трейдером
MondayStopHour_1____0...23
MondayTimeFilter_2____false\true....... и так 6 фильтров.
Единственное - остался открытым вопрос по ФорсТрейдеру и Черепахам: стоит ли там оставлять открытие позиции 2-мя ордерами. Просто в оригиналах сов на их мониторингах иногда открытие совершается одним ордером, а иногда двумя. Задано ли это в коде, или открытие 2-го ордера не происходило из-за косяков брокера - мне осталось неясным. Но в любом случае, если оставлять открытие 2-мя ордерами, - надо чтобы логика их закрытия была разная. Например 1-й ордер закрывается по % прироста депозита, а 2-й - по тралу или индикаторам(как в оригинале).
Как обещал ранее - выкладываю Черепах и ФорсТрейдера с прилепленым мной планировщиком. Если на трудно - можете код посмотреть, правильно ли я его перенес с другого сова?
Ваш блок с закрытием по приросту депозита не сложно будет в эти доработанные коды добавить?
Изменено 21 октября, 2018 пользователем AndrewR
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем