Добрый день.
Прошу написать скрипт для сбора статистики.
//+------------------------------------------------------------------+
//| Срипт для сбора статистики.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);
}
//+------------------------------------------------------------------+
Спасибо.
Комментарии (24)
35 AM2 Сообщений: 16250 - Андрей
Срипт сравнивает максимальное и минимальное значение бара открывшегося с 0 часов с
максимальным и минимальным значением каждого дня из extern int N = 100;// за сколько дней собирается статистика
В случае совпадения или максимального или минимального значения эти дни плюсуются в high0 или в low0.
Аналогичное сравнение делается с баром открывшегося в 1 час, ........, в 23 часа.
В результате мы имеем статистику совпадений дневных максимумов и минимумов по часам по всей выборке.
После завершения работы скрипта полученные данные выводятся примерно в таком виде на экран: Редактирован: 8 мая 2020, 19:16
16 ssg Автор Сообщений: 817
35 AM2 Сообщений: 16250 - Андрей
Как я вам приведу скрины того чего нет?
Информация статистики выводится на экране функцией Alert(""); или Comment("");
Можно через функцию Print(""), но так будет не очень удобно для анализа.
Посмотрите в верху в заявке шаблон: Срипт для сбора статистики.mq4.
Пролистайте его вниз, там примерный вариант отображения итогов работы скрипта.
16 ssg Автор Сообщений: 817
Это пример как я считал повторяемость медвежьих и бычьих баров за несколько дней и выводил через ObjectCreate() на основе script_Statistics_candles_V2.mq4.
А прошу написать то, что у меня не получилось сделать.Не хватает знаний
16 ssg Автор Сообщений: 817
Вы сможете выполнить мой заказ?
16 ssg Автор Сообщений: 817
35 AM2 Сообщений: 16250 - Андрей
Пример:
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
Как то так.
16 ssg Автор Сообщений: 817
35 AM2 Сообщений: 16250 - Андрей
Тогда можно вместо этого заказа написать советник по следующей стратегии:
Выставляется два разнонаправленных ордера. При движении цены в любую сторону один ордер всегда в плюсе, а второй в чуть большем (на спред) минусе.
Советник усредняет убыточный ордер и на обратном движении цены убыточные ордера достигают без убыток + профит. Тогда советник закрывает всю серию и бай и селл. Минусовые позиции закроются в без убытке плюс небольшой профит, а плюсовая позиция принесет основной доход.
В настройках Ваш стандартный набор усреднителя.
Пример.
Для упрощения расчетов спреды, свопы и комиссию не считаем.
Множитель лотов примем = 1.
Шаг усреднения примем = 400 пунктов.
1.Цена = 1.10000.
Открыли 1 позицию бай и 1 позицию селл каждую лотом 0.01.
2.Новая цена = 1.10400.
Открываем еще одну позицию селл лотом 0.01.Без убыток для селловых позиций получается при цене = 1.10200.
3.Новая цена = 1.10190.
Закрываем 2 позиции селл и 1 позицию бай.
Имеем: по селловым позициям 20 пунктов прибыли; по баевой позиции 190 пунктов прибыли.
Цикл повторяется сначала.
Подобного советника в базе я не увидел.Все работают с теми или иными вариациями, но по сути или в обе стороны не зависимо, или закрытие позиций происходит при общем профите советника.
16 ssg Автор Сообщений: 817
35 AM2 Сообщений: 16250 - Андрей
Буду ждать.
16 ssg Автор Сообщений: 817
www.opentraders.ru/downloads/2656/
35 AM2 Сообщений: 16250 - Андрей
Сейчас буду смотреть код и прогонять в тестере.
16 ssg Автор Сообщений: 817
Прогнал в тестере — с логикой все в порядке!
А все проверки для работе на реальном счете, информатику и т.д. я уже сам доработаю.
Спасибо!
16 ssg Автор Сообщений: 817
12 Slava78 Сообщений: 598
16 ssg Автор Сообщений: 817
10 nespica Сообщений: 31
2 Mup90 Сообщений: 12
10 nespica Сообщений: 31
2 Mup90 Сообщений: 12
2 Mup90 Сообщений: 12
24 ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.
10 nespica Сообщений: 31
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий