0ll Опубликовано 15 августа, 2019 Поделиться Доработка советников: общая тема Опубликовано 15 августа, 2019 @molot_1 если открыта сделка Бай больше не открываем? т.е. всегда открыто не более 1 ордера или можно открывать больше ? Также возникнет следующая ситуация AO_D1 > 0 , AO_M15 > 0 , AO_M5 > 0 (=1) - открываем Бай, на следующем баре AO_M5 < 0 (=-1), потом опять AO_M5 > 0 (=1), ордера нет (по СЛ закрылся) опять открываем? не будем ужесточать условия для AO_M5 для исключения множественных сигналов? Можно например AO_M5 > 5 сделать и вынести в настройки. Ссылка на сообщение Поделиться на другие сайты More sharing options...
qbar Опубликовано 22 августа, 2019 Поделиться Доработка советников: общая тема Опубликовано 22 августа, 2019 Уважаемые знатоки, помогите исправить этот експерт. Он, в принципе, работает, но хотелось бы поправить. Я его уже выкладывал, но еще раз. 1. В инпутах устанавливаю dtriger = 2 - открывает 2 лота BUY. 2. Теперь хочу закрыть 1 лот, установив в инпутах dtriger = 1. Прописывал разные варианты, но все не так. В моем случае в коде при dtriger = 1 - закрываются все позиции. Т.е вместо CloseAll() надо прописать закрытие 1 лота BUY, если dtriger = 1. Спасибо. Спойлер #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\OrderInfo.mqh> CPositionInfo o_position; CTrade o_trade; CSymbolInfo o_symbol; COrderInfo o_order; input int triger = 0; input double StartLot = 0.01; input double lpos_volume = 2.0; input int Step = 10; input int MagicNumber = 12345; // Magic nuaber input int Slippage = 30; // slippage int dtriger; int dStep; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { dStep = Step ; dtriger = triger ; if (!o_symbol.Name(Symbol())) return(INIT_FAILED); RefreshRates(); o_trade.SetExpertMagicNumber(MagicNumber) ; if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_FOK)) { o_trade.SetTypeFilling(ORDER_FILLING_FOK); } else if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_IOC)) { o_trade.SetTypeFilling(ORDER_FILLING_IOC); } else { o_trade.SetTypeFilling(ORDER_FILLING_RETURN); } o_trade.SetDeviationInPoints(Slippage); if (o_symbol.Digits() == 3 || o_symbol.Digits() == 5 ) { dStep = 10 ; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { datetime lpos_time = 0; double lpos_price_open = 0.0; ENUM_POSITION_TYPE lpos_type = -1; int pos_count = 0; double sum_profit = 0; for (int i = PositionsTotal() - 1; i>=0; i--) { if (o_position.SelectByIndex(i)) { if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber) { if (o_position.Time() > lpos_time) { lpos_time = o_position.Time(); //OrderOpenTime(); lpos_price_open = o_position.PriceOpen(); //OrderOpenPrice(); lpos_type = o_position.PositionType() ; //OrderTipe(); } pos_count++; sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit() ; } } } // Считаем кол-во отложенных ордеров int stop_count=0; for (int i=OrdersTotal()-1; i >=0; i--) { if (o_order.SelectByIndex(i)) { if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber) stop_count++; } } if (!RefreshRates()) return ; if(dtriger == 0 ) { CloseAll(); return; } // + ----- Откраваем Первый ордер ++++++++++ if (pos_count == 0 && stop_count == 0 ) { if ( dtriger == -2 && lpos_type != POSITION_TYPE_SELL) { o_trade.Sell(StartLot * lpos_volume , o_symbol.Name()); // S E L L 11111 } if ( dtriger == 2 && lpos_type != POSITION_TYPE_BUY ) { o_trade.Buy(StartLot * lpos_volume , o_symbol.Name()); // B U Y 11111 } } // ----------------------- Закрываем ордера --------------------------------------- if (pos_count > 0) { if(lpos_type == POSITION_TYPE_BUY && dtriger == 1 ) { CloseAll(); return; } if(lpos_type == POSITION_TYPE_SELL && dtriger == -1 ) { CloseAll(); return; } } if(pos_count>0 && stop_count>0) DeleteStopOrders() ; } //----------------------------------------------------------- bool RefreshRates() { if (!o_symbol.RefreshRates()) return(false) ; if (o_symbol.Ask() == 0 || o_symbol.Bid() == 0) return(false); return(true); } //--- --------------------------------------------------------- bool IsFillingTypeAllowed (string symbol, int fill_type) { int filling = (int)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE); return((filling && fill_type) == fill_type) ; } // -------------------------------------------------- void CloseAll() { for (int index = PositionsTotal()-1; index >=0; index--) { if (o_position.SelectByIndex(index)) { if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber) { o_trade.PositionClose(o_position.Ticket()); } } } } //----------------------------------------------------------- // Delete all pending orders //------------------------------------- void DeleteStopOrders() { for (int i = OrdersTotal() - 1; i >= 0; i-- ) { if (o_order.SelectByIndex(i)) if(o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber) o_trade.OrderDelete(o_order.Ticket()); } } //+------------------------------------------------------------------+ Stend_t2.mq5 Изменено 26 августа, 2019 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 22 августа, 2019 Поделиться Доработка советников: общая тема Опубликовано 22 августа, 2019 Здравствуйте. У Вас по коду видно, что функция СloseAll() закрывает все ордера, которые открыл сов и это не зависит от количества открытых ордеров, просто закрывает всё. Вам надо переписывать функцию закрытия ордеров с выбором ордера, например по тикету, а в Close(тут тикет ордера) прописывать тикет. Или писать функцию закрытия ордеров, где Вы сможете выбирать с первого или с последнего ордера закрывать сделки, а в Close (тут указать количество ордеров) указывать количество ордеров. В итоге))) по любому нужно переписывать функцию закрытия ордеров под Ваши условия 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
qbar Опубликовано 22 августа, 2019 Поделиться Доработка советников: общая тема Опубликовано 22 августа, 2019 Спасибо, хотелось бы увидеть пример кода. Теоретически я это примерно понимаю. А с помощью функций из Trade класса это можно прописать ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
qbar Опубликовано 27 августа, 2019 Поделиться Доработка советников: общая тема Опубликовано 27 августа, 2019 Спасибо, хотелось бы увидеть пример кода. Теоретически я это примерно понимаю. А с помощью функций из Trade класса это можно прописать ? Так что, нет никого из опытных в этой ветке, кто бы мог дать ссылку или прописать код закрытия части открытой позици ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
qbar Опубликовано 27 августа, 2019 Поделиться Доработка советников: общая тема Опубликовано 27 августа, 2019 Привет. Вот сам сподобился. Все отрабатывает как задумывал. Хотелось бы, чтобы кто-то из опытных посмотрел, можно ли использовать такую конструкцию для реальной торговли. Можбыть чего-то не хватает или что-то лишнее. Буду премного благодарен, я ж совсем не Копенгаген в mql5. Спойлер #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\OrderInfo.mqh> CPositionInfo o_position; CTrade o_trade; CSymbolInfo o_symbol; COrderInfo o_order; input int triger = 0; input double StartLot = 0.01; input double lpos_volume = 2.0; input int MagicNumber = 12345; // Magic nuaber input int Slippage = 30; // slippage int dtriger; int dStep; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { dtriger = triger ; if (!o_symbol.Name(Symbol())) return(INIT_FAILED); RefreshRates(); o_trade.SetExpertMagicNumber(MagicNumber) ; if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_FOK)) { o_trade.SetTypeFilling(ORDER_FILLING_FOK); } else if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_IOC)) { o_trade.SetTypeFilling(ORDER_FILLING_IOC); } else { o_trade.SetTypeFilling(ORDER_FILLING_RETURN); } o_trade.SetDeviationInPoints(Slippage); if (o_symbol.Digits() == 3 || o_symbol.Digits() == 5 ) { dStep = 10 ; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { datetime lpos_time = 0; double lpos_price_open = 0.0; ENUM_POSITION_TYPE lpos_type = -1; int pos_count = 0; double sum_profit = 0; double lpos_vol = 0; for (int i = PositionsTotal() - 1; i>=0; i--) { if (o_position.SelectByIndex(i)) { if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber) { if (o_position.Time() > lpos_time) { lpos_time = o_position.Time(); //OrderOpenTime(); lpos_price_open = o_position.PriceOpen(); //OrderOpenPrice(); lpos_type = o_position.PositionType() ; //OrderTipe(); lpos_vol = o_position.Volume() ; } pos_count++; sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit() ; } } } // -------------- Считаем кол-во отложенных ордеров --------------------------------- int stop_count=0; for (int i=OrdersTotal()-1; i >=0; i--) { if (o_order.SelectByIndex(i)) { if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber) stop_count++; } } if (!RefreshRates()) return ; if(dtriger == 0 ) { CloseAll(); return; } // + ----------------- Откраваем Первый ордер ------- ++++++++++ if (pos_count == 0 && stop_count == 0 ) { if ( dtriger == -2 && lpos_type != POSITION_TYPE_SELL) { o_trade.Sell(StartLot * lpos_volume , o_symbol.Name()); // S E L L 11111 } if ( dtriger == 2 && lpos_type != POSITION_TYPE_BUY ) { o_trade.Buy(StartLot * lpos_volume , o_symbol.Name()); // B U Y 11111 } } // ----------------------- Закрываем ордера --------------------------------------- if (pos_count > 0) { if(dtriger == -2 || dtriger == 0) // if(dtriger == -2 - закрываем все Sell { if(lpos_type == POSITION_TYPE_BUY ) { CloseAll(); return; } } if(dtriger == -1) // if(dtriger == -1 если 2 лота Sell - закрываем половину { if(lpos_type == POSITION_TYPE_SELL && lpos_vol == StartLot * lpos_volume ) { o_trade.PositionClosePartial(_Symbol,StartLot * lpos_volume*0.5); return; } } // ------------------------------------------------------------- if(dtriger == 2 || dtriger == 0) // if(dtriger == 2 - закрываем все Buy { if(lpos_type == POSITION_TYPE_SELL ) { CloseAll(); return; } } if(dtriger == 1) // if(dtriger == 1 если 2 лота Buy - закрываем половину { if(lpos_type == POSITION_TYPE_BUY && lpos_vol == StartLot * lpos_volume ) { o_trade.PositionClosePartial(_Symbol,StartLot * lpos_volume*0.5); return; } } } if(pos_count>0 && stop_count>0) DeleteStopOrders() ; } //----------------------------------------------------------- bool RefreshRates() { if (!o_symbol.RefreshRates()) return(false) ; if (o_symbol.Ask() == 0 || o_symbol.Bid() == 0) return(false); return(true); } //--- --------------------------------------------------------- bool IsFillingTypeAllowed (string symbol, int fill_type) { int filling = (int)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE); return((filling && fill_type) == fill_type) ; } // -------------------------------------------------- void CloseAll() { for (int index = PositionsTotal()-1; index >=0; index--) { if (o_position.SelectByIndex(index)) { if (o_position.Symbol() == o_symbol.Name() && o_position.Magic() == MagicNumber) { o_trade.PositionClose(o_position.Ticket()); } } } } //----------------------------------------------------------- // Delete all pending orders //------------------------------------- void DeleteStopOrders() { for (int i = OrdersTotal() - 1; i >= 0; i-- ) { if (o_order.SelectByIndex(i)) if(o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber) o_trade.OrderDelete(o_order.Ticket()); } } //+------------------------------------------------------------------+ _Stend_t7.mq5 Изменено 27 августа, 2019 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 18 сентября, 2019 Поделиться Доработка советников: общая тема Опубликовано 18 сентября, 2019 Здравствуйте!!! Посмотрите пожалуйста то что я написал. Не пойму почему открывается только один ордер и не срабатывает закрытие ордеров. M15.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 18 сентября, 2019 Поделиться Доработка советников: общая тема Опубликовано 18 сентября, 2019 15 минут назад, molot_1 сказал: почему открывается только один ордер Здравствуйте. Потому что Вы сравниваете количество открытых бай ордеров плюс количество открытых селл ордеров равно нулю, тогда открываем селл ордер, он у Вас все время и открывается. Дальше идет такая же проверка для открытия бай ордера, но у Вас уже открыт селл ордер и суммарное количество ордеров уже не равно нулю, что является не соблюдением условия и ордер на бай не открывается. Сравнивайте только для открытия бай количество бай ордеров, а для селл количество селл ордеров...типо CountSell() == 0 для селл и все 20 минут назад, molot_1 сказал: не срабатывает закрытие ордеров Во первых у Вас идет строгое сравнение с Bid == EMA_18, используйте больше или меньше. Например если цена бид >= ЕМА_18 Во вторых у Вас не правильно написана функция закрытия. Вы пытаетесь закрыть при условии OrdersTotal() -1; и не выбрали ордер, не по тику, не по типу Функция просто пытается закрыть последний ордер по аск, а если это ордер на бай был? Переписывайте функцию! 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 18 сентября, 2019 Поделиться Доработка советников: общая тема Опубликовано 18 сентября, 2019 32 минуты назад, loveЦ сказал: Здравствуйте. Потому что Вы сравниваете количество открытых бай ордеров плюс количество открытых селл ордеров равно нулю, тогда открываем селл ордер, он у Вас все время и открывается. Дальше идет такая же проверка для открытия бай ордера, но у Вас уже открыт селл ордер и суммарное количество ордеров уже не равно нулю, что является не соблюдением условия и ордер на бай не открывается. Сравнивайте только для открытия бай количество бай ордеров, а для селл количество селл ордеров...типо CountSell() == 0 для селл и все Во первых у Вас идет строгое сравнение с Bid == EMA_18, используйте больше или меньше. Например если цена бид >= ЕМА_18 Во вторых у Вас не правильно написана функция закрытия. Вы пытаетесь закрыть при условии OrdersTotal() -1; и не выбрали ордер, не по тику, не по типу Функция просто пытается закрыть последний ордер по аск, а если это ордер на бай был? Переписывайте функцию! Спасибо Вам!!! Я исправил так как Вы сказали, ордера закрываются, а открытие не исправилось. Может я что то не правильно понял? M15.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 18 сентября, 2019 Поделиться Доработка советников: общая тема Опубликовано 18 сентября, 2019 Вы сделали только правильно открытие, а закрытие Вы ничего не исправили. Посмотрите, там где у Вас закрытие не правильно идет выборка ордеров. Тут много вариантов. Можно закрывать по тикету ордер. Для этого надо запомнить тикет при открытие ордера, а потом, при закрытие, выбрать его и закрыть. Если я сложно объяснил, извините. Проще поищите в инете "функция закрытия ордера" и изучите ее подробней, может она Вам и поможет))) Ссылка на сообщение Поделиться на другие сайты More sharing options...
KotoffMatroskin Опубликовано 14 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 14 октября, 2019 Просьба ко всем программистам кто может проверить советник. Проблема в том что он сам закрыл сетку ордеров. А теперь по порядку, Есть советник Friend-3(3), на его основе я выкинул все (для меня) не нужное и создал его более упрощенную копию Friend Setka Order-v2. В пятницу 11,10 была открыта сетка ордеров в buy по gbpusd, ордера открыты по следующим ценам: 1.26938 1.26838 1.26738 1.26638 1.26538 1.26438 Сегодня при включении терминала в 06:20 по Киеву, советник выставил отложенный ордера 1.25950, то есть все как положенно, а через две минуты закрыл полностью всю сетку ордеров (естественно с минусом). Просьба кто может проверьте логику его работы, сам никак не могу с этим разобраться. Friend Setka Order-v2.mq4 Friend-3(3).mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 14 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 14 октября, 2019 21 минуту назад, KotoffMatroskin сказал: Просьба ко всем программистам Здравствуйте. В вашем переделанном советнике нет автозакрытия позиций, т.е. закрытия каких либо позиций по каким либо условиям. В коде заметил только ручное закрытие ордеров, с помощью кнопок закрытия. Поэтому, делаю вывод, вы случайно нажали или кто-то))) на закрытие.Еще раз, у вас только одно условие для закрытия ордеров - это ручное, с помощью кнопки! 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 14 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 14 октября, 2019 24 минуты назад, loveЦ сказал: Еще раз, у вас только одно условие для закрытия ордеров - это ручное, с помощью кнопки! Или дядя Коля закрыл - мы же не знаем какая нагрузка была в момент закрытия и условий счёта... Ссылка на сообщение Поделиться на другие сайты More sharing options...
KotoffMatroskin Опубликовано 14 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 14 октября, 2019 loveЦ, спасибо за помощь, интересовало именно чтобы где то не было автозакрытие Oll, дядя Коля не приходил)))), на момент закрытия ордеров просадка была 3% от депо. Изменено 14 октября, 2019 пользователем KotoffMatroskin Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 14 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 14 октября, 2019 Так в итоге что было? Получается ручное закрытие? Ссылка на сообщение Поделиться на другие сайты More sharing options...
KotoffMatroskin Опубликовано 14 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 14 октября, 2019 1 час назад, loveЦ сказал: Так в итоге что было? Получается ручное закрытие? Скорее всего, что так. Убрал из сова кнопку ручного закрытия совсем. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alexdm Опубликовано 14 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 14 октября, 2019 Добрый день! Помогите, пожалуйста, исправить советник, торгующий по Heiken Ashi для MT5. В сети нашел только его реверсный аналог. Сам пробовал поменять фукции покупки и продажи, но что-то пошло не так HAN.mq5 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Scaels Опубликовано 29 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 29 октября, 2019 Добрый день уважаемые знатоки MQL! Гоняю советник в тестере, не могу разобраться - применимо к Buy ордерам трал включается и работает как надо, а по отношению к Sell ордерам вообще не включается. Кусок кода отвечающего за трал прилагаю. Помогите разобраться - все ли корректно написано? for(i=0;i<OrdersTotal();i++) // проходим по всем существующим ордерам----------------------------------- { OrderSelect(i, SELECT_BY_POS); // закрепляем очередной ордер, типа с ним работать бум if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) continue; // Если не наш - смотрим следующий if(OrderType()==OP_BUY) // если он открытый в покупку, то... { if(BezubLevel>0 && BID-OrderOpenPrice()>=BezubLevel && OrderStopLoss()<OrderOpenPrice()) OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BezubSize*PNT,OrderTakeProfit(),0,CLR_NONE); if(TrailStop>=STP && OrderStopLoss()<=BID-(TrailStop+TrailStep)*PNT && OrderOpenPrice()<=BID-(TrailStop+TrailStep)*PNT) OrderModify(OrderTicket(),OrderOpenPrice(),BID-TrailStop*PNT,OrderTakeProfit(),0,CLR_NONE); } else // иначе, если это открытый ордер в продажу то всё как и с покупкой но наоборот if(OrderType()==OP_SELL) { if(BezubLevel>0 && OrderOpenPrice()-ASK>=BezubLevel && OrderStopLoss()>OrderOpenPrice()) OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BezubSize*PNT,OrderTakeProfit(),0,CLR_NONE); if(TrailStop>=STP && OrderStopLoss()>=ASK+(TrailStop+TrailStep)*PNT && OrderOpenPrice()>=ASK+(TrailStop+TrailStep)*PNT) OrderModify(OrderTicket(),OrderOpenPrice(),ASK+TrailStop*PNT,OrderTakeProfit(),0,CLR_NONE); } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 29 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 29 октября, 2019 13 часов назад, Scaels сказал: Помогите разобраться - все ли корректно написано? запутанный кусок. Я вообще цену открытия ордера не учитываю. Могу предположить, что OrderStopLoss()==0 для продаж, поэтому не идет модификация. Попробуй тралл от Кима. e-Trailing.mq4 Изменено 29 октября, 2019 пользователем Rever27 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 29 октября, 2019 Поделиться Доработка советников: общая тема Опубликовано 29 октября, 2019 13 часов назад, Scaels сказал: Помогите разобраться - все ли корректно написано? И попробуйте всё же выбирать правильно ордера if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
tyuioxz Опубликовано 29 ноября, 2019 Поделиться Доработка советников: общая тема Опубликовано 29 ноября, 2019 Привет! нужно очень прикрутить к советнику закрытие ордера по появления сигнала от индикатора. Sovetchik.mq4 Super Arrow Indicator TT [MA+RSI+BB+BrBl].ex4 Super Arrow Indicator TT [MA+RSI+BB+BrBl].mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 ноября, 2019 Поделиться Доработка советников: общая тема Опубликовано 29 ноября, 2019 @tyuioxz сигналом является кружочек любого цвета, так? Ссылка на сообщение Поделиться на другие сайты More sharing options...
tyuioxz Опубликовано 30 ноября, 2019 Поделиться Доработка советников: общая тема Опубликовано 30 ноября, 2019 23 часа назад, 0ll сказал: @tyuioxz сигналом является кружочек любого цвета, так? Да Ссылка на сообщение Поделиться на другие сайты More sharing options...
Apro94 Опубликовано 3 декабря, 2019 Поделиться Доработка советников: общая тема Опубликовано 3 декабря, 2019 Здравствуйте! Помогите напишите начало кода... Советник должен открывать вход в сделку от моего уровня. От горизонтальной линии. это просто должно быть поле ввода типа decimal и потом эту переменную проверяю в коде и относительно ее значения и торговать. советник на mql4 Изменено 4 декабря, 2019 пользователем Apro94 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 4 декабря, 2019 Поделиться Доработка советников: общая тема Опубликовано 4 декабря, 2019 9 часов назад, Apro94 сказал: Советник должен открывать вход в сделку от моего уровня. От горизонтальной линии. Есть готовые советники, посмотрите этот и от Кима прикрепил ниже (краткое описание здесь), думаю ещё есть e-TFL.mq4 e-TFL_v2.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти