Добрый день! Нужно переделать и адаптировать исходный советник под новый алгоритм выставления ордеров с сохранением кнопок управления. Структура советника: // Условие запуска цикла: -При отсутствии всех (открытых и отложенных) ордеров (условие проверки есть в исходнике) и нажатии на кнопку "Allow"(становится зеленой и остается зажатой) запускаем цикл. - Происходит открытие сетки ордеров: ордер Buy: с переменными параметрами величины лота, ТР и SL (lotability0, takeProfit0, stoploss0, цена открытия Ask) ордер Sell: с переменными параметрами величины лота, ТР и SL (lotability0, takeProfit0, stoploss0, цена открытия Bid) ордер Buylimit1...10: с переменными параметрами ТР и SL (lotability1, takeProfit1, stoploss1, Цена= фактическая цена открытия ордера Buy + alpha1*point) - таких ордеров 10 штук, меняется соответственно alpha1,2,3...10.и т.п. ордер Selllimit1...10: с переменными параметрами ТР и SL (lotability1, takeProfit1, stoploss1, Цена= фактическая цена открытия ордера Sell - alpha1*point) - таких ордеров 10 штук, меняется соответственно alpha1,2,3...10.и т.п. ордер BuyStop11...13: с переменными параметрами ТР и SL (lotability11, takeProfit11, stoploss11, Цена= фактическая цена открытия ордера Buy + alpha11*point) - таких ордеров 3 штуки, меняется соответственно alpha11,12,13....и т.п. ордер SellStop11...13: с переменными параметрами ТР и SL (lotability11, takeProfit11, stoploss11, Цена= фактическая цена открытия ордера Sell - alpha11*point) - таких ордеров 3 штуки, меняется соответственно alpha1,2,3...10.и т.п. ////Таблица входных параметров input double lotability0 = 0.01;//Лотность первых ордеров buy & sell input int takeProfit0 = 10;//take profit первых ордеров buy & sell input int stoploss0 = 10;//stop loss первых ордеров buy & sell input double lotability1 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit1 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss1 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability2 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit2 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss2 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability3 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit3 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss3 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability4 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit4 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss4 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability5 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit5 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss5 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability6 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit6 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss6 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability7 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit7 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss7 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability8 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit8 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss8 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability9 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit9 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss9 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability10 = 0.01;//Лотность отложеных ордеров buylimit & selllimit input int takeProfit10 = 15;//take profit отложеных ордеров buylimit & selllimit input int stoploss10 = 10;//stop loss отложенных ордеров buylimit & selllimit input double lotability11 = 0.01;//Лотность отложеных ордеров buystop & sellstop input int takeProfit11 = 15;//take profit отложеных ордеров buystop & sellstop input int stoploss11 = 10;//stop loss отложенных ордеров buystop & sellstop input double lotability12 = 0.01;//Лотность отложеных ордеров buystop & sellstop input int takeProfit12 = 15;//take profit отложеных ордеров buystop & sellstop input int stoploss12 = 10;//stop loss отложенных ордеров buystop & sellstop input double lotability13 = 0.01;//Лотность отложеных ордеров buystop & sellstop input int takeProfit13 = 15;//take profit отложеных ордеров buystop & sellstop input int stoploss13 = 10;//stop loss отложенных ордеров buystop & sellstop input int alpha1 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha2 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha3 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha4 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha5 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha6 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha7 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha8 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha9 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha10 = 10;//дополнительное повышение/понижение цены для s/b limit ордеров input int alpha11 = 10;//дополнительное повышение/понижение цены для s/b stop ордеров input int alpha12 = 10;//дополнительное повышение/понижение цены для s/b stop ордеров input int alpha13 = 10;//дополнительное повышение/понижение цены для s/b stop ордеров input int xParamsForButtons = 305;//кол-во пикселей на сколько переместить вправо текст input double profit = 100; //Profit $ input int order_limit = 15; //Order limit input double loss = -1000; //Profit stop $ //////// После выставления сетки ордеров в обе стороны логика работы следующая: (все закрытия сетки ордеров привязаны через кнопку "Close All") -Если последовательно закрываются ордера buy и sell не достигая лимитных ордеров, т.е кол-во ордеров sell=0 и кол-во ордеров buy=0, то срабатывает кнопка "Close All" (закрытия всех ордеров) - все ордера закрываются и при наличии зажатой кнопки "Allow" начинается новый цикл. -Если срабатывает любой отложенный ордер ордер Buylimit1 или Selllimit1 противоположная сетка ордеров удаляется: т.е. если сработал ордер Buylimit1, то удаляются все Selllimit и Sellstop, соответственно если сработал Selllimit1, то закрываются все Buylimit и Buystop. Далее закрытие всех ордеров происходит при выполнении любого Takeprofit 1...13, кроме нулевых-takeProfit0 (исключить их из условия закрытия, у них свое условие выше в тексте). Т.е если любой из этих ТР отработал, то срабатывает кнопка "Close All", все ордера закрываются и начинается новый цикл. /////// Функционал кнопок - Кнопка "Allow" выполняет роль условия начала нового цикла ( как и сейчас в проекте без изменений). Кнопка двухпозиционная с фиксацией. - Кнопка "Close All" может закрывать все ордера в любой момент цикла "вручную"- нажатием и начинается новый цикл. Кнопка "Close All" не фиксированного действия (как сейчас в исходном проекте). Кнопка "Profit" активируется при условии когда кол-во ОТКРЫТЫХ ордеров больше заданного параметра "Order limit" (сейчас программа считает все ордера и открытые и отложенные, нужны только открытые), ////////Дополнительное условие закрытия ордеров по параметрам "profit = 100" и "loss = -1000": - когда кнопка "Profit" активна (зеленая) условие выше, и профит по паре больше или равен заданному параметру (profit = 100; //Profit $), то срабатывает кнопка "Close All" (закрытия всех ордеров) - все ордера закрываются и начинается новый цикл. - Это условие также есть в исходном проете. - Если текущий убыток по паре больше или равен параметру - loss = -1000; //Profit stop $, то срабатывает кнопка "Close All" (закрытия всех ордеров) - все ордера закрываются и начинается новый цикл. //////// Время работы и разрешенный счет для работы - Сохранить кодировку по условию времени работы и номеру разрешенного счета. ( есть в исходном проекте) Наверное работа с магическими числами в данном алгоритме не нужна (как мне кажется), можно лишние условия связанные с ними удалить, чтобы не засорять тело проекта.