master_255 Опубликовано 10 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 10 марта, 2017 Добрый день!Нашел в сети удобный для меня советник, в программировании не силен, не могу изменить эксперта чтобы он компилировался на новом MetaEditor. Также необходимо прикрутить к нему локирование позиций после прохождения определенного количества пунктов от крайнего ордера. FixedSmile_2016.zip Изменено 6 декабря, 2017 пользователем Pavel888 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Askar Опубликовано 22 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 22 марта, 2017 Моя цель довести советник до максимальной эфиктивностиОсобенно PriceActionПока для начало взял PinBarДанный советник/индикатор будет развиваться во всех направлениях!Настройки:Div=3; // чем больше число тем длинее нос у PinBar-аBarHistory=200; // кол-во баров (для индикатора)bool Trade=false; // true - разрешать торговать советникуint StopLoss=150; // стоп лоссint TakeProfit=450; // таке профит PriceAction.mq4TesterGraph.gif Изменено 22 марта, 2017 пользователем Askar 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ironwolf Опубликовано 22 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 22 марта, 2017 2017.03.22 22:28:41.048 2007.03.05 03:42 PriceAction EURUSD,M5: OrderSend error 130Не тестится, 910 билд, тиковые котировки 99%, tickstory lite.Рекомендую добавить трендовый индикатор для фильтрации сигналов - ozymandias например. Изменено 22 марта, 2017 пользователем ironwolf Ссылка на сообщение Поделиться на другие сайты More sharing options...
Askar Опубликовано 22 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 22 марта, 2017 попробуй на часовом графике Ссылка на сообщение Поделиться на другие сайты More sharing options...
ironwolf Опубликовано 22 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 22 марта, 2017 попробуй на часовом графике Ок, но что если я хочу на 5 минутках пинбары скальпить по 10 пунктов?Добавьте, плз, описание настроек. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Askar Опубликовано 22 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 22 марта, 2017 Настпойки подобраны под часовой график.Побалуйся с takeProfit и stopLoss Добавлено: 22-03-2017 19:41:142017.03.22 22:28:41.048 2007.03.05 03:42 PriceAction EURUSD,M5: OrderSend error 130Не тестится, 910 билд, тиковые котировки 99%, tickstory lite.Рекомендую добавить трендовый индикатор для фильтрации сигналов - ozymandias например. Ок. Завтра же добавлю...( если честно я не очень доверяю этому индикатору но попробывать можно))) Ссылка на сообщение Поделиться на другие сайты More sharing options...
ironwolf Опубликовано 22 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 22 марта, 2017 я не очень доверяю этому индикатору Да можно любой - хоть машку прикрепите какую. Я к примеру его привел. Просто пин сам по себе, без подтверждения - убыточный, тут и тестить мне его не надо, проходил. Нужны фильтры по-любому.2017.03.22 22:51:07.719 2016.06.01 16:00 PriceAction AUDUSD,H1: OrderSend error 130 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Askar Опубликовано 22 марта, 2017 Поделиться Доработка советников: общая тема Опубликовано 22 марта, 2017 Фильтр имеется.Сделка открывается после того как low следующей свечи будет выше относительно маленькой тени PinBar Ссылка на сообщение Поделиться на другие сайты More sharing options...
AAPL Опубликовано 25 апреля, 2017 Поделиться Доработка советников: общая тема Опубликовано 25 апреля, 2017 Всем привет, советник выдает такую ошибку Forex-Flex-EA-4.53_fix AUDUSD,H1: Alert: News Indicator Not Found! News filter is being disabledСсылка на сайт, там он продается, есть мониторинги описание итд.http://www.forexflexea.com/ Forex-Flex-EA-4.53_fix.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 26 апреля, 2017 Поделиться Доработка советников: общая тема Опубликовано 26 апреля, 2017 Советник в скомпилированном (закрытом виде) виде. Но судя по ошибке, ему необходим некий новостной индикатор, которого у Вас нет в терминале. И он предупреждает, что новостной фильтр отключен. Ссылка на сообщение Поделиться на другие сайты More sharing options...
AAPL Опубликовано 26 апреля, 2017 Поделиться Доработка советников: общая тема Опубликовано 26 апреля, 2017 Это я понял,пробовал 2 новостных индикатора FFC и IceFX NewsInfo советник их не видит, вот и решил обратится на форум Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 26 апреля, 2017 Поделиться Доработка советников: общая тема Опубликовано 26 апреля, 2017 Это я понял,пробовал 2 новостных индикатора FFC и IceFX NewsInfo советник их не видит, вот и решил обратится на форум Какой именно индикатор ему нужен и путь его расположения, прописаны в коде, который, увы, не прочесть. Абы какой, понятное дело, он не увидит. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
dzennn2 Опубликовано 26 апреля, 2017 Поделиться Доработка советников: общая тема Опубликовано 26 апреля, 2017 Это я понял,пробовал 2 новостных индикатора FFC и IceFX NewsInfo советник их не видит, вот и решил обратится на форум Вот этот хочет...Причем версий этого индикатора море, попробуйте разные подсунуть.FFCal.ex4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AAPL Опубликовано 27 апреля, 2017 Поделиться Доработка советников: общая тема Опубликовано 27 апреля, 2017 Заработал сов, теперь осталось выбрать более менее подходящую стратегию, а то в нем 12 стратегий. Ссылка на сообщение Поделиться на другие сайты More sharing options...
kate Опубликовано 4 мая, 2017 Поделиться Доработка советников: общая тема Опубликовано 4 мая, 2017 Название стратегии: AutoProfit 3.0Год выпуска: 2014Сайт продажи: _http://111111Валютные пары: EUR/USDТаймфрейм: D1Время торговли:круглосуточноОписание: торговля против мелкого тренда, но в тоже время ориентируясь на глобальный тренд (MA=200), используя мартингейл.Есть предложение усовершенствовать советник Autoprofit 3.0. Прикрепляю оптимальный сет и предлагаю выпускать зверя на D1 только в покупки, когда дневки выше MA=200 и только в шорт, когда дневки ниже МА=200. Планирую внести в код изменения, чтобы автоматически распознавалось направление сделок, но я только начинаю вникать в кодинг, может кто-то поможет? На данный момент это рабочая полуавтоматическая система.Auto-profit3.0.mq4Auto-profit3.0.ex4EUR_USD_D1_safe.set Изменено 5 мая, 2017 пользователем test13 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
robinzon96 Опубликовано 4 мая, 2017 Поделиться Доработка советников: общая тема Опубликовано 4 мая, 2017 Описание скудное.. >:dНу да, "торговля против мелкого тренда, МА200, мартингейл"... так это сплошь и рядом..Описание системы, то где? Хотелось бы подробней.И советник есть, а принцип работы? Ну хотя бы пару строк. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
kate Опубликовано 5 мая, 2017 Поделиться Доработка советников: общая тема Опубликовано 5 мая, 2017 Описание скудное.. >:dНу да, "торговля против мелкого тренда, МА200, мартингейл"... так это сплошь и рядом..Описание системы, то где? Хотелось бы подробней.И советник есть, а принцип работы? Ну хотя бы пару строк. Алгоритм Цитата 1. Первое что делает советник, проводит анализ последних 2-х БАРов, а именно анализирует цены закрытия с текущей. Если цена закрытия предыдущего бара выше цены закрытия последнего, а текущая цена тоже выше цены закрытия последнего – то SELL. BUY при ситуации наоборот. Так рождается сигнал ко входу в рынок.2. Обработав сигнал советник открывает ордер с размером лота заданным в параметре «Lots», в настройках советника.3. После открытия ордера, производится его модификация. Выставляется ТakeРrofit.4. При удачном прогнозе, ордер закрывается по ТakeРrofit. Мы получаем прибыль и радость, советник возвращается к пункту №1.5. Но, что-то на рынке произошло, и цена идет в обратном направлении. Советник «хладнокровно и без паники» ждет сигнала от второго шага своего алгоритма и выставляет второй ордер в ту же сторону с таким же лотом, что и в первый раз.6. Тут же следует модификация, в части переноса планки ТakeРrofit. Теперь у Двух открытых (по разной цене) ордеров с одинаковыми лотами, и уровеньTP тоже одинаков.7. Ситуация аналогична п.№4.8. Обвал продолжается?! И снова советник ждет от шага номер два – сигнала, а получив открывает следующий ордер, разумеется в ту же сторону с лотом:а) Если в параметрах «MMType» = 1 (Мартингейла), то открываемый ордер будет равен размеру лота открытого помноженного на коэффициент выставленный в параметре «LotMultiplicator». Так же учитывается параметр «Step»;б) Если в параметрах «MMType» = 2, то объем сделки равен «Lots».9. Снова модификация открытых сделок, и вот у них уже новый уровень ТakeРrofit.Эпилог.Выполнение алгоритмом автоматической торговой системой пунктов с 7-го по 9-й будет продолжаться, пока не наступит момент, когда количество ордеров достигнет предела указанного в пункте параметров «MaxTrades».Параметр «MaxTrades», один из не многоих который можно менять на ходу. Т.е. Вами было изначально (например) выставлено не достаточное количество ордеров, тогда вы заходите в настройки, дважды кликаете в указанном параметре, изменяете на нужное количество, и советник снова начинает открывать ордера.Ждем, когда все они закроются по общему TP/Все хорошо! Но где же стоп-лосс?! У советника есть такой параметр «UseEquityStop». Он ограничивает общую допустимую просадку, и по умолчанию включен («True»). Размер просадки указывается в другом параметре (они стоят друг за дргом) «TotalEquityRisk», в процентном отношении к депозту. Тандем работы этих двух параметров выполняет роль стоп-лосса для всех открытых сделок эксперта одновременно.Торговая система не ставит себе «палки в колеса», в том плане, что если был открыт ордер «SELL», то пока не закроется он, ордера «BUY» не будет, а будет снова «SELL» А теперь моя идея по доработке: сделать так, чтобы сов открывал бай только над МА=200 по дневкам, а селл только ниже МА=200. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 5 мая, 2017 Поделиться Доработка советников: общая тема Опубликовано 5 мая, 2017 А теперь моя идея по доработке: сделать так, чтобы сов открывал бай только над МА=200 по дневкам, а селл только ниже МА=200. При наступлении основного условия на ПЕРВОГО ордера проверяете цену МА200. Если она выше, то только СЕЛЛ, ниже- то, соответственно, только БАЙ. Или вопрос не в этом? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 5 мая, 2017 Поделиться Доработка советников: общая тема Опубликовано 5 мая, 2017 kate, имхо, это плохая идея - ма200 слишком грубый определитель тренда для мартинов.Но вы можете её проверить - киньте за график любой пары МА200D1, выберите период теста, заблокируйте в настройках тестера торги против машки и прогоните тест.Думаю, несколько таких тестов прояснят картину вполне достаточно. Ссылка на сообщение Поделиться на другие сайты More sharing options...
makstreid Опубликовано 29 мая, 2017 Поделиться Доработка советников: общая тема Опубликовано 29 мая, 2017 Помогите кто нить скомпилировать этот код в советник, я полный дуб в этом #:-s . Сова имеет функцию нужную для моей стратегии обрезать часть прибыли (объема) . Нашел похожий код. А так мне надо чтобы после определенного количества пунктов обрезалась позиция. И чтобы сова могла обрезать сделки по всем открытым парам.Функция в сове вроде такая " close_lot=NormalizeDouble(OrderLots()/2,2);"2" это закрыть половину, округление согласно NormalizeDouble "+ Спойлер extern string General_settings ="-------------------------------------------------------";extern double Lots = 0.01;extern int Delta = 1;extern string Order_settings ="-------Настройки СЛ и ТП-------------------------------";extern int TakeProfit = 500;extern int StopLoss = 400;extern string Order_management ="-------Настройки Риск Менеджмента----------------------";extern bool fixed_sl=true;extern int NoLoss = 100;extern int NoLossFiboLevels = 60;extern int NoLossProfit = 0;extern string st5 ="-Настройки Дистанции и Процента для закрытия-----------"; extern bool Lot_Mode_Percent = true;extern int Lot_Percent_23_6 = 5; extern int Lot_Percent_38_2 = 20; extern int Lot_Percent_50 = 30;extern int Lot_Percent_61_8 = 40; extern string st6 ="-Веремя работы советника------------------------------"; extern int TimeStart = 01; // Время начала работы советникаextern int TimeEnd = 23; // Время окончания работы советникаextern int TimeStartMonday = 3; // Время начало торговли в понидельник extern int TimeEndFriday = 17; // Время после которого не торгуем в пятницу// Глобальные переменныеint LastTradeTimeBuy = 0; // Время последней открытой сделкиint LastTradeTimeSell = 0;int LastTradeBuy = 0; // Время последней открытой сделкиint LastTradeSell = 0; // Время последней открытой сделкиint MagicNumber= 0;double StopLossValue = 0;#define HR2400 86400 // 24 * 3600int TimeOfDay(datetime when){ return( when % HR2400 ); }datetime DateOfDay(datetime when){ return( when - TimeOfDay(when) ); }datetime Today(){ return(DateOfDay( TimeCurrent() )); }datetime Tomorrow(){ return(Today() + HR2400); }datetime Yesterday(){ return( iTime(NULL, PERIOD_D1, 1) ); }int tomorrow_day =0;int current_day = 0;int count_buy = 0;int count_sell = 0;//------- Внешние параметры модуля -----------------------------------extern string _Parameters_b_Lot = "- Параметры модуля расчёта лота----------------------";extern int LotsWayChoice = 1; // Способ выбора рабочего лота: // 0-фиксированный, // 1-процент от депозита, // 2-фиксированно-пропорциональный, // 3-фракционно-фиксированный,extern int LotsPercent = 10; // Процент от депозитаextern int LotsDeltaDepo = 500; // Коэффициент приращения депозитаextern int LotsDepoForOne = 500; // Размер депозита для одного минилотаextern int LotsMax = 1000; // Максимальное количество минилотов//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+double fPreviousBid = 0; // значение bid на предыдущем тикеstring symb;int OnInit(){ fPreviousBid = 0; return(INIT_SUCCEEDED);}void OnTick() { symb = _Symbol; Bkl(); }void Bkl() { static datetime bodCurr; datetime bodPrev = bodCurr; bodCurr = DateOfDay( TimeCurrent() ); bool isNewDay = bodPrev != bodCurr; if(isNewDay){ int part_order_close_sell_23_6 = 0; };if (TradeStatuse() > 0) return (0);double SL=0,TP=0,NoLossTP=0,Current_Value,Bid_Value_23_6=0,Ask_Value_23_6=0,Bid_Value_38_2=0,Ask_Value_38_2=0,Bid_Value_50=0,Ask_Value_50=0,Bid_Value_61_8=0,Ask_Value_61_8=0,Lot_23_6=0,Lot_38_2=0,Lot_50=0,Lot_61_8=0,Spread=Ask-Bid,StopLevel=Point*MarketInfo(Symbol(),MODE_STOPLEVEL),HighD1=iHigh(Symbol(),PERIOD_D1,1),LowD1=iLow(Symbol(),PERIOD_D1,1),HighD1Today=iHigh(Symbol(),PERIOD_D1,0),LowD1Today=iLow(Symbol(),PERIOD_D1,0),HighH4=iHigh(Symbol(),PERIOD_H4,1),LowH4=iLow(Symbol(),PERIOD_H4,1),HighH6=iHigh(Symbol(),PERIOD_H6,0),LowH6=iLow(Symbol(),PERIOD_H6,0),HighW1=iHigh(Symbol(),PERIOD_W1,1),LowW1=iLow(Symbol(),PERIOD_W1,1),CheckHiLivels = 0, CheckLowLivels = 0; static double max_23_6 = 0; static double max_38_2 = 0; static double max_50_0 = 0; static double max_61_8 = 0; static double min_23_6 = 0; static double min_38_2 = 0; static double min_50_0 = 0; static double min_61_8 = 0; static double high_day = 0; static double low_day = 0; high_day = iHigh(Symbol(), PERIOD_D1, 1); low_day = iLow(Symbol(), PERIOD_D1, 1);int total = OrdersTotal(); // сколько всего ордеров открыто double fUpperLevel = iHigh(Symbol(), PERIOD_D1, 1) + Delta * Point(); double fLowerLevel = iLow(Symbol(), PERIOD_D1, 1) - Delta * Point(); double TodayHi = iHigh(Symbol(),PERIOD_D1,0); // Цена закрытия предпоследнего дня double TodayLow = iLow(Symbol(),PERIOD_D1,0); // Цена закрытия последнего дня if (TodayHi>fUpperLevel && Open[0] if (TodayLow fLowerLevel) CheckLowLivels = 1; bool Open_Bay = fPreviousBid > 0 && Bid > fUpperLevel && fPreviousBid bool Open_Sell = fPreviousBid > 0 && Bid = fLowerLevel && CheckLowLivels == 1; // запоминаем текущий бид fPreviousBid = Bid;int Ticket,cnt,Total=0; double spread=ask-bid; int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT)); comm=comm+"Вычисленный спред = "+(string)spread_points+" пунктов"; for(cnt=0;cnt { OrderSelect(cnt,SELECT_BY_POS); if(OrderSymbol()==Symbol()) { Total++; Lot_23_6 = OrderLots()*Lot_Percent_23_6/100;if(Lot_23_6>OrderLots()||Lot_23_6100)Lot_23_6=100;} Lot_23_6 = (NormalizeLot(Lot_23_6, False)); Lot_38_2 = OrderLots()*Lot_Percent_38_2/100;if(Lot_38_2>OrderLots()||Lot_38_2100)Lot_38_2=100;} Lot_38_2 = (NormalizeLot(Lot_38_2, False)); Lot_50 = OrderLots()*Lot_Percent_50/100;if(Lot_50>OrderLots()||Lot_50100)Lot_50=100;} Lot_50 = (NormalizeLot(Lot_50, False)); Lot_61_8 = OrderLots()*Lot_Percent_61_8/100;if(Lot_61_8>OrderLots()||Lot_61_8100)Lot_61_8=100;} Lot_61_8 = (NormalizeLot(Lot_61_8, False)); if(OrderType()==OP_BUY)// long position is opened { max_23_6 = high_day + (MathAbs(high_day - low_day) / 4.236); max_38_2 = high_day + (MathAbs(high_day - low_day) / 2.582); max_50_0 = high_day + (MathAbs(high_day - low_day) / 1.960); max_61_8 = high_day + (MathAbs(high_day - low_day) / 1.618); if(Lot_38_2>0&& Bid> max_38_2) { if(Lot_38_2>0){ Print ("Частичное закрытие ордера Buy на уровне 32.2"); OrderClose(OrderTicket(), Lot_38_2, Bid, 20, Blue);return(0);} return(0); } if(Lot_50>0&&Bid > max_50_0) { if(Lot_50>0){ Print ("Частичное закрытие ордера Buy на уровне 50"); OrderClose(OrderTicket(), Lot_50, Bid, 20, Blue);return(0);} return(0); } if(Lot_61_8>0&&Bid > max_61_8) { if(Lot_61_8 > 0){ Print ("Частичное закрытие ордера Buy на уровне 61.8", Lot_61_8); OrderClose(OrderTicket(), Lot_61_8, Bid, 20, Blue);return(0);} return(0); } if( Bid > OrderOpenPrice()+(NoLoss*Point) && NoLoss>0 ) { SL = NormalizeDouble(OrderOpenPrice()+(NoLoss*Point),Digits); if(!CompareDoubles(OrderStopLoss(),SL)){ OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0); } return(0); } if( Bid > max_23_6 && OrderStopLoss() { SL = NormalizeDouble(OrderOpenPrice() + (NoLossFiboLevels*Point),Digits); if (!CompareDoubles(OrderStopLoss(),SL)){ OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue); Print ("Частичное закрытие ордера Buy на уровне 23.6"); OrderClose(OrderTicket(), Lot_23_6, Bid, 20, Blue);return(0); } } } if(OrderType()==OP_SELL) {//--sell--------------------------------------------------------------------------------------------------------------------- min_23_6 = low_day - (MathAbs(high_day - low_day) / 4.236);// Alert("min_23_6 ", min_23_6); min_38_2 = low_day - (MathAbs(high_day - low_day) / 2.582); min_50_0 = low_day - (MathAbs(high_day - low_day) / 1.960); min_61_8 = low_day - (MathAbs(high_day - low_day) / 1.618);// Alert("min_61_8 ", min_61_8); if(Lot_38_2>0&&Ask { if(Lot_38_2>0){ Print ("Частичное закрытие ордера Sell на уровне -38.2 ",Ask," Размер лота ",Lot_38_2); OrderClose(OrderTicket(), Lot_38_2, Ask, 20, Blue);return(0);} } if(Lot_50>0&&Ask { if(Lot_50>0){ Print ("Частичное закрытие ордера Sell на уровне -50 ",Ask," Размер лота ",Lot_50); OrderClose(OrderTicket(), Lot_50, Ask, 20, Blue);return(0);} } if(Lot_61_8>0&& Ask { if(Lot_61_8>0){ Print ("Частичное закрытие ордера Sell на уровне -61.8 ",Ask," Размер лота ",Lot_61_8); OrderClose(OrderTicket(), Lot_61_8, Ask, 20, Blue);return(0);} } if( Ask 0 ) { SL = NormalizeDouble(OrderOpenPrice() - (NoLoss*Point),Digits); if (!CompareDoubles(OrderStopLoss(),SL)){ OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue); } return(0); } if( Ask min_23_6 ) { SL = NormalizeDouble(OrderOpenPrice() - (NoLossFiboLevels*Point),Digits); if (!CompareDoubles(OrderStopLoss(),SL)){ OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue); Print ("Частичное закрытие ордера Sell на уровне -23.6 ",Ask," Размер лота ", Lot_23_6); OrderClose(OrderTicket(), Lot_23_6, MarketInfo(Symbol(), MODE_ASK), 20, Blue); } } } } }//+----Открытие позицийint TradeTime=TimeDay(TimeCurrent());int TradeTimeBuy=TimeDay(TimeCurrent());int TradeTimeSell=TimeDay(TimeCurrent());if(Total { if(Open_Bay && LastTradeTimeBuy!=TradeTimeBuy ) { SL = iLow(symb,PERIOD_D1,0); // Alert("(Bid-SL)*10000 ", (Bid-SL)*100000); if((Bid-SL)*100000>StopLoss){SL = Bid - (StopLoss*Point);} if(TakeProfit>0) TP = Ask + TakeProfit*Point; if(Bid-SL Ticket=OrderSend(Symbol(),OP_BUY,GetSizeLot(),Ask + Spread ,20,SL,TP); if (Ticket > 0) { LastTradeTimeBuy=TradeTimeBuy; // задаем время сделки, чтобы сегодня больше не торговать } return(0); }//+---- if(Open_Sell && LastTradeTimeSell!=TradeTimeSell) { SL = iHigh(symb,PERIOD_D1,0); if((Ask+SL)*100000>StopLoss){SL = Ask + (StopLoss*Point);} if(TakeProfit>0) TP = Bid - TakeProfit*Point; if (SL-Ask Ticket = OrderSend(Symbol(),OP_SELL,GetSizeLot(),Bid - Spread,20,SL,TP); if (Ticket > 0) { LastTradeTimeSell=TradeTimeSell; // задаем время сделки, чтобы сегодня больше не торговать } return(0); } } // return(0); }int TradeStatuse(){ if ((!IsTesting()) && IsStopped()) return (1); //--- Если не тестовый режим и советник приостановлен (IsStopped). if ((!IsTesting()) && !IsTradeAllowed()) return (2); //--- Если не тестовый режим и торговля заблокирована (IsTradeAllowed). if ((!IsTesting()) && IsTradeContextBusy()) return (3); //--- Если не тестовый режим и поток для выполнения торговых операции занят (IsTradeContextBusy). if (Hour() if (Hour() >= TimeEndFriday + DayOfWeek() == 5) return (5); //--- Проверка на торговое время в пятницу. if (TimeEnd { if(Hour() >= TimeEnd && Hour() } else { if ((Hour() = TimeEnd)) return (6); //--- Проверка на торговое время. } if ((DayOfWeek() == 0) || (DayOfWeek() == 6)) return (7); //--- Выходные, некоторые брокеры как RVD торговля начинаеться в воскресение вечером //--- return(0);}double GetSizeLot(){ double dLot; if (LotsWayChoice==0) dLot=Lots; // фиксированный процент от депозита if (LotsWayChoice==1) { // dLot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10; dLot=MathFloor(AccountFreeMargin()/MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(Symbol(),MODE_MINLOT)*AccountLeverage()/100.0*LotsPercent) * MarketInfo(Symbol(),MODE_MINLOT); } // фиксированно-пропорциональный if (LotsWayChoice==2) { int k=LotsDepoForOne; for (double i=2; i { k=k+i*LotsDeltaDepo; if (k>AccountFreeMargin()) { dLot=(i-1)/10000; break; } } } // фракционно-фиксированный if (LotsWayChoice==3) { dLot=MathCeil((AccountFreeMargin()-LotsDepoForOne)/LotsDeltaDepo)/10; } if (dLot if (dLot>100) dLot=100; return(dLot);}double NormalizeLot(double lo, bool ro=False, string sy="") { double l, k; if (sy=="" || sy=="0") sy=Symbol(); double ls=MarketInfo(sy, MODE_LOTSTEP); double ml=MarketInfo(sy, MODE_MINLOT); double mx=MarketInfo(sy, MODE_MAXLOT); if (ml==0) ml=0.01; if (mx==0) mx=100; if (ls>0) k=1/ls; else k=1/ml; if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k; if (l if (l>mx) l=mx; return(l);}bool CompareDoubles(double number1,double number2) { if(NormalizeDouble(number1-number2,8)==0) return(true); else return(false); } void NoLoss() { int tip,Ticket; double StLo,OSL,OOP; for (int i=0; i if (OrderSelect(i, SELECT_BY_POS)) { tip = OrderType(); if (tip OSL = NormalizeDouble(OrderStopLoss(),Digits); OOP = NormalizeDouble(OrderOpenPrice(),Digits); Ticket = OrderTicket(); if (tip==OP_BUY) { if (OSL>OOP) continue; StLo = NormalizeDouble(OOP+Point,Digits); if (NormalizeDouble((Bid-OOP)/Point,0)>=NoLoss) { if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White)) Print("NoLoss Error ",GetLastError()," buy SL ",OSL,"->",StLo); } } if (tip==OP_SELL) { if (OSL StLo = NormalizeDouble(OOP-Point,Digits); if (NormalizeDouble((OOP-Ask)/Point,0)>=NoLoss) { if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White)) Print("NoLoss Error ",GetLastError()," sell SL ",OSL,"->",StLo); } } } } } } :(( Изменено 21 августа, 2017 пользователем Старик Ссылка на сообщение Поделиться на другие сайты More sharing options...
sever51 Опубликовано 14 июня, 2017 Поделиться Доработка советников: общая тема Опубликовано 14 июня, 2017 Доброго времени суток, уважаемые программисты.Прошу прикрутить к старенькому советнику Магик(кинул на демо, а он все ордера убил)контроль спреда(по ночам и при закрытии рынка зашкаливает)СтопЛосс(советник использует усреднение, а я хочу оптить под 1 ордер)Советник 2012года, посмотрите, может что подправить надо под новые билды.Заранее благодарю! AUDNZD_Flat_Lock.v2.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 15 июня, 2017 Поделиться Доработка советников: общая тема Опубликовано 15 июня, 2017 Доброго времени суток, уважаемые программисты.Прошу прикрутить к старенькому советнику Магик(кинул на демо, а он все ордера убил)контроль спреда(по ночам и при закрытии рынка зашкаливает)СтопЛосс(советник использует усреднение, а я хочу оптить под 1 ордер)Советник 2012года, посмотрите, может что подправить надо под новые билды.Заранее благодарю! Проверьте..Но для дэмо или, не дай бог, реала я бы не применял. По-хорошему функции работы с ордерами надо делать со всякими проверками и обработками ошибок.Для тестирования пойдет... Но в тестере не нужен контроль спрэда.AUDNZD_Flat_Lock.v3.mq4 Изменено 15 июня, 2017 пользователем usver73 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sever51 Опубликовано 15 июня, 2017 Поделиться Доработка советников: общая тема Опубликовано 15 июня, 2017 usver73, спасибо за работу. Кинул на демо, другие ордера не убивает, уже хорошо, но видит как свои. Свои еще не открывал)"не дай бог, реала я бы не применял"Но мне нужен советник именно для реала, поэтому и попросил добавить функции магик, контроль спреда. На демо, если один, и в оригинале работает. Сейчас копирую уровни с демо на реал и выставляю лимитники руками. Но понял, что практически не возможно уследить за изменениями уровней при сильных движениях цены и надо тупить в монитор 24 часа в сутки.Мне нужна уверенность, что он не начнет косячить на реале. Благодарю за понимание! Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 15 июня, 2017 Поделиться Доработка советников: общая тема Опубликовано 15 июня, 2017 usver73, спасибо за работу. Кинул на демо, другие ордера не убивает, уже хорошо, но видит как свои. Свои еще не открывал)"не дай бог, реала я бы не применял"Но мне нужен советник именно для реала, поэтому и попросил добавить функции магик, контроль спреда. На демо, если один, и в оригинале работает. Сейчас копирую уровни с демо на реал и выставляю лимитники руками. Но понял, что практически не возможно уследить за изменениями уровней при сильных движениях цены и надо тупить в монитор 24 часа в сутки.Мне нужна уверенность, что он не начнет косячить на реале. Благодарю за понимание! Учет магика включен только в работу с ордерами. Графические элементы не изменял. Поправлю позже.Что касается реала, то уже писал, надо поглубже внести изменения, дабы учесть все моменты.И вопрос по логике:Если правильно прочитал код, то определяется канал и от средней линии открываются ордера. Так?Если- да, то "жесткий" СтопЛосс не очень логичен, разумней привязаться к тому же каналу (%, граница и т.п.).Далее- канал строится по заданному количеству свечей. А на каком ТФ должен работать сов? Я бы тоже вынес это в настройку... А то при переключении ТФ в терминале хрень получится... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sever51 Опубликовано 15 июня, 2017 Поделиться Доработка советников: общая тема Опубликовано 15 июня, 2017 Учет магика включен только в работу с ордерами. Графические элементы не изменял. Поправлю позже.кол-во ордеров на графике нужно, если использовать усреднение( сразу видно сколько колен открыто)Что касается реала, то уже писал, надо поглубже внести изменения, дабы учесть все моменты.было бы очень здоровоЕсли правильно прочитал код, то определяется канал и от средней линии открываются ордера. Так?да все верноЕсли- да, то "жесткий" СтопЛосс не очень логичен, разумней привязаться к тому же каналу (%, граница и т.п.).стоплосс просил, чтобы посмотреть, как будет себя вести с жестким стопом. Оригинал не использует стоп, а усредняется и закрывает все ордера по Центру. Гонял в тестере, прибыль больше, но и просадка больше. Может кому то этот вариант больше понравится)разумней привязаться к тому же каналу (%, граница и т.п.) надо пробовать и тестить, если они будут отключаемы и регулироваться почему бы нет) канал строится по заданному количеству свечей. А на каком ТФ должен работать сов? Я бы тоже вынес это в настройку... А то при переключении ТФ в терминале хрень получитсяBar_analys = 800; // количество баров анализируемого периода. ТФ не важен, важен отрезок времени. Просто подбирается количество баров под ТФ. пример На 1часе будет 200 баров, на 30мин 400 баров, на 15мин 800 на 5мин 2400 баровВначале я думал, что сов перемещает мах и мин по закрытию свечи и уменьшал ТФ для точности входа, а оказалось не ждет закрытия а перемещает мах/мин в реальном времени, соответственно и точки входа или ТП меняются.Надеюсь вы меня поняли. Спойлер Добавлено: 15-06-2017 12:20:26usver73, сейчас включил визуализацию, после каждого стопа сразу открывается новый ордер. Макс ордер поставил 0, все равно ставит ордера при каждом стопе.http://fxpics.ru/image/5erGX Изменено 15 июня, 2017 пользователем sever51 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти