Richie Rich Опубликовано 5 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 ноября, 2016 Для открытие только одного ордера в день использую эту функцию: Цитата bool One_Order_Per_Day() { for(int i=0; i { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol() == Symbol()) { if(TimeDay (OrderOpenTime()) == Day() && TimeMonth(OrderOpenTime()) == Month() && TimeYear (OrderOpenTime()) == Year()) return(1); } } return(0); } Но из за неё в тестере советник катастрофически медленно прогоняется... ~x( Вплоть до нескольких часов при прогоне за 5-6 лет.Подскажите пожалуйста, может есть какой-то более целесообразный способ выставление только одного ордера в день? Ссылка на сообщение Поделиться на другие сайты More sharing options...
kaetosh Опубликовано 6 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 ноября, 2016 Привет, коллеги!Подскажите, как реализовать в коде mql4 следующее:Есть советник, работающий на нескольких торговых инструментах. Например по некоторым из них - последние ордера убыточные. Как получить общую сумму убытка этих последних закрытых позиций по всем инструментам?Если непонятно разъяснил, попробую на примере: сова работает на четырех парах: EURUSD USDJPY USDCAD AUDUSD. Например результат последнего закрытого ордера по EURUSD (-10), по USDJPY +15, по USDCAD (-5), по AUDUSD (-3).Как мне получить сумму: -10-5-3=-18? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alexander.Yar Опубликовано 6 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 ноября, 2016 либо использовать внешний файлик, либо использовать мультиторговлю внутри советника, либо использовать анализ истории сделок (предпочтительно) Ссылка на сообщение Поделиться на другие сайты More sharing options...
kaetosh Опубликовано 6 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 ноября, 2016 Вот-вот, я не пойму, как перебрать в коде все задействованные валютные пары? Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 6 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 ноября, 2016 Здравствуйте! :-HПомогите разобраться с расчётом лота из видео-урока "12 MQL программирование функции расчета торгового лота". Делал всё по уроку, но результат в расчёте лота больше в 100 раз, показанного в самом видео. Сам не совсем понимаю методику расчёта лота как функции от двух параметрах: риска и стоп-лосса. В представленном советнике реализован код, показанный в видео-уроке. Проблему можно решить делением на 100, но это не даст ощущения законченности и разбора проблемы (в видео ведь не делили на 100). Необходимо немного глубже.Проблема решена: на центовых счетах расчёт лота другой чем на обычных, поэтому результат был в 100 раз больше (1 доллар = 100 центам). Извините за оффтоп. InfoExpert.mq4 Изменено 6 ноября, 2016 пользователем iPerevalov Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 7 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2016 попробуй так(возвращает фалс если уже есть ордер открытый сегодня, тру если нет такого ордера)bool One_Order_Per_Day(){int ord = OrdersTotal();for (int i=ord-1; i>=0; i--){if (!OrderSelect(i,SELECT_BY_POS)) continue;if (OrderSymbol()!= Symbol() || OrderMagicNumber()!=magic) continue;if (OrderOpenTime()>=iTime(Symbol(),PERIOD_D1,0)) return false;}return true;}но тут как бе надо понимать всю суть вопроса. а что если ордер сегодня открывался и уже закрылся? тогда вышеописанная мной функция будет возвращать тру, ведь идет перебор текущих выставленных ордеров(и открытых, и отложенных). чтобы перебирать историю уже закрытых ордеров нужно в ord пихать OrdersHistoryTotal() а селект писать как "if (!OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)) continue;" Спойлер Для открытие только одного ордера в день использую эту функцию: Цитата bool One_Order_Per_Day() { for(int i=0; i { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol() == Symbol()) { if(TimeDay (OrderOpenTime()) == Day() && TimeMonth(OrderOpenTime()) == Month() && TimeYear (OrderOpenTime()) == Year()) return(1); } } return(0); } Но из за неё в тестере советник катастрофически медленно прогоняется... ~x( Вплоть до нескольких часов при прогоне за 5-6 лет.Подскажите пожалуйста, может есть какой-то более целесообразный способ выставление только одного ордера в день? Изменено 7 ноября, 2016 пользователем dermitay 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр_F Опубликовано 7 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2016 Здравствуйте уважаемые трейдеры. У меня вопрос касательно написания сеточного советника, суть заключается в следующем. Данный советник должен открывать сетку отложенных ордеров в направлении вручную открытого ордера. Т.е. если я вручную открыл ордер OP_SELL то ниже должны открываться OP_SELLLIMIT с уже установленным шагом (Step), TP,SL, так же в данном советнике, я бы хотел определить количество отложек. Скажем 10 ордеров OP_SELLLIMIT. Я пробовал создать нечто подобное однако моих познаний в области MQL явно хватает для выполнения данной задачи. Я буду благодарен за любую оказанную мне помощь! P.S. свои "наброски" советника прикрепляю к этому письму. 3.mq43.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sanya Ch Опубликовано 7 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2016 Господа, по ходу использования ночников и других скальперских сов обнаружилась необходимость дополнительного контроля за роботами. В связи с этим вопрос-предложение ко всем. Вопрос - существует ли уже такое и где найти, или если нет, то предложение - сделать нечто подобное на MQL4. Я думаю эта вещь полезная и пригодится всем без исключения. Особенно тем, кто торгует несколькими советниками одновременно.Нужен скрипт, советник или вроде того mql штука, которая работает на весь терминал одновременно и ограничивает торговлю - запрещает делать вход в рынок если подходят определенные условия:1 Суммарный лот открытых позиций превышает заданный2 Суммарное количество позиций в рынке превышает заданное3 Уже открыта позиция с этим инструментом. От создания дубликатов позиций и приумножения лота. Но с такой формулировкой не получился сделать усредненение или лок. Чтобы получилось сделать лок нужно чтобы было "уже открыта позиция по этому инструменту в том же направлении".Возможны какие-то дополнения с вашей стороны для ограничителя. Давайте вместе подумаем. Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 7 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2016 Такое можно сделать только внедрившись в код терминала, по аналогии с тикстори или tds и анализируя запросы в перехваченной функции OrderSendp.s. создать такое на MQL принципиально невозможно, для этого надо исследовать код билдов терминала от 920 и выше, что не под силу среднему программисту на mql Изменено 7 ноября, 2016 пользователем nixxer Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sanya Ch Опубликовано 7 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2016 Ну вот у советника Wall street Asia есть такая штука - количество позиций на терминал. То есть один советник ограничивает позиции всего терминала. Правда разумеется позиции только этого советника хоть и не суть важно с какого инструмента. Поэтому я и подумал, что может есть вариант сделать ограничение на другие советники.Кто еще что думает? Есть шансы сделать нечто подобное на MQL? Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 8 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 ноября, 2016 Здравствуйте. Подскажите, пожалуйста, верная ли функция для расчета лота? double FixProc(int risk, int stoploss) // risk = 2%, stoploss = 100п{ double RiskMoney= AccountBalance() * risk / 100; double Lot = RiskMoney / stoploss * 0.1; return(Lot);} Если нет, то:[list type=decimal]В чём ошибка? Какие ещё существуют методики для расчета лота? Видео-урок для расчета лота просмотрел, но не совсем понял методику расчёта в нём. Изменено 8 ноября, 2016 пользователем iPerevalov Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 8 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 ноября, 2016 [list type=decimal] Какие ещё существуют методики для расчета лота? Вариантов масса. ;)К примеру я вот такой функцией пользуюсь: Цитата extern bool Auto_Lot = True ;extern double Fix_Lot = 0 ;--------------------------------------------------------double Lot() // 0.01 to 1000$ { double lot; if (Auto_Lot == 0) lot = Fix_Lot; if (Auto_Lot == 1) lot = AccountEquity()/100000; if (lot return(lot); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 8 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 ноября, 2016 Вариантов масса. ;)К примеру я вот такой функцией пользуюсь: Цитата extern bool Auto_Lot = True ;extern double Fix_Lot = 0 ;--------------------------------------------------------double Lot() // 0.01 to 1000$ { double lot; if (Auto_Lot == 0) lot = Fix_Lot; if (Auto_Lot == 1) lot = AccountEquity()/100000; if (lot return(lot); } Спасибо, + на 1 методику больше)Добавлено: 08-11-2016 23:10:06Вот функция, представленная в видео-уроке (немного упрощенная). double LotsByRisk(int risk, int stoploss){ double lot = AccountBalance() * risk / 100; double UsdPerPip = lot / stoploss; lot = UsdPerPip / MarketInfo(Symbol(), MODE_TICKVALUE); return(lot);} Товарищи, скажите, почему используется данная строчка. Зачем мы делим на величину "Размер минимального изменения цены инструмента в валюте депозита", то есть на MarketInfo(Symbol(), MODE_TICKVALUE)?lot = UsdPerPip / MarketInfo(Symbol(), MODE_TICKVALUE); Буду благодарен вам за разъяснение) Изменено 8 ноября, 2016 пользователем iPerevalov Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 9 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 ноября, 2016 Здравствуйте уважаемые трейдеры. У меня вопрос касательно написания сеточного советника, суть заключается в следующем. Данный советник должен открывать сетку отложенных ордеров в направлении вручную открытого ордера. Т.е. если я вручную открыл ордер OP_SELL то ниже должны открываться OP_SELLLIMIT с уже установленным шагом (Step), TP,SL, так же в данном советнике, я бы хотел определить количество отложек. Скажем 10 ордеров OP_SELLLIMIT. Я пробовал создать нечто подобное однако моих познаний в области MQL явно хватает для выполнения данной задачи. Я буду благодарен за любую оказанную мне помощь! P.S. свои "наброски" советника прикрепляю к этому письму. написал на покупку, на продажу сами допишите, чтобы немного сами шевелили мозгами.неточность- SellLimit - отложенный ордер на продажу активов по финансовому инструменту по цене, превышающей текущую цену.если вам нужно ниже, то тогда нужен -SellStop - отложенный ордер на продажу активов по финансовому инструменту по цене ниже текущей.Конечно видео уроки от Сергея очень познавательны, но без этой книжки вам не стать хорошим програмистом -mql4bookrussian, дарю от чистого сердца.3.ex43.mq4mql4bookrussian.rar Изменено 10 ноября, 2016 пользователем vitek01 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 10 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 ноября, 2016 Вариантов масса. ;)К примеру я вот такой функцией пользуюсь: Цитата extern bool Auto_Lot = True ;extern double Fix_Lot = 0 ;--------------------------------------------------------double Lot() // 0.01 to 1000$ { double lot; if (Auto_Lot == 0) lot = Fix_Lot; if (Auto_Lot == 1) lot = AccountEquity()/100000; if (lot return(lot); } необходимо лот нормализовать, иначе ошибка ERR_INVALID_TRADE_VOLUME 131 Неправильный объем if (Auto_Lot == 1) lot = NormalizeDouble(AccountEquity()/100000,2);Вот почему при депо в 100/10000 лот 0.01, а если 156/10000 лот уже 0.02, округляет до ближайшего целого,даже нормализация с 2 после запятой не помогает? Изменено 10 ноября, 2016 пользователем vitek01 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 10 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 ноября, 2016 Вот почему при депо в 100/10000 лот 0.01, а если 156/10000 лот уже 0.02, округляет до ближайшего целого,даже нормализация с 2 после запятой не помогает? Ну... Всё правильно. :)Алгебраически округляется в бОльшую сторону, если десятые больше пяти. Или я не правильно понял суть вопроса... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
radioman Опубликовано 11 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 ноября, 2016 Здравствуйте!Небезызвестный индикатор J_TPO. Мне попались две его разновидности: J_TPO_Clean.mq4 и J_TPO_II.mq4Оба индикатора не работали - новые билды, новые требования к языку. Я исправил ошибки. Но судя по профилированию скорость расчета оставляет желать лучшего.Прошу форумчан-программистов, при наличии времени и желания, оптимизировать код индикаторов.Спасибо- J_TPO_Clean.mq4J_TPO_II.mq4Профилирование_J_TPO_Clean__J_TPO_II.xlsx Ссылка на сообщение Поделиться на другие сайты More sharing options...
dimokn Опубликовано 11 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 ноября, 2016 Подскажите пожалуйста, как сделать так чтоб значение переменной (значение цены) не обнулялось при перезапуске советника? Ссылка на сообщение Поделиться на другие сайты More sharing options...
alex161271 Опубликовано 13 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 ноября, 2016 Уважаемые xbms и знатоки!Прошу помочь. Не пойму, почему идет зацикливание. Бот сырой не законченный, но на данном этапе застрял. Все лишнее пока убрал.При запуске бота сразу же устанавливаются два отложенных бота на равном расстоянии от цены с одинаковым лотом. После активации первого ордера, должен удаляться противоположный отложенный ордер. С этим все нормально работает. Потом сразу же должен выставиться противоположный открытому отложенный ордер (т.е такой же как первоначальный удаленный в том же направлении) с удвоенным лотом от открытого. Лот пока не трогаю, оставил такой же, но на этом моменте идет выставление отложки и сразу же его удаление. И так до бесконечности.Разбил эти части по внешним функциям, тоже самое происходит. Этот вариант без тех внешних функций. Прилагаю код бота и еще его файлы.Компилятор не ругается, но выдает предупреждение - return value of 'OrderSend' should be checkedМожет это как то связано с этим.Надеюсь, что понятно изъяснился.Заранее благодарю за помощь. Спойлер // внешние переменныеextern double Lots = 0.1;extern int Diap = 150;extern int Slippage = 0;extern int Magic = 1234;extern int MaxOrders = 5;extern double Multipler = 2;int ticket, otype;double SLS_TPB,SLB_TPS, PriceSell,PriceBuy, type, cnt;//-----------------------------------int OnInit(){ // проверка на количество знаков if (Digits ==3 || Digits==5) { Diap *= 10; Slippage *= 10; } return(INIT_SUCCEEDED);}//-----------------------------------void OnDeinit(const int reason){}//----------------------------------- void OnTick(){int res; double BuyPrice=Ask+Diap*Point; double SellPrice=Bid-Diap*Point; double TP_Buy=Ask+(Diap*3)*Point; double TP_Sell=Bid-(Diap*3)*Point; //первое условие ++++++++++++++++++++++++++++++++++ if (CountTrades() == 0 && CountTradesByStop()==0) { //1й блок выставляет два отложенных ордера от текущей цены res=OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,Slippage,TP_Sell,TP_Buy,"",Magic,0,Blue); res=OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,Slippage,TP_Buy,TP_Sell,"",Magic,0,Red ); // }//второе условие +++++++++++++++++++++++++++++++++ if (CountTrades() == 1) //2й блок если один из ордеров открылся, то удаляем оставшийся отложенный ордер { for(int i=0; i { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { int OrderTupe = OrderType(); if(OrderType()==OP_BUYSTOP) { bool ord_close=OrderDelete(OrderTicket(),clrNONE); if(!ord_close) i--; } if(OrderType()==OP_SELLSTOP) { bool ord_close=OrderDelete(OrderTicket(),clrNONE); if(!ord_close) i--; } } } } // --------------------------- if (CountTrades() >=1) // проверяем есть ли уже ордера в рынке, далее необходимо выбрать последний ордер // и выставить противоположный отложенный ордер { otype = FindLastOrderType(); //вычисляем тип последнего ордера if (otype == OP_BUY) { double price = FindLastBuyPrice(); // OrderSend (Symbol(), OP_SELLSTOP, Lots, price-SellPrice, Slippage, price-SellPrice+TP_Buy,price-SellPrice+TP_Sell, "", Magic, 0, Blue); // открываем следующий ордер } else if (otype == OP_SELL) { double price = FindLastSellPrice();// OrderSend (Symbol(), OP_BUYSTOP, Lots, price+BuyPrice, Slippage, price+BuyPrice-TP_Sell,price+BuyPrice+TP_Buy, "", Magic, 0, Red); // открываем следующий ордер } } }//описываем количество открытых ордеров в рынкеint CountTrades(){ int count = 0; for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) count++; } } } return(count);} //определяем количество отложенных Стоп ордеров//--------------------------------------------------------int CountTradesByStop(){ int count = 0; for(int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) count++; } } } return(count);}//функция нахождения типа последнего ордера//+------------------------------------------------------------------+int FindLastOrderType(){ int oticket, ticketnumber = 0, OType=-1; for (int i = OrdersTotal() -1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { oticket = OrderTicket(); if (oticket > ticketnumber) { ticketnumber = oticket; OType = OrderType(); } } } } return(OType);} //функция по какой цене открыт последний ордер BUY//+------------------------------------------------------------------+double FindLastBuyPrice(){ int oticket, ticketnumber = 0; double oprice=0; for (int i = OrdersTotal() -1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) { oticket = OrderTicket(); if (oticket > ticketnumber) { ticketnumber = oticket; oprice = OrderOpenPrice(); } } } } return(oprice);} //функция по какой цене открыт последний ордер SELL//+------------------------------------------------------------------+ double FindLastSellPrice(){ int oticket, ticketnumber = 0; double oprice=0; for (int i = OrdersTotal() -1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) { oticket = OrderTicket(); if (oticket > ticketnumber) { ticketnumber = oticket; oprice = OrderOpenPrice(); } } } } return(oprice);} bot_kanal.mq4bot_kanal.ex4 Изменено 13 ноября, 2016 пользователем alex161271 Ссылка на сообщение Поделиться на другие сайты More sharing options...
RichLux Опубликовано 13 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 ноября, 2016 В четвертом уроке "Пишем советника на Мартингейле" у меня отрываются или только на продажу, или только на покупку. Это у меня где-то ошибка или же мы данное условие вносили при написании кода? Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 14 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 ноября, 2016 Компилятор не ругается, но выдает предупреждение - return value of 'OrderSend' should be checkedМожет это как то связано с этим.return value of 'OrderSend' should be checked это просто предупреждение что нужно проверить OrderSend, что оно возвращает и ни как не влияет на отложеный ордер. Просто проверьте оператором if - if(OrderSend(.......)==false) {} или присвойте int tiket=OrderSend(.......); Добавлено: 15-11-2016 02:18:59В четвертом уроке "Пишем советника на Мартингейле" у меня отрываются или только на продажу, или только на покупку. Это у меня где-то ошибка или же мы данное условие вносили при написании кода? Все верно, если цена меньше машки открываются ордера на продажу, если выше, на покупку. Изменено 15 ноября, 2016 пользователем vitek01 Ссылка на сообщение Поделиться на другие сайты More sharing options...
RichLux Опубликовано 15 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2016 Спасибо, vitek01И снова нужна помощь по этому же уроку. В Дом.Зад. нужно, чтобы советник закрывал все открытые им ордера при достижении определенного убытка в пунктах. Подскажите, как это реализовать, или хотя бы откуда начинать "копать"? Ссылка на сообщение Поделиться на другие сайты More sharing options...
ss83 Опубликовано 16 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2016 Люди добрые помогите,был исходник вставил мета эдитор как смог,получился индикатор.Но к моему глубокому сожелению он не работает,поглядите пожалуйста что там ни так если можете волотильность.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
SCOIZENY777 Опубликовано 16 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2016 Не получается скачать курс,не приходит письмо на почту,кто то может подсказать - почему? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 16 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2016 Попробуйте заменить все « и » на "" и откомпилировать заново Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти