Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Скрипт для сбора статистики.

Добрый день.
Прошу написать скрипт для сбора статистики.

//+------------------------------------------------------------------+
//|                                   Срипт для сбора статистики.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict

#property show_inputs

extern int N = 100;// за сколько дней собирается статистика 

int high0,high1,high2,high3,high4,high5,high6,high7,high8,high9;
int high10,high11,high12,high13,high14,high15,high16,high17,high18,high19;
int high20,high21,high22,high23;

int low0,low1,low2,low3,low4,low5,low6,low7,low8,low9;
int low10,low11,low12,low13,low14,low15,low16,low17,low18,low19;
int low20,low21,low22,low23;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   // Срипт сравнивает маскимальное и минимальное значение бара открывшегося с 0 часов с 
   // максимальным и минимальным значением каждого дня из extern int N = 100;// за сколько дней собирается статистика 
   // В случае совпадения или максимального или минимального значения эти дни плюсуются в high0 или в low0.
   // Аналогичное сравнение делается с баром открывшегося в 1 час, ........,в 23 часа.
   // В результате мы имеем статистику совпадений дневных максимумов и минимумов по часам по всей выборке.
   // После завершения работы скрипта полученные данные выводяться примерно в таком виде на экран:
 
     Alert("\n   время    совп. high    совп. low",
           "\n     0       ",high0,"       ",low0,
           "\n     1       ",high1,"       ",low1,
           "\n     2       ",high2,"       ",low2,
           "\n     3       ",high3,"       ",low3,
           "\n     4       ",high4,"       ",low4,
           "\n     5       ",high5,"       ",low5,
           "\n     6       ",high6,"       ",low6,
           "\n     7       ",high7,"       ",low7,
           "\n     8       ",high8,"       ",low8,
           "\n     9       ",high9,"       ",low9,
           "\n     10      ",high10,"      ",low10,
           "\n     11      ",high11,"      ",low11,
           "\n     12      ",high12,"      ",low12,
           "\n     13      ",high13,"      ",low13,
           "\n     14      ",high14,"      ",low14,
           "\n     15      ",high15,"      ",low15,
           "\n     16      ",high16,"      ",low16,
           "\n     17      ",high17,"      ",low17,
           "\n     18      ",high18,"      ",low18,
           "\n     19      ",high19,"      ",low19,
           "\n     20      ",high20,"      ",low20,
           "\n     21      ",high21,"      ",low21,
           "\n     22      ",high22,"      ",low22,
           "\n     23      ",high23,"      ",low23);
           
           
  }
//+------------------------------------------------------------------+


Спасибо.
  • 0
  • Просмотров: 4261
  • 8 мая 2020, 08:59
  • ssg
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник Hero
Следующая запись в группе  
Доработка - 2 советника СМА
07 мая 2020
08 мая 2020

Брокер для ваших роботов, 15 лет на рынке

Комментарии (24)

+
0
а где тз?
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 8 мая 2020, 16:45
+
0
Здравствуйте. Т.З. внутри заготовки.Дублирую:
Срипт сравнивает максимальное и минимальное значение бара открывшегося с 0 часов с
максимальным и минимальным значением каждого дня из extern int N = 100;// за сколько дней собирается статистика
В случае совпадения или максимального или минимального значения эти дни плюсуются в high0 или в low0.
Аналогичное сравнение делается с баром открывшегося в 1 час, ........, в 23 часа.
В результате мы имеем статистику совпадений дневных максимумов и минимумов по часам по всей выборке.
После завершения работы скрипта полученные данные выводятся примерно в таком виде на экран:
Редактирован: 8 мая 2020, 19:16
avatar

  16  ssg Автор Сообщений: 817

  • 8 мая 2020, 19:14
+
0
скрины для наглядности
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 9 мая 2020, 10:25
+
0
Здравствуйте.
Как я вам приведу скрины того чего нет?:) 
Информация статистики выводится на экране функцией Alert(""); или Comment("");
Можно через функцию Print(""), но так будет не очень удобно для анализа.
Посмотрите в верху в заявке шаблон: Срипт для сбора статистики.mq4.
Пролистайте его вниз, там примерный вариант отображения итогов работы скрипта.
avatar

  16  ssg Автор Сообщений: 817

  • 9 мая 2020, 12:03
+
0


Это пример как я считал повторяемость медвежьих и бычьих баров за несколько дней и выводил через ObjectCreate() на основе script_Statistics_candles_V2.mq4.
А прошу написать то, что у меня не получилось сделать.Не хватает знаний( 
avatar

  16  ssg Автор Сообщений: 817

  • 9 мая 2020, 12:31
+
0
Андрей, добрый день.
Вы сможете выполнить мой заказ?
avatar

  16  ssg Автор Сообщений: 817

  • 10 мая 2020, 11:53
+
0
я вот сейчас смотрю на задание и у меня нет никакой ясности что смотрим, что складываем и т.д. а про то смогу или не смогу речи вообще не идет. поставлю на 18-е
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 10 мая 2020, 12:30
+
0
Андрей, попробую объяснить еще раз.
Пример:
N=100; скрипт считает статистику за 100 дней.
берет iHigh(Symbol(),1440,100) и сравнивается с iHigh бара открытого в 0 часов того же дня.
Затем iHigh(Symbol(),1440,100) и сравнивается с iHigh бара открытого в 1 час того же дня.
.
.
Затем iHigh(Symbol(),1440,100) и сравнивается с iHigh бара открытого в 23 часа того же дня.
Аналогично идет сравнение минимумов баров с iLow(Symbol(),1440,100) но уже с iLow каждого часового бара в сутках.
Естественно что максимум(минимум)суток совпадут с максимумом(минимумом) какого то бара.Номера этих баров запоминаются в счетчике.
Например iHigh(Symbol(),1440,100)= максимуму бара открывшегося в 8 часов, а iLow(Symbol(),1440,100)= минимуму бара открывшегося в 20 часов.

Затем срипт сравнивает iHigh(Symbol(),1440,99) и iLow(Symbol(),1440,99) с экстремумами часовых баров в эти сутки. И тоже заносит их в счетчик.
.
.
Затем срипт сравнивает iHigh(Symbol(),1440,1) и iLow(Symbol(),1440,1) с экстремумами часовых баров в эти сутки. И тоже заносит их в счетчик.

Все данные работы скрипта выводятся функций алерт в виде таблицы из трех столбцов.
Первый столбец показывает открытие бара в часах от 0 до 23.
Второй-сколько было всего совпадений за 100 суток хаев суток с хаями каждого часа.
Третий-сколько было всего совпадений за 100 суток лоев суток с лоями каждого часа.
Пример:
открытие часа совпадений High совпадений Low
00 0 0
01 0 1
.
.
.
15 27 42
.
.
23 0 0
Как то так.:) 
avatar

  16  ssg Автор Сообщений: 817

  • 10 мая 2020, 16:49
+
0
я попробовал начать кодить. вывел все в 3 столбца, но нужно еще отлаживать и значения суммировать. конца не видно не ко мне.




//+------------------------------------------------------------------+
//|                                                         Stat.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

string s="";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Comment("");

   for(int i=0; i<2; i++)
     {
      double lo=iLow(NULL,PERIOD_D1,i);
      double hi=iHigh(NULL,PERIOD_D1,i);

      s+="\n "+"\n "+"High "+(string)i+" = "+(string)hi+" Low "+(string)i+" = "+(string)lo+"\n ";
      
      for(int j=0; j<24; j++)
        {

         s+="\n "+(string)j;
         if(High[j]==hi)
           {
            s+=" "+(string)1;
           }
         else
            s+=" "+(string)0;

         if(Low[j]==lo)
           {
            s+=" "+(string)1;
           }
         else
            s+=" "+(string)0;
        }
     }
   Comment(s);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 10 мая 2020, 21:32
+
0
Понял, Андрей, спасибо.
Тогда можно вместо этого заказа написать советник по следующей стратегии:
Выставляется два разнонаправленных ордера. При движении цены в любую сторону один ордер всегда в плюсе, а второй в чуть большем (на спред) минусе.
Советник усредняет убыточный ордер и на обратном движении цены убыточные ордера достигают без убыток + профит. Тогда советник закрывает всю серию и бай и селл. Минусовые позиции закроются в без убытке плюс небольшой профит, а плюсовая позиция принесет основной доход.
В настройках Ваш стандартный набор усреднителя.
Пример.
Для упрощения расчетов спреды, свопы и комиссию не считаем.
Множитель лотов примем = 1.
Шаг усреднения примем = 400 пунктов.

1.Цена = 1.10000.
Открыли 1 позицию бай и 1 позицию селл каждую лотом 0.01.

2.Новая цена = 1.10400.
Открываем еще одну позицию селл лотом 0.01.Без убыток для селловых позиций получается при цене = 1.10200.

3.Новая цена = 1.10190.
Закрываем 2 позиции селл и 1 позицию бай.
Имеем: по селловым позициям 20 пунктов прибыли; по баевой позиции 190 пунктов прибыли.
Цикл повторяется сначала.
Подобного советника в базе я не увидел.Все работают с теми или иными вариациями, но по сути или в обе стороны не зависимо, или закрытие позиций происходит при общем профите советника.
avatar

  16  ssg Автор Сообщений: 817

  • 11 мая 2020, 04:56
+
0
на 19-е
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 11 мая 2020, 14:13
+
0
Спасибо, Андрей.
Буду ждать.
avatar

  16  ssg Автор Сообщений: 817

  • 11 мая 2020, 15:06
+
0
интересный усреднитель :) 



www.opentraders.ru/downloads/2656/
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 11 мая 2020, 16:20
+
0
Андрей, спасибо за оперативность!
Сейчас буду смотреть код и прогонять в тестере.
avatar

  16  ssg Автор Сообщений: 817

  • 11 мая 2020, 19:41
+
0
Андрей, еще раз спасибо!
Прогнал в тестере — с логикой все в порядке!
А все проверки для работе на реальном счете, информатику и т.д. я уже сам доработаю.
Спасибо!
avatar

  16  ssg Автор Сообщений: 817

  • 11 мая 2020, 20:17
+
0
*good* 
avatar

  12  Slava78 Сообщений: 598

  • 12 мая 2020, 08:41
+
0
;) 
avatar

  16  ssg Автор Сообщений: 817

  • 12 мая 2020, 11:38
+
0
поделитесь сетом пжлст кто пробовал, чтото у меня при прогоне сливает в марте…
avatar

  10  nespica Сообщений: 31

  • 12 мая 2020, 20:39
+
+1
avatar

  2  Mup90 Сообщений: 12

  • 12 мая 2020, 21:33
+
0
avatar

  10  nespica Сообщений: 31

  • 13 мая 2020, 05:38
+
0
avatar

  2  Mup90 Сообщений: 12

  • 12 мая 2020, 21:34
+
0
index SPX500
avatar

  2  Mup90 Сообщений: 12

  • 12 мая 2020, 21:34
+
+1
Андрей прав. Это действительно интересная тема. Простая и понятная. Пока что сырая и примитивная, но сама идея хороша, есть с чем работать.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 12 мая 2020, 23:07
+
0
при тейке 0, советник торгует очень даже ничего)) на длинных трендах долго сидит в просадке, вплоть до месяца. свопы не сожрут?
avatar

  10  nespica Сообщений: 31

  • 14 мая 2020, 21:04

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий