[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 8
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Компактность ухудшает читабельность. Правда справедливости ради вариант Романа тоже не совсем хорош, даже если не обращать внимания на логику.
Смысл экономить строки?
Это всё - суть пристрастия каждого отдельно взятого индивидуума и решать что удобнее, а что нет - пустое...
Мне главное, чтобы каждая строчка на своём привычном мне месте была и не более... Думаю, остальным также, но по своему усмотрению.
На вкус и цвет, как известно - фломастеры отсутствуют.
но так оформлять... блин страшный сон кодера.
Да уж... Алексей, я представляю как бы выглядел советник в 807 строк, который я только что отдал заказчику, будь он написан в стиле Романа ... :))))
но так оформлять... блин страшный сон кодера.
Для меня - подобная конструкция - нормальна. Это не советник на заказ, но ответ на вопрос, и вместо OrderDelete() - можно вообще было прописать словами - вставляете сюда удаление ордера и вызов ф-ии обработки возможных ошибок. Человек ждет, я открыл свой код, убрал все "лишнее", не обращая внимания на наличие, либо отсутствие пробелов после правок и предоставил ему рабочий вариант для дальнейших его подключений им в своего советника по его торговым условиям. Считаю, что все в пределах нормы, ИМХО.
Вот тот же участок - оригинал - к вопросу о страшном сне.
.... orderProfit = OrderProfit() + OrderSwap(); // Profit Price = OrderOpenTime(); // Цена открытия рыночного ордера SL = OrderStopLoss(); // Значение StopLoss ордера TP = OrderTakeProfit(); // Значение TakeProfit ордера if (ticket>0) // Если позиция открылась { while(OrderSelect(ticket,SELECT_BY_TICKET)==false) // Если ордер выбран { Sleep(100); } double OpenPrice=OrderOpenPrice(); //---------------------Запоминаем значения сл и тп ордера // При количестве итераций выше 3-х увеличиваем уровень ТР для выхода в профит. if (orderType == OP_BUY) { //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500; V_StopLossPips = NormalizeDouble(OpenPrice - (StopLossPips * Point), Digits); V_TakeProfitPips = NormalizeDouble(OpenPrice + (TakeProfitPips * Point), Digits); } if (orderType == OP_SELL) { //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500; V_StopLossPips = NormalizeDouble(OpenPrice + (StopLossPips * Point), Digits); V_TakeProfitPips = NormalizeDouble(OpenPrice - (TakeProfitPips * Point), Digits); } } // Проверка на предельную просадку double loss = - ((orderProfit * 100.0) / AccountBalance()); if (loss > MaxLoss) { Print ("MaxLoss"); CloseAllOrders(MagicNumber); IsExpertFailed = true; return (0); } // Проверка на необходимость закрытия открытой позиции (ордера) по стоп-лоссу if ( V_StopLossPips != 0 ) { if (orderType == OP_BUY && Bid <= V_StopLossPips) { CloseAllOrders(MagicNumber); Print ("V_StopLossPips закрываем по сл = ", V_StopLossPips); } if (OrderType()== OP_SELL && Ask >= V_StopLossPips) { CloseAllOrders(MagicNumber); Print ("V_StopLossPips закрываем по сл = ", V_StopLossPips); } } // Проверка на необходимость закрытия открытой позиции (ордера) по тейку if ( V_TakeProfitPips != 0 ) { if (orderType == OP_BUY && Bid >= V_TakeProfitPips) { CloseAllOrders(MagicNumber); Print ("V_TakeProfitPips закрываем по ТР = ", V_TakeProfitPips); } if (OrderType()== OP_SELL && Ask <= V_TakeProfitPips) { CloseAllOrders(MagicNumber); Print ("V_TakeProfitPips закрываем по ТР = ", V_TakeProfitPips); } } //-----------------------------------ВЫВОДИМ ТЕКУЩУЮ ИНФОРМАЦИЮ О ТОРГАХ НА ЭКРАН------------------------------------------------------------ string messageLoss = ""; if (orderProfit < 0.0) { messageLoss = "Просадка = " + DoubleToStr(loss, 1) + "% (макс. " + MaxLoss + "%)"; } // Вывод текущего состояния Comment("Прибыль = ", DoubleToStr(orderProfit, 1), " (лот ", orderLots, ") ", messageLoss, " Iteration= ", Iteration, " Sum_Loss + Delta= ", MathAbs (Sum_Loss) + Delta_Sum_Loss * 10 * orderLots, " Ширина канала = ", StopLossPips, " Профит по рыночному ордеру = ", orderProfit, " k = ", k); return (0); } Comment ("");На вкус и цвет, как известно - фломастеры отсутствуют.
Мы все такие разные, но всё таки мы вместе. ))) В одной космической кастрюле варимся. )))
Мы все такие разные, но всё таки мы вместе. ))) В одной космической кастрюле варимся. )))
Раз уж пошла такая пьянка (пишу код, как хочу/умею) порежу-ка последний огурец:
Пишу все "исполнительные" и "законодательные" органы в виде отдельных (много раз опробованных) функций.
Поскольку функции и их способности хорошо известны мне, то засовываю их далеко куда-нибудь в конце кода.
В функции start() прописываю лишь что за чем должно сработать.
Читаю только start() - и сразу все понятно.
Удобно.
Раз уж пошла такая пьянка (пишу код, как хочу/умею) порежу-ка последний огурец:
Пишу все "исполнительные" и "законодательные" органы в виде отдельных (много раз опробованных) функций.
Поскольку функции и их способности хорошо известны мне, то засовываю их далеко куда-нибудь в конце кода.
В функции start() прописываю лишь что за чем должно сработать.
Читаю только start() - и сразу все понятно.
Удобно.
а разве при компиляции кода ошибок не возникает, ведь вы сначала пишете функцию на выполнение, а потооооом где-то в конце пишете ее содержание, я конечно функциями не пользуюсь, больше пользуюсь коментариями, но с переменными такая проблема присутствует
а разве при компиляции кода ошибок не возникает, ведь вы сначала пишете функцию на выполнение, а потооооом где-то в конце пишете ее содержание, я конечно функциями не пользуюсь, больше пользуюсь коментариями, но с переменными такая проблема присутствует
Ошибок в этом случае быть не может.
При компиляции может быть лишь указание/напоминание, что какая-то функция не используется.
В таком случае или на это закрываю глаза, или эту неиспользуемую функцию удаляю.
а разве при компиляции кода ошибок не возникает, ведь вы сначала пишете функцию на выполнение, а потооооом где-то в конце пишете ее содержание, я конечно функциями не пользуюсь, больше пользуюсь коментариями, но с переменными такая проблема присутствует
Что это??? ))) Это шутка что ли? Если да, то удалась.)))