Ответ
 
Опции темы
Старый 15.02.2016, 15:05   #4581 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Привет)
Сообщение от Understanding Посмотреть сообщение
А если сделать вариант такой: Group [1], Group [2]?... - тоже достаточно понятно смотрится
не вижу чем здесь короче:
"Group [1]" = 9 символов ""Gold" - 4
Сократите цвет до 2-х символов да и все
--

Сообщение от Understanding Посмотреть сообщение
А если сделать вариант такой: Group [1], Group [2]?... - тоже достаточно понятно смотрится.
можно сделать как Вы раньше предлагали один из вариантов "х1" "х2" и т.д. - еще короче будет
принцип тот же что и в последней функции с коротким именем цвета

---

Сообщение от Understanding Посмотреть сообщение
это как раз вычисление цвета и вывод имени цвета "кушает" время при переключении таймфреймов?
эта ф-я вызывается 1 раз при инициализации и "кушает" почти ничего

---

Сообщение от Understanding Посмотреть сообщение
только вот при переключении периодов (М1, М5 и т.д.) он дольше чем тот, что из 11 файлов "думает".
думает он дольше из за того что историю берет всю существующую..
нужно делать ограничение.. скажем день-два-три
тогда при переключении будет проще)

PHP код:
limit=Bars-counted_bars;
for(
i=0i<limiti++) 
здесь limit-это кол-во баров, которое будет рассчитываться
Bars - это всего баров на графике
counted_bars - это кол-во уже посчитанных баров

Последний раз редактировалось innovision; 15.02.2016 в 15:10.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 15.02.2016, 15:24   #4582 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
"Group [1]" = 9 символов ""Gold" - 4
Сократите цвет до 2-х символов да и все
Для нас - это да, а люди - они-же могут выбрать цвет свой и не из сокращенных, тогда они будут видеть сообщение с ошибкой "цвет не представлен". Весь спектр цвета представить в коде, наверное, сложно. Потому вариант с Group [1] более универсален. И все-таки, как код в случае с Group [1]... будет выглядеть? А то, что всю историю шерстит - так даже лучше. Пусть лучше думает дольше, чем по отрывкам дату брать)
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.02.2016, 15:40   #4583 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
Потому вариант с Group [1] более универсален. И все-таки, как код в случае с Group [1]... будет выглядеть?
Сообщение от innovision Посмотреть сообщение
принцип тот же что и в последней функции с коротким именем цвета
попробуйте сами эту ф-ю написать - проверю))
---
на скрине взял 500 баров.. на вскидку)
Миниатюры:
Нажмите на изображение для увеличения
Название: 15-02-2016 17-39-45.png
Просмотров: 13
Размер:	36.0 Кб
ID:	234363  
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 15.02.2016, 15:51   #4584 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
даже можно проще сделать.. без функций
строку
PHP код:
label=ColorToShortString(InpMAcolor01);label+=" "+method
заменить на
PHP код:
label="x1 "+method
"x1" или просто "1" или "x01" - как лучше
и так во всех блоках
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 15.02.2016, 16:02   #4585 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
вот с историей в 1440 баров без учета ТаймФрейма
1-я переменная
должно быть на порядок быстрее при смене ТФ
пробуйте)
только старый под др. именем сохраните.. или этот под новым.. здесь принцип чуть другой... под новый билд
Вложения:
Тип файла: mq4 RainbowMMA.mq4 (31.5 Кб, 4 просмотров)

Последний раз редактировалось innovision; 15.02.2016 в 16:05.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 15.02.2016, 16:14   #4586 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
label="x1 "+method;
благодаря этой переменной в коде, будет браться информация присутствующая здесь - "input string x01 = "------- Group [1] --------------------------------------------";"?
Просто пока не понимаю еще, как сделать вывод данных из этой строки: "input string x01 = "------- Group [1] --------------------------------------------";" (вместо цвета) пусть будут оба варианта на форуме (и с цветом, и с Group [...]) =) Только надо чтоб Group [...] было без окружающих "-". Вряд ли сам сумею разобраться :/

Последний раз редактировалось Understanding; 15.02.2016 в 16:16.
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.02.2016, 16:58   #4587 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
благодаря этой переменной в коде, будет браться информация присутствующая здесь - "input string x01 = "------- Group [1] --------------------------------------------";"?
нет).. эти строки input string x01 и далее по аналогии используются только с одной целью - визуально разделить параметры при открытии индикатора.. больше ни для чего
давайте сделаю Group [...] ?

===
все 7 Group [..]
находятся в строках
148
168
187
204
222
243
250
там можно менять как Вам лучше

=
перегрузил файл - чуть поправил историю
Вложения:
Тип файла: mq4 RainbowMMA_History+Group.mq4 (32.8 Кб, 4 просмотров)

Последний раз редактировалось innovision; 15.02.2016 в 17:12.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 15.02.2016, 17:13   #4588 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
давайте сделаю Group [...] ?
будет замечательно, если сделаете (крайний вариант не успел скачать на пару секунд, видимо - вложение уже не существовало на тот момент). У меня все эти наши вариации Радуги которые тут выставлялись есть, изучаю изменения. Самому сложно написать (к моему стыду) без нужных знаний :/
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.02.2016, 17:16   #4589 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
крайний вариант не успел скачать на пару секунд
тот что сейчас - должен быть правильный)
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.02.2016, 17:24   #4590 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Отлично!) А чтоб всю историю индикатор использовал для построения радуги, это надо закомментить или установить 0 в строке настройки? А чтоб в коде указать - всю историю, покажите где это указать, чтоб без ошибок уже сделал. Потому что я использую скрипт, который конвертирует 1 месяц в 2, 3, 4, 6, 12 месяцев и на этих сконвертированных графиках, радуга с ограничением по периодам не показывается, а со всей историей - показывается благополучно.
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 15.02.2016, 17:36   #4591 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
установить 0 в строке настройки?
сделал такой финт в этой версии -
ставим 0 - вся история
любое число >0 считается как нужное кол-во баров

реализовано в процедуре "void BarsToPeriod()"
Вложения:
Тип файла: mq4 RainbowMMA_History+Group.mq4 (32.9 Кб, 6 просмотров)

Последний раз редактировалось innovision; 15.02.2016 в 17:48.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 15.02.2016, 17:58   #4592 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
сделал такой финт в этой версии -
ставим 0 - вся история
любое число >0 считается как нужное кол-во баров
Вот оно!) Теперь мега все!)) Спасибище) Сейчас еще на свой лад отредактирую и выставлю финальную версию настроек индикатора под себя и эта тема закрыта) Вот, во вложении версия по которой теперь буду работать)

Родили мы его (правда, моих усилий тут минимум, в основном интерес и свои познания) но за это все Вам ОГРОМНОЕ СПАСИБО, правда!)

Есть вопрос еще (не по Радуге уже ) по скриптам. Если есть у Вас время, буду рад если поможете. Сейчас их вложу сюда.

Тот, кто создавал, не поубирал "варнинги" а я не знаю как правильно их убрать и мешают ли "варнинги" на работу скрипта или нет.

Два скрипта, - один конвертирует месяц в MN-свечи с кратностью 2, 3, 4, 6, 12 (мечтал добавить кратность недостающую, чтоб можно было 1 месяц конвертировать еще в 5, 7, 8, 9, 11, потому что порой, по 6 часовой свече поймешь свечную модель лучше, чем, например, на 12-ти часовом графике и наоборот и как раз эти кратности были бы не лишними, но мне уже Вас стыдно, если честно, просить добавить эту возможность, потому если будет время и желание - помогите с переработкой скрипта с добавлением всего спектра кратности по месяцам начиная от 1 и заканчивая 12 а если можно то и по 24, потому что месяцы конвертировать в года и выше - это круто и для торговли пригодится).

В архиве скрипт _MN - по месяцам, тот что _Opt - обычный, на все ТФ что не превышает 1 месяц или 30 дней. У обоих "варнинги" в строке return. Если добавить return (0); "варнинг" исчезает, но я без понятия - верное это решение или нет.
Вложения:
Тип файла: zip Scripts.zip (10.3 Кб, 12 просмотров)
Тип файла: mq4 RainbowMMA_History+Group.mq4 (32.9 Кб, 8 просмотров)
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
innovision (16.02.2016)
Старый 15.02.2016, 19:40   #4593 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Understanding, прошу прощения за задержку с ответом... гости нагрянули..
завтра все посмотрю и отвечу ...
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (15.02.2016)
Старый 16.02.2016, 11:15   #4594 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
сделано следующее
1. в обоих скриптах убрал ошибки при компиле в новом билде
2. для скрипта Period_Converter_MN добавил PeriodMultiplier от 1 до 24 включительно с шагом 1
3. скрипт Period_Converter_Opt скомпилил как индикатор - теперь рисует в реальном времени на оффах..
тестил, установив на М1 несколько этих индюков с разными периодами.. и открыв оффы М2, М3, М4 и т.д.
имя его как индюка - Period_Converter_Opt_[i]
4. для компила использовал чуть поправленную стандартную либу
WinUser32_pk.mqh

Так и не понял для чего предназначен Period_Converter_MN ?? )))

Пробуйте)
Вложения:
Тип файла: zip Period_Converter.zip (70.4 Кб, 5 просмотров)

Последний раз редактировалось innovision; 16.02.2016 в 11:36.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (16.02.2016)
Старый 16.02.2016, 16:58   #4595 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
Сообщение от innovision Посмотреть сообщение
Так и не понял для чего предназначен Period_Converter_MN ?? )))
innovision, я вам благодарен от всей души. Реально спасибо!


Period_Converter_MN - это скрипт облегчающий жизнь (по крайней мере мне) очень. Откройте любой инструмент, поставьте ТФ MN в настройках скрипта выберите от 1 до 24 (теперь с вашими изменениями можно ведь, и 24 ставить?), потом откройте оффлайновый график согласно кратности настройках скрипта. Если была выбрана, скажем, кратность 6, ищите оффлайновый график этого инструмента на минутках - М6, открывайте и Вы получите в одной свече 6 месяцев движения цены этого инструмента. Знаете, как круто знать, куда движется тренд по 12-ти месячным свечам?) Вот-вот...) Это оно, детка (с) какой-то американский фильм

innovision, может, вы в силах и время позволит, когда-то создать советник по моей торговой стратегии? Я готов заплатить, если надо будет. Вы очень отзывчивый и добрый человек. Если честно, мне не хочется Вас напрягать с разными просьбами, но тут кроме Вас... мало кто помогает :/... А торговая стратегия очень хорошо себя зарекомендовала.

Построена на фракталах ("твердые" фракталы, с запаздыванием). По этим фракталам в Метатрейдере на платформе Android можно вручную на М5-М15 очень успешно торговать (стандартные фракталы это тот-же sFractals от Метаковтов). Они не перерисовываются а исчезают (уничтожаются) но только тогда, когда фракталы на более старших графиках, образованы в сторону противоположную от М5 (чаще, фракталы М15-30, Н1-Н4 и D1 играют роль первее, чем М5, но и М5 успешно отрабатывают свое). Еще, по Rainbow можно видеть тренд. Я сегодня постараюсь в своей теме написать о индикаторе Rainbow, свои наблюдения. Я по этой стратегии торгую более года и жалею что вручную, потому что очень много средств "недозарабатываю", что очень печально. Приходится "жить" у экрана, что тоже не есть гуд. Потому советник помог бы не только мне - автоматизировав процесс по описанному мною алгоритма, а и приносил бы прибыль создателю сова и всем, у кого он будет. Давайте заберем деньги с этого ********* рынка. Знаю что у каждого он "вытянул" немало сил и нервов, пора и нам получать максимум пользы от этого всего. Так что буду рад несказанно, если кто возьмется автоматизировать процесс. Можно даже простого, обычного фрактальщика по этому индикатору, что я в архив поставил (по sFractals & Close_Directed_Fractals). Потому что эти фракталы, работают лучше чем все что я тестировал. Главное, как-то постараться мои наблюдения и мой алгоритм воплотить в программный код и будет все чики-пуки, я вам это обещаю. По месяцам и годам фракталы тоже есть (на сформированном графике Period_Converter_MN), знаете как круто наблюдать, что и они успешно отрабатываются. особенно М3, М6 и М12 - просто шикарно отрабатываются (+Rainbow с его четким направлением тренда и линиями 200-274 - уматово работает и именно будто по этому алгоритму и идет движняк всего движения на рынке что форекс, что фонде). Приглашаю всех кто заинтересовался в мою тему

Последний раз редактировалось Understanding; 16.02.2016 в 17:18.
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
innovision (16.02.2016)
Старый 16.02.2016, 17:29   #4596 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
2 вопроса:

1. Understanding, Вы перепроверили скрипт Period_Converter_MN ?
Он работает у Вас??
у меня почти ничего нет... может что то не так делаю?
Сообщение от Understanding Посмотреть сообщение
Откройте любой инструмент, поставьте ТФ MN в настройках скрипта выберите от 1 до 24, потом откройте оффлайновый график согласно кратности настройках скрипта.
Приложил 2 рисунка: 1,2.png

Сообщение от Understanding Посмотреть сообщение
(теперь с вашими изменениями можно ведь, и 24 ставить?)
да)

2.Как по мне то Period_Converter_Opt_[i] в виде индюка отлично показывает не-стандарты в реал-тайм, он у Вас заработал?

по советнику есть вопросы.. спрошу в Вашей ветке после того как закончим с этим конвертером
Миниатюры:
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 7
Размер:	20.0 Кб
ID:	234518   Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 4
Размер:	8.0 Кб
ID:	234519  

Последний раз редактировалось innovision; 16.02.2016 в 17:49.
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (16.02.2016)
Старый 16.02.2016, 18:08   #4597 (permalink)
Активный участник
 
Аватар для Understanding
 
Регистрация: 28.01.2016
Адрес: Украина, Одесса
Сообщений: 105
Репутация: 135
Understanding Understanding
Сказал(а) спасибо: 168
Поблагодарили 134 раз(а) в 33 сообщениях
Поинты: 120
innovision, все шикарно) Все работает.

Только вот Period_Converter_MN так написан быть оффлайновым, видимо. Но, так как он конвертирует в длительные периоды, то нет особой надобности быть реалтаймовым. Но, если вы умеете и есть желание - сделайте и из него реалтаймовый индюк, как и Period_Converter_Opt_[i].ex4 (к слову, можно исходник Period_Converter_Opt_[i].ex4? - учусь по исходникам). Я вот тут добавил в Period_Converter_MN кратность до 60 :-0 для маньяков. Отредактировал описание работы скрипта (в комментариях в коде скрипта сверху все подробно изложил).

Прикрепляю скрипт ниже) Спасибо за то, что помогаете. Рад всем кто откликнется помочь в написании советника. Вот скрипт во вложении:
Вложения:
Тип файла: mq4 Period_Converter_MN.mq4 (21.0 Кб, 4 просмотров)
Understanding вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.02.2016, 18:23   #4598 (permalink)
Активный участник
 
Аватар для innovision
 
Регистрация: 01.03.2012
Сообщений: 32
Репутация: 30
innovision
Сказал(а) спасибо: 6
Поблагодарили 29 раз(а) в 25 сообщениях
Поинты: 44
Сообщение от Understanding Посмотреть сообщение
все шикарно) Все работает.
ок)

Сообщение от Understanding Посмотреть сообщение
то нет особой надобности быть реалтаймовым
да, считаю что в этом нет смысла абсолютно

Сообщение от Understanding Посмотреть сообщение
можно исходник Period_Converter_Opt_[i].ex4?
там исходник не изменен.. все тоже..только переименован ..
+ при компиляции пришлось подправить включаемый файл (об этом писал когда вылаживал) который в архиве там же...

Фишка здесь в том что компил делал в 500-м билде.. и поэтому исходник Period_Converter_Opt_[i].mq4 ни в коем случае нельзя ложить рядом - терминал с текущей билдой может перекомпилировать по новой.. и работа в реал-тайм тут же окончится )))))
innovision вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Understanding (16.02.2016)
Старый 17.02.2016, 12:47   #4599 (permalink)
Почётный гражданин
 
Аватар для Yurkov
 
Регистрация: 19.01.2011
Сообщений: 642
Репутация: 359
Yurkov - Yurkov - Yurkov - Yurkov -
Сказал(а) спасибо: 163
Поблагодарили 356 раз(а) в 166 сообщениях
Поинты: 200
Необходимо запретить советнику торговлю в определенные часы. Подкиньте, пожалуйста, код.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Подписка на сигналы:
https://www.mql5.com/ru/signals/240803
Yurkov на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 17.02.2016, 13:44   #4600 (permalink)
 
Аватар для mobidik
 
Регистрация: 09.08.2012
Адрес: Ua_Khm
Сообщений: 1,647
Репутация: 8540
mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik mobidik
Сказал(а) спасибо: 633
Поблагодарили 8,536 раз(а) в 1,561 сообщениях
Поинты: 800
Сообщение от Yurkov Посмотреть сообщение
Необходимо запретить советнику торговлю в определенные часы. Подкиньте, пожалуйста, код.
Сделай по аналогии: http://forexsystemsru.com/1115986-post6750.html
mobidik на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 06:02. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO