Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 656

 
Vitaly Muzichenko:

Вам в ветку клоунов теоретиков, там любят рисовать не понятно что, и не понятно зачем

И подобных веток на форуме полно - хоть заобсуждайтесь!

Я вот не пойму Виталий! - Это Вы серьезно? - Или это Вы так шутите?

Как всем хорошо известно, самой "теории трейдинга" в природе еще не существует.

Есть разные "Волны Эллиота", "Числа Фиббоначи", "Функции Вейерштрасса" и другое ...

Но к "теории трейдинга" все это не имеет никакого отношения.

Да и о какой "теории трейдинга" можно говорить, если 99.9999% форумчан, разработчиков и трейдеров не умеют строить  самый простой тренд скользящего среднего.

Вот и рисуют "непонятно что", и "непонятно зачем" - как Вы сами сказали.

------------------------------------------------------------------------------

Да и Вы тоже правильно "нарисовать" самый простой тренд не сумеете. - Я в этом уверен. Вы уж меня извините за прямоту. Но не сумеете.

Но Вы зато легко говорите о КЛОУНАХ, и  рассуждаете и высказываетесь о том, чего Вы сами не знаете, и делать не умеете.

Вот такой парадокс мы наблюдаем.

----------------------------------------------------------------------------------

Но больше всего меня прикалывает не это, а совсем другое.

Я вижу тысячи фрилансеров и всевозможных академиков  на рынке Форекс, которые предлагают всем свои услуги.

Везде РЕКЛАМА. Платите - и они помогут, платите - и они научат ...

Ну ладно - я Вам заплачу, отвечаю им я.

Но Вы мне покажите свою квалификацию. 

ПОСТРОЙТЕ МНЕ САМЫЙ ПРОСТОЙ ТРЕНД !!!

Еще ни разу никто не построил.  Ни фрилансеры, ни академики, ни разработчики - НИКТО.

Опозориться боятся. Потому что не умеют. Хотя , на первый взгляд ничего сложного нет. 

Это - стандартная процедура. Есть в MT4/MT5. Взял и построил - показал мастерство.

Но таких нет. Все рисуют "непонятно что" и "непонятно зачем". Все - КЛОУНЫ?

----------------------------------------------------------------------------------

А Вы говорите КЛОУНЫ-ТЕОРЕТИКИ !!!

Кто здесь больше других КЛОУНЫ - я даже не знаю!!!

 
Artyom Trishkin:

1. Зачем?

2. Что было? Как было?

1. Зачем? - для расчетов.

2. Что было?  - Настолько другие цифры,  Bid-buyPrice =1.000000000000000006551е-05  а не 0.00001.  И почему double(Bid-buyPrice) дало  0.00001, те потребовалось приведение к double, если я правильно понял, когда Bid и buyPrice уже тип double?

 
Andrey Sokolov:

1. Зачем? - для расчетов.

2. Что было?  - Настолько другие цифры,  Bid-buyPrice =1.000000000000000006551е-05  а не 0.00001.  И почему double(Bid-buyPrice) дало  0.00001, те потребовалось приведение к double, если я правильно понял, когда Bid и buyPrice уже тип double?

Зачем делаете явное приведение типов к double, если оперируете числами double? Я вам показал приведение типа double к типу string при выводе на печать.

Вы уверены, что 1.000000000000000006551е-05  и 0.00001 - это разные числа? Разный формат вывода - вы же не дали указание способа вывода в Comment(), вот вам и подставил терминал научный формат вывода. Поэтому я и написал - либо делайте явное преобразование типа double к string, либо используйте DoubleToString() с нужной точностью.

В справке всё есть же - а она даже не в шаговой доступности, а просто щёлкнуть мышкой в меню "Документация".

Вот из справки, пометил нужное:

Comment

Выводит комментарий, определенный пользователем, в левый верхний угол графика.

void  Comment(
   argument,     // первое значение
   ...           // последующие значения
   );

Параметры

...

[in]   Любые значения, разделенные запятыми. Для разделения выводимой информации на несколько строк можно использовать символ перевода строки "\n" либо "\r\n". Количество параметров не может превышать 64. Общая длина выводимого сообщения (включая служебные неотображаемые символы) не может превышать 2045 символов (лишние символы будут обрезаны при выводе).

Возвращаемое значение

Нет возвращаемого значения

Примечание

Массивы нельзя передавать в функцию Comment(). Массивы должны печататься поэлементно.

Данные типа double выводятся с точностью до 16 десятичных цифр после точки, при этом данные могут выводиться либо в традиционном либо в научном формате – в зависимости от того, как запись будет наиболее компактна. Данные типа float выводятся с 5 десятичными цифрами после точки. Для вывода вещественных чисел с другой точностью либо в явно указанном формате необходимо использовать функцию DoubleToString().

Данные типа bool выводятся в виде строк "true" или "false". Даты выводятся в виде YYYY.MM.DD HH:MI:SS. Для вывода даты в другом формате необходимо использовать функцию TimeToString(). Данные типа color выводятся либо в виде строки R,G,B, либо в виде названия цвета, если этот цвет присутствует в наборе цветов.

При работе в тестере стратегий в режиме оптимизации функция Comment() не выполняется.

 
Artyom Trishkin:Вы уверены, что 1.000000000000000006551е-05  и 0.00001 - это разные числа? Разный формат вывода - вы же не дали указание способа вывода в Comment(), вот вам и подставил терминал научный формат вывода. Поэтому я и написал - либо делайте явное преобразование типа double к string, либо используйте DoubleToString() с нужной точностью.

Вопрос возник тк не работало условие, где сравнивалась переменная*Point и результат этого вычитания, где из Bid со значением double вычиталась другая переменная  со значением double, а результат вычитания снова потребовалось приводить к  double.

Почему при вычитании сразу не тип  double?

Я читал справку, не увидел ответа, вот и спрашиваю здесь

 
Andrey Sokolov:

Вопрос возник тк не работало условие, где сравнивалась переменная*Point и результат этого вычитания, где из Bid со значением double вычиталась другая переменная  со значением double, а результат вычитания снова потребовалось приводить к  double.

Почему при вычитании сразу не тип  double?

Я читал справку, не увидел ответа, вот и спрашиваю здесь

При вычитании double из double результат будет double. Это однозначно.

А вот что вы там с чем сравниваете - только вы знаете.

 
Artyom Trishkin:

При вычитании double из double результат будет double. Это однозначно.

А вот что вы там с чем сравниваете - только вы знаете.

extern double First_PartialTrailingStart=15;

if (Digits() ==3 || Digits()==5) {First_PartialTrailingStart*=10; }

if(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - работает

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - не работает

 
Andrey Sokolov:

extern double First_PartialTrailingStart=15;

if (Digits() ==3 || Digits()==5) {First_PartialTrailingStart*=10; }

if(double(Bid-buyPrice)>=First_PartialTrailingStart*Point) - работает

if((Bid-buyPrice)>=First_PartialTrailingStart*Point) - не работает

Всё работает. Скрипт:

//+------------------------------------------------------------------+
//|                                                  TestCompare.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property script_show_inputs
#define   Bid       SymbolInfoDouble(Symbol(),SYMBOL_BID)
//--- input parameters
input uint     InpFirstPartialTrailingStart  =  15;   // Старт трала через (пунктов)
input uint     InpMultiplier                 =  10;   // Множитель пунктов
input int      InpPriceShift                 =  20;   // Отступ цены Buy от Bid
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
double part_trailing_start=double(InpFirstPartialTrailingStart<1 ? 1 : InpFirstPartialTrailingStart);
double multiplier=double(InpMultiplier<1 ? 1 : InpMultiplier);
double value=part_trailing_start*multiplier*Point();
double shift=InpPriceShift*Point();
double buy_price=Bid-shift;
//---
   double res=NormalizeDouble(Bid-buy_price,Digits());
   bool   cmp=NormalizeDouble(res-value,Digits())>=0;
   Alert
     (
      "Старт трала через ",(string)value," пп."
      ", Цена Bid=",(string)Bid,
      ", цена Buy=",(string)buy_price,
      ", Bid-цена Buy=",DoubleToString(res,Digits()),
      ", Bid-buy_price>=value: ",string(cmp)
     );
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Всё работает. Скрипт:

Спасиб, буду разбираться

 
А можно ли получать цену закрытия свечи на последнем ее тике? 
 
Andrey Sokolov:
А можно ли получать цену закрытия свечи на последнем ее тике? 
Это цена Bid. Другой вопрос: как вы узнаете, что вот именно этот тик последний?
Причина обращения: