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

 
STARIJ:
Почитайте написанное Вами: получается, если один из трех последних ордеров закроется с профитом - торговля остановится!

Спасибо за подсказку

ОТКРЫТЬ НОВЫЙ ОРДЕР  я привел просто ради примера. Я пока не торгую.

Я просто не понимаю как закодировать это условие .

Если 3 - 4 - 5 .....  последних ордеров ПОДРЯД  закрылись по СТОПУ

СОВЕРШИТЬ КАКОЕ ТО ДЕЙСТВИЕ.

 
Victor Nikolaev:


Различия минимальные. Одна из переменных логическая.

При выводе будет написано true или false

 

Уф, что то я не могу сообразить, как добавлять переменные - т.е. допустим, у меня их 4 булевых, и нужно их перебрать?

//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      bool b= (bool) MathMod(tmp,3);
      bool c= (bool) MathMod(tmp,4);
      bool d= (bool) MathMod(tmp,5);

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

Я понимаю суть дела - должен быть остаток меньше или больше нуля после деления - но не как не соображу как этого добиться :(

 
ANDREY:

Спасибо за подсказку

ОТКРЫТЬ НОВЫЙ ОРДЕР  я привел просто ради примера. Я пока не торгую.

Я просто не понимаю как закодировать это условие .

Если 3 - 4 - 5 .....  последних ордеров ПОДРЯД  закрылись по СТОПУ

СОВЕРШИТЬ КАКОЕ ТО ДЕЙСТВИЕ.

Прежде, чем совершить какое-то действие - посмотреть как закрылись 3 - 4 - 5 позиций подряд. Если все по стопу, то совершить какое-то действие. Элементарно же, Ватсон...
 
ANDREY:  Нужно что бы не только последний но и  предпоследний и предпредпоследний ордера были закрыты по стопу

и только тогда ОТКРЫТЬ ЕЩЕ ОДИН ОРДЕР

 Скрипт прилагаю  -- проверил, работает, результат приложил

//+-------------------------------------------------------+
//| Подсчет убыточных ордеров                 PROBA_MA.mq4|
//+-------------------------------------------------------+
#property strict
130
void OnStart()
{
  int Счет=0, Номер=OrdersHistoryTotal()-1;

  for( ; Номер>=0; Номер--)
  {
    if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue;
    Alert(Номер, "  Тикет = ", OrderTicket(),"  T =",OrderOpenTime(), "  Профит = ", OrderProfit());
    if(OrderProfit()>=0) break;
    Счет++;
    if(Счет==3)
    {
      Alert("Вот тут и открываем новый ордер");
      return;
    }
  }
  Alert("Подряд идущих убыточных ордеров слишком мало");
}

Это вся история


А это щелкнул правой кнопкой по истории и выбрал период до 3 мая

 
STARIJ:

 Скрипт прилагаю  -- проверил, работает, результат приложил

Это вся история


А это щелкнул правой кнопкой по истории и выбрал период до 3 мая

Так по стопу же. И не надёжно. Нужно делать независимо от сортировки.
 

Извиняюсь за беспокойство,повторю ещё раз свой вопрос

Посоветуйте пожалуйста какой нибудь индикатор может на переделку,интересует на часовом графике каждые сутки отрисовывалась линия между хая и лоу, и возможность получить данные о длинне линии и уголу наклона и можно было поработать с этими данными в коде, я не большой знаток mql4 если самому писать c нуля,большая проблема? помогите пожалуйста

Может я не в ту ветку вопрос задал?

 
STARIJ:

 Скрипт прилагаю  -- проверил, работает, результат приложил

Это вся история


А это щелкнул правой кнопкой по истории и выбрал период до 3 мая

Спасибо большое за помощь.
 
Artyom TrishkinТак по стопу же. И не надёжно. Нужно делать независимо от сортировки.

Артем! В правом нижнем углу терминала  индикатор обмена с сервером - принятых и отправленных килобайт. На индикаторе было 2318. Щелкнул правой кнопкой по истории и выбрал Сегодня (а сегодня воскресенье). История опустошилась. Скрипт выдает, что ордера в истории отсутствуют.  Щелкнул правой кнопкой по истории и выбрал Вся история. Индикатор ожил, на нем прибавилось 518 килобайт. Таким образом, при установке фильтра на БОЛЬШИЙ период ордера скачиваются с сервера. При установке меньшего периода - удаляются. Поэтому для ускорения работы (меньше ордеров обрабатывать) лучше установить Последняя неделя, Последние 3 дня или Сегодня. Это легко проверить с помощью скрипта, в котором Alert(OrdersHistoryTotal());

Про сортировку. Если щелкать в истории по заголовкам столбцов, можно упорядочить ВИЗУАЛЬНОЕ ОТОБРАЖЕНИЕ истории по убыванию или возрастанию любого столбца. Однако выбор ордеров с помощью функции OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY) всегда, при любой сортировке отображения, идет по номеру, начиная от начала ВЫБРАННОГО интервала истории. А в истории ордера располагаются по времени отправки их на сервер, что наиболее естественно. Если номер = 0, то это самый старый ордер ВЫБРАННОГО интервала истории. Если OrdersHistoryTotal()-1 - самый последний ордер ВЫБРАННОГО интервала истории. Много раз проверял это. И вряд ли это когда-либо будет изменено.

 
STARIJ:

Артем! В правом нижнем углу терминала  индикатор обмена с сервером - принятых и отправленных килобайт. На индикаторе было 2318. Щелкнул правой кнопкой по истории и выбрал Сегодня (а сегодня воскресенье). История опустошилась. Скрипт выдает, что ордера в истории отсутствуют.  Щелкнул правой кнопкой по истории и выбрал Вся история. Индикатор ожил, на нем прибавилось 518 килобайт. Таким образом, при установке фильтра на БОЛЬШИЙ период ордера скачиваются с сервера. При установке меньшего периода - удаляются. Поэтому для ускорения работы (меньше ордеров обрабатывать) лучше установить Последняя неделя, Последние 3 дня или Сегодня. Это легко проверить с помощью скрипта, в котором Alert(OrdersHistoryTotal());

Про сортировку. Если щелкать в истории по заголовкам столбцов, можно упорядочить ВИЗУАЛЬНОЕ ОТОБРАЖЕНИЕ истории по убыванию или возрастанию любого столбца. Однако выбор ордеров с помощью функции OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY) всегда, при любой сортировке отображения, идет по номеру, начиная от начала ВЫБРАННОГО интервала истории. А в истории ордера располагаются по времени отправки их на сервер, что наиболее естественно. Если номер = 0, то это самый старый ордер ВЫБРАННОГО интервала истории. Если OrdersHistoryTotal()-1 - самый последний ордер ВЫБРАННОГО интервала истории. Много раз проверял это. И вряд ли это когда-либо будет изменено.

Вы настолько недавно тут, что не всё знаете как было. Уже триста лет назад выработано правило - поиск по времени - единственный надёжный способ определения последней/первой или идущих подряд позиций. Вы работаете с деньгами. Ладно если только со своими, но и с чужими тоже. Даже косвенно - своей программой.

А то, что вы мне рассказываете - это ни для кого не секрет и не открытие - все об этом знают много лет ;)

А то, о чём я говорил - вы так и не поняли...

 
Artyom Trishkin:

Вы настолько недавно тут, что не всё знаете как было. Уже триста лет назад выработано правило - поиск по времени - единственный надёжный способ определения последней/первой или идущих подряд позиций. Вы работаете с деньгами. Ладно если только со своими, но и с чужими тоже. Даже косвенно - своей программой.

А то, что вы мне рассказываете - это ни для кого не секрет и не открытие - все об этом знают много лет ;)

А то, о чём я говорил - вы так и не поняли...

Артем, или это у Вас троллинг ненавязчивый такой, или Вы сами не понимаете, о чем пишете!!!

В прошлом посте Вы говорили о сортировке. Объяснил Вам, что зависимость от сортировки отсутствует.

Дискуссии о выборе ордеров по времени видел и ПРИНИМАЛ УЧАСТИЕ в одной из них. Вывод был сделан такой, что сейчас ордера располагаются в базе данных ордеров по времени их отправки на сервер. Но ТЕОРЕТИЧЕСКИ есть опасение, что разработчики могут это изменить. На этом та дискуссия закончилась. Как специалист по базам данных заверяю Вас, что это опасение напрасно, изменение исключено. Можете обратиться с этим вопросом к разработчикам. Если что-то пишу - то знаю, что пишу. Подходит 50-летний юбилей программирования. Если заметите в моих постах какую-то лажу с Вашей точки зрения - пишите в личку. Объясню, и Ваши сомнения развеются. А здесь препираться вряд ли уместно. Написал человеку скрипт - он сказал спасибо. Ведь хорошо?

Насчет недавно. Да просто логин сменил, можете догадаться какой был по стилю. Или по IP посмотрите, у Вас доступ наверное есть... Просьба оставить без ответа.

Причина обращения: