loveЦ Опубликовано 21 октября, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 октября, 2018 Единственное, что подправить: значение прироста депозита на мин.лот округлять не до десятых, а до сотых долей процента для более гибкой настройки(просто в большинстве сделок этих ботов прибыль в % прироста депозита не превышает 0.1% на мин.лот 0.01). Логика закрытия по проценту от депозита (как это работает):Если стоит true , т.е. разрешено закрытие ордеров по проценту от депозита, то запускается две функции. 1-ая рассчитывает общий профит по всем ордерам относительно валюты и магика. 2-ая рассчитывает сумму в валюте депозита относительно указанного процента. Процент указывается пользователем с диапазоном от 0.01% до 100%(стоит защита от "дурака"- нельзя указать больше 100 или меньше 0.01). Все расчеты не зависят от объема открытых позиций.Или я не понимаю задачу, или Вы ее не правильно поставили.Добавлено: 21-10-2018 12:23:49Единственное - остался открытым вопрос по ФорсТрейдеру и Черепахам: стоит ли там оставлять открытие позиции 2-мя ордерами. По поводу кода: "копаться" в коде мной не созданном трудно и не хочется. Единственное, что хотелось бы отметить, много там не понятного, например две функции закрытия всех ордеров, которые для моей задачи не работают. Пришлось добавить еще одну (в конце кода) :-bПроще говоря, постарайтесь разобрать в логике самостоятельно. Изменено 21 октября, 2018 пользователем loveЦ 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndrewR Опубликовано 21 октября, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 октября, 2018 Извините, что запутал своим неточным выражением мыслей. Сам сейчас поразмыслил - закрытие по % прироста депозита на мин лот 0.01 и оптимизация по этому параметру - то же самое, что и оптимизация по ТП. Так что спасибо за доработку. Думаю что всё вы сделали правильно. Пока нет возможности и времени потестировать доработку. Добавлено: 22-10-2018 07:39:12Добрый день, уважаемые программисты форума! Может кто помочь с доработкой? Нужно к 2-м ботам прикрутить фильтр времени(простой, по дням недели: в пн торгуем, во вт - нет и т.д.). Сам пробовал доработать, но т.к. в программировании не силён, просто пробовал выдернуть планировщик из другого бота с открытым кодом. По факту код ошибок не даёт, а планировщик не работает. Исходники ботов прикрепляю к посту. Мои "доработки" выложены в посте №1020 выше.PS. Вот ради чего все эти попытки подружить ботов с тайм-фильтром(вл. картинка)Force_Trader_v1.0%_Profit.mq4Turtles_v1.0%_Profit.mq4Новый_точечный_рисунок.jpg Изменено 22 октября, 2018 пользователем AndrewR Ссылка на сообщение Поделиться на другие сайты More sharing options...
Skytype Опубликовано 30 октября, 2018 Поделиться Доработка советников: общая тема Опубликовано 30 октября, 2018 Народ хочу в советник добавить функцию, которая через 50 пунктов прибыли будет переводить открытый ордер в безубыток.Написал код ниже приведенный, но в тестере иногда переводит в безубыток при меньшем количестве пунктов прибыли.Можете сказать где где ошибка? Спойлер void ChekOrderProfit(){ if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) { pips = OrderProfit(); if(pips > 50) { EditOrder(OrderOpenPrice(), OrderTakeProfit(), OrderOpenPrice()); // эта функция цену открытия подставляет в стоплос } } if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) { pips = OrderProfit(); if(pips > 50) { EditOrder(OrderOpenPrice(), OrderTakeProfit(), OrderOpenPrice()); // эта функция цену открытия подставляет в стоплос } } }} Добавлено: 30-10-2018 16:35:46Блин, я понял в чем была ошибка. Здесь pips = OrderProfit(); я получаю значение прибыли, а не количество пунктов.Пока я ставил лот 0.1 все было хорошо, а как только я поставил 0.5, то и значение прибыли увеличилось и функция срабатывала раньше необходимого.Теперь у меня следующий вопрос, а как грамотно написать код для получения количества пунктов?Добавлено: 30-10-2018 16:47:39В общем решил я эту проблему вместе с гуглом) Спойлер void ChekOrderProfit(){ if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) { double pips = 0; pips = NormalizeDouble((Bid-OrderOpenPrice())/Point, 0); if(pips > 50) { EditOrder(OrderOpenPrice(), OrderTakeProfit(), OrderOpenPrice()); } } if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) { double pips = 0; pips = NormalizeDouble((OrderOpenPrice()-Ask)/Point, 0); if(pips > 50) { EditOrder(OrderOpenPrice(), OrderTakeProfit(), OrderOpenPrice()); } } } return;} Изменено 7 ноября, 2018 пользователем 0ll 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
arabeski88 Опубликовано 5 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 5 ноября, 2018 =b Изменено 8 ноября, 2018 пользователем arabeski88 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 7 ноября, 2018 Господа Доктора отзовитесь хоть кто нибудьВаш вопрос не простой, логические ошибки самые сложные. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр1978 Опубликовано 18 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 18 ноября, 2018 Привет Всем, есть ли здесь программисты ? Очень нужна Ваша помощь, работы как мне кажется на пять минут , сделайте пожалуйста закрытие ордеров в пятницу за час до закрытия рынка тоесть в 23.00 ^:)^ Highlow_EA_5.20.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 19 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 19 ноября, 2018 Привет Всем, есть ли здесь программисты ? Очень нужна Ваша помощь, работы как мне кажется на пять минут , сделайте пожалуйста закрытие ордеров в пятницу за час до закрытия рынка тоесть в 23.00 ^:)^ Проверьте, я не тестировал. В настройках ставите СloseAll = true (закрыть все сделки в пятницу). Сделки будут закрываться в пятницу в 23-00 по времени терминалаHighlow_EA_5.20.mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 19 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 19 ноября, 2018 Добрый день, уважаемые программисты форума! Может кто помочь с доработкой? Нужно к 2-м ботам прикрутить фильтр времени(простой, по дням недели: в пн торгуем, во вт - нет и т.д.). Сам пробовал доработать, но т.к. в программировании не силён, просто пробовал выдернуть планировщик из другого бота с открытым кодом. По факту код ошибок не даёт, а планировщик не работает. Исходники ботов прикрепляю к посту. Мои "доработки" выложены в посте №1020 выше.PS. Вот ради чего все эти попытки подружить ботов с тайм-фильтром(вл. картинка) Force_Trader_v1.0%_Profit.mq4 Изменено 19 ноября, 2018 пользователем vitek01 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 19 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 19 ноября, 2018 PS. Вот ради чего все эти попытки подружить ботов с тайм-фильтром(вл. картинка) Не понял в чем проблема или вопрос? Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 19 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 19 ноября, 2018 PS. Вот ради чего все эти попытки подружить ботов с тайм-фильтром(вл. картинка) Не понял в чем проблема или вопрос? хм...ему нужно чтобы советник распознавал какой сегодня день недели и не торговал например в понедельник или пятницу, чтобы не слить профит, а в остальные дни зарабатывал профит, как еще пояснить.私はあなたの事が大 好きです。 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 19 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 19 ноября, 2018 хм...ему нужно чтобы советник распознавал какой сегодня день недели и не торговал например в понедельник или пятницу, чтобы не слить профит, а в остальные дни зарабатывал профит, как еще пояснить. Уважаемый vitek01! Была конкретная задача "... сделайте пожалуйста закрытие ордеров в пятницу за час до закрытия рынка тоесть в 23.00...", что было сделано. Советник закрывает ордера в пятницу, за час до закрытия рынка, тоесть в 23.00!!!Я, думаю, человек сам разберется, что ему надо и отпишится 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Skytype Опубликовано 20 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 20 ноября, 2018 Прошу помочь,Для удобства взял функцию из чужого советника, которая выставляет ордер.Функция работает, но мне нужно еще указывать цвет для ордера, а как подставить его в функцию не пойму.Вот сама функция: Спойлер // Открытие ордераint NewOrder(int Cmd,double lot,double pr,double tp=0,double sl=0){int tick=0; for(int er=0;er {while(!IsTradeAllowed()) Sleep(100); tick=OrderSend(Symbol(),Cmd,lot,pr,Slippage,sl,tp,StrategyName,Magic,0, CLR_NONE); if(tick>0) break; Print("#",OrderTicket()," Error: ",GetLastError()," Function: NewOrder(",Cmd,",",lot,",",pr,",",tp,",",sl,") №",er); Sleep(1000);}return(tick);} Так я вызываю функцию: Спойлер NewOrder(OP_BUY, Lot, Ask, mTakeProfit, mStopLoss); Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndrewR Опубликовано 20 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 20 ноября, 2018 Добрый день, уважаемые программисты форума! Может кто помочь с доработкой? Нужно к 2-м ботам прикрутить фильтр времени(простой, по дням недели: в пн торгуем, во вт - нет и т.д.). Сам пробовал доработать, но т.к. в программировании не силён, просто пробовал выдернуть планировщик из другого бота с открытым кодом. По факту код ошибок не даёт, а планировщик не работает. Исходники ботов прикрепляю к посту. Мои "доработки" выложены в посте №1020 выше.PS. Вот ради чего все эти попытки подружить ботов с тайм-фильтром(вл. картинка) Благодарю за доработку! А в этого бота такой же планировщик получится вписать?Turtles_v1.0%Prof.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 20 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 20 ноября, 2018 Прошу помочь,Для удобства взял функцию из чужого советника, которая выставляет ордер.Функция работает, но мне нужно еще указывать цвет для ордера, а как подставить его в функцию не пойму. В конце этой строчкиtick=OrderSend(Symbol(),Cmd,lot,pr,Slippage,sl,tp,StrategyName,Magic,0, CLR_NONE); Т.Е.CLR_NONE - заменить на цвет, например на синий Blue (заменить CLR_NONE на Blue)P.S. Ваша функция универсальна, а открываете своим вызовом рыночный ордер на бай. Если вы будете вызывать ордер на сел то он тоже будет синий. Тут надо делать проверку на тип открываемого ордера и менять цвет в зависимости от этого. Или менять саму функцию и вызов ее)))Если будет не понятно, присылайте код. Если надо подробней объяснить, буду объяснять.Удачи! Изменено 20 ноября, 2018 пользователем loveЦ Ссылка на сообщение Поделиться на другие сайты More sharing options...
Skytype Опубликовано 20 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 20 ноября, 2018 Хотелось чтобы при вызове функции я указал к примеру Blue, и функция подставляла вместо CLR_NONE мой цвет.Но делать в самой функции проверку на ордер и выставлять соответствующий цвет тоже идея.Но все же есть возможность при вызове функции указывать свой цвет при помощи переменной?Например так: Спойлер NewOrder(OP_BUY, Lot, Ask, mTakeProfit, mStopLoss, Blue); Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 20 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 20 ноября, 2018 Хотелось чтобы при вызове функции я указал к примеру Blue, и функция подставляла вместо CLR_NONE мой цвет.Но делать в самой функции проверку на ордер и выставлять соответствующий цвет тоже идея.Но все же есть возможность при вызове функции указывать свой цвет при помощи переменной? Честно, не понимаю зачем такие тогда сложности просто вместо всего этого:1. Удалите функцию2. Вместо вызова функции откройте сразу ордер с цветом,т.е. вместо вызова вставить например на BUYOrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, mTakeProfit, mStopLoss, "", 0, 0, Blue); на SELLOrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, mTakeProfit, mStopLoss, "", 0, 0, Red);Проверьте, попробуйте, так быстрей и проще))) Иногда микросекунды играют роль на открытие ордера, а с функцией сов теряет очень много времени, если правда эта функция не нужна для чего то еще)Добавлено: 20-11-2018 18:11:43Например так: а можно и такпоменяйте int NewOrder(int Cmd,double lot,double pr,double tp=0,double sl=0) на int NewOrder(int Cmd,double lot,double pr,double tp=0,double sl=0, color clr)a строчку tick=OrderSend(Symbol(),Cmd,lot,pr,Slippage,sl,tp,StrategyName,Magic,0, CLR_NONE); на tick=OrderSend(Symbol(),Cmd,lot,pr,Slippage,sl,tp,StrategyName,Magic,0, clr);и вызывайте функцию как хотелиNewOrder(OP_BUY, Lot, Ask, mTakeProfit, mStopLoss, Blue); Изменено 20 ноября, 2018 пользователем loveЦ Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 20 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 20 ноября, 2018 с функцией сов теряет очень много времениВот здесь я не согласен, в нашей ветке мы не ищем лёгких путей и решений для тестера, в реальной торговле возникают ошибки открытия, которые нужно обрабатывать, функция всё равно будет быстрее чем у некоторых пинг до сервера.Короче: функции открытия ордеров с обработкой ошибок нужны. Ваш второй пример с передачей цвета в функцию - то что необходимо. Спасибо. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 21 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 ноября, 2018 с функцией сов теряет очень много времениВот здесь я не согласен, в нашей ветке мы не ищем лёгких путей и решений для тестера, в реальной торговле возникают ошибки открытия, которые нужно обрабатывать, функция всё равно будет быстрее чем у некоторых пинг до сервера.Короче: функции открытия ордеров с обработкой ошибок нужны. Ваш второй пример с передачей цвета в функцию - то что необходимо. Спасибо. Наверно я не так выразился))) Попытаюсь оправдаться. Считаю, что открытие ордера можно использовать и без функции, а вот выставление стопов и тейка - через функцию с обработчиком ошибок, т.к. ошибки обычно там.Простой пример для BUY// Получаем сигнал на покупку BuySignal = iCustom(_____________________________________); // если есть сигнал индикатора if (BuySignal > 0) { // Open buy order // открываем ордер на покупку ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue); // если ордер был успешно открыт, if (ticket > 0) { // то его необходимо выбрать, для дальнейшей установки ему StopLoss и TakeProfit if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) { // рассчитываем StopLoss и нормализуем цену SL = NormalizeDouble(Ask-StopLoss*Point, Digits); // рассчитываем TakeProfit и нормализуем цену TP = NormalizeDouble(Ask+TakeProfit*Point, Digits); // попытаемся установить ордеру рассчитанные уровни StopLoss и TakeProfit res = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0); if (!res) // и если не удалось, то выведем сообщение в журнал регистрации для дальнейшего анализа причин Print("Ошибка модификации ордера на покупку, ASK=" + DoubleToStr(Ask) + ", SL=" + DoubleToStr(SL) + ", TP=" + DoubleToStr(TP)); } } } 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 21 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 ноября, 2018 Благодарю за доработку! А в этого бота такой же планировщик получится вписать? Мне кажется неудобно постояно перегружать советник если нужно изменить день торговли.Простое решение небольшая панелька с кнопками управления,если зеленый цвет- торгуем, желтый сидим на заборе и не дергаемся.Turtles_v1.0%Prof.mq4 Изменено 21 ноября, 2018 пользователем vitek01 1 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Skytype Опубликовано 21 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 ноября, 2018 можно и такпоменяйте int NewOrder(int Cmd,double lot,double pr,double tp=0,double sl=0) на int NewOrder(int Cmd,double lot,double pr,double tp=0,double sl=0, color clr)a строчку tick=OrderSend(Symbol(),Cmd,lot,pr,Slippage,sl,tp,StrategyName,Magic,0, CLR_NONE); на tick=OrderSend(Symbol(),Cmd,lot,pr,Slippage,sl,tp,StrategyName,Magic,0, clr);и вызывайте функцию как хотелиNewOrder(OP_BUY, Lot, Ask, mTakeProfit, mStopLoss, Blue); Вот это и нужно было, я не знал что есть тип переменной color. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 21 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 ноября, 2018 Считаю, что открытие ордера можно использовать и без функцииБывают следующие ошибки открытия, на которые я пишу обработку:- Нет связи с торговым сервером- Брокер или Торговый сервер занят или Подсистема торговли занята- Цена изменилась или Новые цены или Нет ценДругие ошибки или игнорируются или (если например, деньги кончились) сова останавливается.Считаете, что это лишнее? - Ваше право! 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 21 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 21 ноября, 2018 Бывают следующие ошибки открытия, на которые я пишу обработку: Уважаемый Oll!Здесь на форуме я пытаюсь выполнять точно поставленные задачи и показать как это сделать проще. Писать функции с различными защитами от ошибок, ради цвета, считаю не целесообразно. Skytype просил цвет открытых ордеров, я ему предложил через основную функцию OrderSend(), чтобы начать с простого. В итоге мы нашли то что ему надо.Я не сомневаюсь в Ваше компетентности в программировании, впредь попытаюсь меньше комментировать свои поправки, чтобы очередной раз не быть не понятым)))) 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Skytype Опубликовано 22 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 22 ноября, 2018 А советник может видеть мои линии (Trendline) ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 22 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 22 ноября, 2018 А советник может видеть мои линии (Trendline) ? может.int ObjectFind( string object_name // имя объекта ); Ссылка на сообщение Поделиться на другие сайты More sharing options...
Skarb911 Опубликовано 24 ноября, 2018 Поделиться Доработка советников: общая тема Опубликовано 24 ноября, 2018 Здравствуйте!Может адресом ошибся, тема "Доработка советников"..У меня есть хороший сов, мартин..Хотел найти специалистов доработать, сам не в теме, но, как позже выяснилось исполнительного кода mql4 нет, программист дает обертку в EX4. Заказывал сова по моему сценарию, хотел переделать...Завёл две темы..в конце приглушил: "с таким объемом работы не ко мне."http://zakaz.opentraders.ru/47398.html#comment140952http://zakaz.opentraders.ru/48344.htmlСоветника задумал как помощника по ТС "ОРАКУЛ", чтобы сов выставлял шаблон с линиями, и эти линии можно было перетаскивать к уровням..Короче 2.5 месяца объяснял, чего я хочу добиться, не получилось...Если у кого возникнет желание просмотреть темы с ТЗ, по ссылкам, то WELCOMЕ...Спасибо! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти