суббота, 20 декабря 2008 г.
НайдиСвойДом.Com.UA - NaidiSvoiDom.Com.Ua
Мы поможем Вам купить, продать, снять, сдать в аренду любые объекты недвижимости, подобрать готовый проект дома, оформить интерьер, благоустроить участок.
Вы можете воспользоваться широкими возможностями поиска, таких как обычный поиск с заданным фильтром, а так же геопоиск, поиск объектов расположенных на карте.
Так же вы можете подписаться на рассылку объявлений, и отфильтрованые объявления будут приходить к вам на почту, или получать новые объявления по RSS-каналу.
Вы можете просто подать объявления, с фотографиями и расположением на карте, очень просто и эффективно.
НайдиСвойДом.Com.UA
среда, 3 декабря 2008 г.
Windows Aero на Windows Server 2008
1. Запускаем Server Manager
2. Выбираем пункт Feature
3. Нажимаем Add Feature
4. Выбираем и ставим галочку в Desktop Experience
5. Нажимаем Next
6. Перезагружаем компьютер
7. Выбираем в меню Start -> Administrative Tools -> Services
8. Находим службу Themes и включаем ее на автоматическую загрузку
9. Перезагружаем компьютер или запускаем ее сразу
10. На рабочем стале, щелкаем на правую кнопку мыши и выбираем Personalize
11. Выбираем пункт Theme
12. Выбираем тему Windows Vista
13. Правой кнопкой мыши щелкам по Computer на рабочем столе, выбираем Properties
14. Щелкаем по ссылке слева Advanced system setting
15. В пункте Performance, щелкаем по кнопке Settings
16. Там открывшемся окне Performance Option, выбираем Adjust for best appearance
вторник, 7 октября 2008 г.
Пример пейжинга(Paging) в SQL Server 2005
-- Add the parameters for the stored procedure here
@Page int,
@PageSize int
AS
SET NOCOUNT ON
;WITH PagedResult AS (SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RowNum, * FROM users)
SELECT * FROM PagedResult
WHERE RowNum BETWEEN
CASE WHEN @Page > 1 THEN (@PageSize * @Page) - @PageSize + 1
ELSE @Page END AND @PageSize * @Page
среда, 3 сентября 2008 г.
Социальный сервис по кулинарии "Мой Вкус"
"Мой Вкус" - это клуб людей, которые любят готовить.
Обменивайтесь рецептами, общайтесь с друзьями по вкусу, ведите свою личную кулинарную книгу, голосуйте, комментируйте…
Отличительной особенностью сервиса является уникальная технология подбора вкуса.
Теперь Вам совсем не обязательно находить что-то вкусненькое в каталоге рецептов или в кулинарных книгах своих друзей.
Сервис позаботится об этом сам. Удобно, не правда ли?
www.moyvkus.ru
воскресенье, 17 августа 2008 г.
Метро
Очень удобно, так как в больших городах множество машин, и вечные ужасные пробки.
Так, что множество пешеходов предпочитают передвигаться подземкой.
Киев, столица Украины
Схема Киевского метрополитена
Впечатляет?!!!!!!!!!
Нет?))))))
Москва, РФ
Схема Московской подземки
Уже поинтересней)))))))
Ну тогда смотрите дальше)))))))
Город-герой Нью-Йорк, США
Нью-йоркский андеграунд
Впечатляет не правда ли?!!!!, очень больше метро?!!!
Нет!!!!!!!!, не больше))))))
Лондон, Великая Британия
Метро Лондона
Действительно впечатляет, наверно что бы знать его все, нужно родиться и прожить в Лондоне 100 лет, кстати метро Лондона уже как раз около 100 лет, может даже и больше))))
Ну все эти прекрасные сооружения, гения человека, конечно очень трудны и долго строящаяся, но все же, есть еще 1 городе где в ширь рости не получиться, только или в верх или в глубину, да вот в глубину тоже не особо получиться))))))) Ведь там метро
Токио, Япония
Токийское метро
А кому этого мало, хочу еще показать карту на русском языке))))))
Вот это чудо, не правда ли?))))))))
Самое интересное что многое станции принадлежат частным компаниям, и по одному "жетончик" ты так просто не проедешь, придеться при в ходе на станцию покупать новый жетон, что бы ехать дальше, хотя можно и купить карту))))) и кататься, пока на ней не иссякнут деньги))))))
пятница, 16 мая 2008 г.
Миграция DotNetNuke с 3.x на 4.x
1. Сохраните web.config DotNetNuke 3.x
2. Замените файлы DotNetNuke 3.x на DotNetNuke 4.x (DotNetNuke 4.x вы должны взять installation package, а не upgrate package)
3. Сделайте следующие изменения в web.config
a) Установите значения:
<add key="AutoUpgrade" value="false" />
<add key="UseInstallWizard" value="false" />
б) Укажите строки соединения с БД:
<!-- More options exist above this section..... -->
<connectionStrings>
<!-- Connection String for SQL Server 2005 Express -->
<add name="SiteSqlServer" connectionString="Server=YourServer;Database=YourDatabase;uid=YourUser;pwd=YourPassword;" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<!-- Connection String for SQL Server 2005 Express - kept for backwards compatability - legacy modules -->
<add key="SiteSqlServer" value="Server=YourServer;Database=YourDatabase;uid=YourUser;pwd=YourPassword;" />
<!-- More settings exist below this line! -->
в) Введите с сохранённого DotNetNuke 3.x web.config(старого) или вставьте если такие поля отсутствуют
<add key="MachineValidationKey" value="ЗДЕСЬ ДОЛЖЕН БЫТЬ ValidationKey СО СТАРОГО WEB.CONFIG" />
<add key="MachineDecryptionKey" value="ЗДЕСЬ ДОЛЖЕН БЫТЬ DecryptionKey СО СТАРОГО WEB.CONFIG" />
<machineKey
validationKey="ЗДЕСЬ ДОЛЖЕН БЫТЬ ValidationKey СО СТАРОГО WEB.CONFIG"
decryptionKey="ЗДЕСЬ ДОЛЖЕН БЫТЬ DecryptionKey СО СТАРОГО WEB.CONFIG"
decryption="3DES"
validation="SHA1" />
Будь те внимательны, данные должны совпадать, а то могут возникнуть проблемы с авторизацией
г) Поменяйте версию ASP.NET c 1.1 на 2 в IIS
д) После этого перейдите на URL: http://[dnn]/install/install.aspx
е) После этого DotNetNuk можете переадресовать на underconstruction page, просто попробуйте перейти на default.aspx еще раз
четверг, 8 мая 2008 г.
SQL Server 2005 Оптимизация
Содержание
1. Индексы, что это и зачем они нужны
a) Кластерезированые индексы
b) Некластерезированые индексы
2. Статистика, что это и зачем она нужна
3. Инстументы оптимизации
a) SQL Server Profiler
b) Database Engine Tuning Advisor
Индекс
Подобно содержанию в книге, индекс в базе данных позволяет быстро искать конкретные сведения в таблице или индексированном представлении.
Индекс содержит ключи, построенные из одного или нескольких столбцов таблицы или представления, и указатели, которые сопоставляются с местом хранения заданных данных.
Создание хорошо спроектированных индексов для поддержки запросов обеспечивает значительное улучшение производительности запросов к базе данных и приложениям.
Индексы сокращают объем данных, которые необходимо считать, чтобы возвратить результирующий набор.
Индексы также обеспечивают уникальность строк таблицы, гарантируя целостность данных таблицы.
Сбалансированное дерево
Кластеризованный индекс
Кластеризованный
Кластеризованные индексы сортируют и хранят строки данных в таблицах или представлениях на основе их ключевых значений. Этими значениями являются столбцы, включенные в определение индекса. Существует только один кластеризованный индекс для каждой таблицы, потому что строки данных могут быть отсортированы только в единственном порядке.
Строки данных в таблице хранятся в порядке сортировки только в том случае, если таблица содержит кластеризованный индекс. Если у таблицы есть кластеризованный индекс, то таблица называется кластеризованной. Если у таблицы нет кластеризованного индекса, то строки данных хранятся в неупорядоченной структуре, которая называется кучей.
Некластеризованный индекс
Некластеризованный
Некластеризованные индексы имеют структуру, отдельную от строк данных. В некластеризованном индексе содержатся значения ключа некластеризованного индекса, и каждая запись значения ключа содержит указатель на строку данных, содержащую значение ключа.
Указатель из строки индекса в некластеризованном индексе, который указывает на строку данных, называется указателем строки. Структура указателя строки зависит от того, хранятся ли страницы данных в куче или в кластеризованной таблице. Для кучи указатель строки является указателем на строку. Для кластеризованной таблицы указатель строки данных является ключом кластеризованного индекса.
Статистика
Microsoft SQL Server 2005 собирает статистику по индексам и полям данных, хранимых в базе. Эта статистика используется оптимизатором запроса SQL Server при выборе оптимального плана исполнения запросов на выборку или обновление данных.
При создании индекса оптимизатор запросов автоматически сохраняет данные статистики о проиндексированых столбцах.
Вкачестве альтернативы можно вручную создавать и обновлять статистику с помощью инструкций Transact-SQL и хранимых процедур
Создание статистики - CREATE STATISTICS
Обновление статистики - sp_updatestats
Автостатистика – AUTO_UPDATE_STATISTICS
Просмотр статистики - sp_helpstats
SQL Server Profiler
Приложение SQL Server Profiler — это средство, позволяющее перехватывать события SQL Server 2005 с сервера. События сохраняются в файле трассировки для дальнейшего анализа или использования с целью повторения определенной серии шагов при диагностике проблемы. Приложение SQL Server Profiler используется для следующих действий:
1. Пошаговое выполнение проблемных запросов для поиска источника проблемы;
2. Выявление и диагностика медленно работающих запросов;
3. Перехват серии инструкций Transact-SQL, ведущих к проблеме. Сохраненную трассировку затем можно использовать для моделирования и диагностики проблемы на тестовом сервере;
4. Контроль производительности SQL Server для настройки рабочих нагрузок.
5. Анализ счётчиков производительности для диагностики проблем.
SQL Server Profiler также поддерживает аудит действий, выполняемых в экземплярах SQL Server. В ходе аудита ведётся запись действий, связанных с безопасностью, для дальнейшего просмотра администратором безопасности.
Database Engine Tuning Advisor
Помощник по настройке ядра СУБД - новое средство в службах Microsoft SQL Server 2005, позволяющий настраивать базы данных для повышения скорости обработки запросов. Помощник по настройке ядра СУБД выявляет, каким образом запросы обрабатываются в указанных пользователем базах данных, а затем выдает рекомендации по повышению скорости обработки запросов путем изменения структур физического проектирования, таких как индексы, индексированные представления и секции.
четверг, 6 марта 2008 г.
CSS in your life, краткое описание
CSS (англ. Cascading Style Sheets — каскадные таблицы стилей) — технология описания внешнего вида документа, написанного языком разметки. CSS используется преимущественно для оформления HTML- и XHTML-документов, но иногда и для других XML-структурированных документов
История, кратко
CSS — одна из широкого спектра технологий, одобренных консорциумом W3C и получивших общее название «стандарты Web».[1] В 90-х годах стала ясна необходимость стандартизировать Web, создать какие-то единые правила, по которым программисты и веб-дизайнеры проектировали бы сайты. Так появились языки HTML 4.01 и XHTML и стандарт CSS.
CSS1 - W3C принята 17 декабря 1996, откорректирована 11 января 1999
CSS2 - W3C принята 12 мая 1998. Построена на CSS1 с сохранением обратной совместимости.
CSS2.1 - W3C от 6 ноября 2006. Построена на CSS2, содержит исправления ошибок.
Параметры шрифтов. Возможности по заданию гарнитуры и размера шрифта, а также его стиля — обычного, курсивного или полужирного.
Цвета. Спецификация позволяет определять цвета текста, фона, рамок и других элементов страницы.
Атрибуты текста. Возможность задавать межсимвольный интервал, расстояние между словами и высоту строки (то есть межстрочные отступы)
Выравнивание для текста, изображений, таблиц и других элементов.
Свойства блоков, такие как высота, ширина, внутренние (padding) и внешние (margin) отступы и рамки. Так же в спецификацию входили ограниченные средства по позиционированию элементов, такие как float и clear.
И другое…
Наиболее полно поддерживающими стандарт CSS являются браузеры, работающие на Gecko (Mozilla Firefox и др.) и WebKit (Safari), а также браузер Opera. К сожалению, самый распространенный на данный момент браузер Internet Explorer 6 поддерживает CSS далеко не полностью. Вышедший спустя 7 лет предшественника Internet Explorer 7 хотя и значительно улучшил уровень поддержки CSS но всё ещё содержит значительное количество ошибок
ЗЛО
Самый не удачный браузер в мире, мое мнение и не только.
Это IE6
Кривая поддержка вообще всех стандартов W3C
Рейтинг браузеров, не мнение 1%
1. IE 6 - 39.5388%
2. IE 7 - 24.3206%
3. FireFox 2 - 16.4076%
4. Opera 9 - 14.2244%
5. Opera 8 - 1.8341%
6. FireFox - 1 1.0090%
Итого: IE6 + IE7 = 63.8% и FF2 + FF1.1 = 17.4%
Включение в HTML
Подключение CSS находящиеся в отдельном файле
<link rel="stylesheet" type="text/css" href="style.css">
<style type="text/css" media="all">@import "style.css";</style>
Непосредственно в HTML-документе
<style type="text/css"> body { color: red; } </style>
Непосредственно в элемент:
<p style="font-size: 21px; color: green;"> IE6 – это зло! </p>
Базовый синтаксис
2. Базовый синтаксис
Селектор { свойство1: значение; свойство2: значение; ... }
3. Селектор тегов
Тег { свойство1: значение; свойство2: значение; ... }
4. Классы
Тег.Имя класса { свойство1: значение; свойство2: значение; ... }
5. Идентификаторы
#Имя идентификатора { свойство1: значение; свойство2: значение; ... }
<div id=“Name_of_ID"> ...</div>
6. Дочерние селекторы
Селектор 1 > Селектор 2 { Описание правил стиля }
7. Селекторы атрибутов
[атрибут] { Описание правил стиля }Селектор[атрибут] { Описание правил стиля }
8. Псевдоклассы
Элемент:Псевдокласс { Описание правил стиля }
9. Группирование
Селектор 1, Селектор 2, ... Селектор N { Описание правил стиля }
Инструменты для разработки – IE
Сущиствует множество платных и без платных инструментов для тестирования и разработки стилей и внешнего вида веб-страницы
Для IE, был выпущено бесплатное дополнение от Microsoft под названием Internet Explorer Developer Toolbar, его можно скачать с сайта Microsoft и установить.
Инструменты для разработки - Firefox
Для FF, был выпущено бесплатное дополнение от Joe Hewitt и Parakey под названием Firebug, его можно загрузить с сайта http://www.getfirebug.com или с сайта Mozilla.
среда, 30 января 2008 г.
Интернет магазин
Благодаря комплексному подходу наш интернет магазин завоевал популярность среди покупателей – от бизнесмена до студента. Мы постоянно проводим мониторинг цен рынка за счет чего можем, предложить оптимальные условия покупки.
Содержание
Кольца
Мобильные телефоны
VIP-сувениры
Компьютеры и периферия
Электроника
Кольца
Мобильные телефоны
VIP-сувениры
Компьютеры и периферия
Электроника
вторник, 29 января 2008 г.
PowerShell, инструкции програмисту
Microsoft Windows PowerShell — это бесплатная оболочка командной строки и язык написания сценариев для операционных систем Windows. На данный момент доступна полная версия с подробным справочным руководством на русском языке. Отличительной чертой новой командной оболочки является ее ориентированность на среду Microsoft .NET Framework.
Установочный пакет локализованной версии Windows PowerShell 1.0 для ОС Windows XP
Скачать
Установочный пакет для Windows Vista
Скачать
Начнем, значит что из себя представляет PowerShell
Это попытка Microsoft создать достойный язык написания сценариев для Windows, который не уступал бы таким языкам сценариев, какие используются в Linux и Unix системах.
Очевидно, что PowerShell должен поддерживать самые модные и современные технологии Microsoft, такие как .Net Framework, и конечно же Windows Server 2008
Естественно они не забыли о домашних меньших братьях как Windows XP, его младшенькая сестричка Vista.
Теперь суть:
1. Подержать полностью все стандартные методы, которые возможны в консоле (командной строке)
2. Возможность программирования используя .Net Framework
3. И написать максимально простой язык, который будет понятен, не только программистам, а еще и системным администраторам, он должен включать в себя максимальную гибкость и быстроту работы с этим языком.
Основные структуры языка и синтаксис:
Cmdlet - называются команды PowerShell, которые можно использовать у них есть уже готовая функциональность, это функции, которые можно вызвать и исполнить.
Cmdlet можно так же написать и самому, используя шаблон Cmdlet и откомпилировав его в assambly и зарегистрировать эту assambly в GAC, и все ваш Cmdlet готов к использованию.
Синтаксис языка:
Для создание комментариев используется - #
#$str="Hello world"
Оглавление переменных
Для создания переменной используется $, хотя его можно и не использовать, но для удобства желательно это делать
Вот пример:
$str="Hello world"
Массивы, синтаксис очень похож на синтаксис C
$strArray="Hi, ", "how ", "are, ", "you"
$strArray[1]
И выводиться how
Логические сравнение: больше, меньше или равно
-eq Равно
-ne Не равно
-gt –ge Больше или больше и равно
-lt –le Меньше или меньше и равно
Логические оператор - Если
if (условие)
{
.....
}
elseif (условние)
{
.....
}
else
{
.....
}
Циклы, аналогичны C
while (1)
{
.....
}
for ($i = 0; $i –lt 5; $i++)
{
.....
}
foreach ($z in $i)
{
.....
}
Типы:
Четки типы здесь можно не использовать, хотя при желаннее все возможно
[string]$st = "Hi"
[int]$intType = 1
И уже при не совпадении типов, вылетает ошибка
Функции и процедуры:
Так же можно использовать отдельные функции и процедуры с параметрами и без, с возвратом значения и без.
без параметров и возврата значения
function MyFunction
{
.....
}
с параметрами и возвратом значения
function MyFunction($firstParam, [string]$secondOnlyStringParam)
{
$ret_value="Hello"
.....
return $ret_value
}
Это все может прочитать в руководстве, которое постановляет с дистрибутивом вместе с PowerShell, в документе Quick Reference
Аналогии, программирование с использованием .Net Framework:
Работы с COM-обьектами и .Net аssembly вы можите без проблем создавать обьекты классов либо использовать статические методы
Вот простенькие пример для работы с COM-обьектом Internet Explorer
$ie = New-Object -ComObject InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://jthotblog.blogspot.com/")
$ie.Quit()
Remove-Variable ie
Для работы с классами .Net сборок все аналогично
Использование статической функции
[System.Console]::WriteLine("Hello")
Создание нового обьекта класса и использование его метода
$sqlcmd = New-Object -TypeName System.Data.SqlClient.SqlCommand
$sqlcmd.CommandText="SELECT * FROM TABLE1"
Могут возникнуть проблемы с использованием стандартных сборок и своих так же, по этому их нужно подгрузить перед использованием
Для стандартных
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Build.Framework")
Для своих
[Reflection.Assembly]::LoadFile("c:\temp\MyAssembly.dll")
Запуск из .bat файла
Стандартный файл для хранения PowerShell скриптов это .ps1 файл
Для запуска файла с командной строки, можно указать полный путь к файлу либо запускать с текущей папки, там где лежит .bat файл.
powershell c:\myScript.ps1
или для текущей папки
powershell .\myScript.ps1
Но могут возникнуть проблемы с загрузкой таким методом, это проблема называться отстуствие цифровой подписи, для этого перед строкой в .bat файле, нужно написать еще 1 строку, которая разрешала бы запускать скрипты без цифровых подписей, либо если у вас есть сертификат, то вы можете подписать скрипт.
Для запуска скрипта без подписи можно использовать, вот такой Cmdlet
powershell Set-ExecutionPolicy RemoteSigned
Если вы собираетесь долго и много программировать на PowerShell, вы конечно можите использовать блокнот, но я бы вам советовал использовать бесплатную тулзовину, для написания скриптов и удобного управления ими, в этой тулзовене есть редактор скриптов, а в нем есть IntelliSense и в нем можно посмотреть полный список стандартных Cmdlet. А так же можно с помощью этой тулзовины можно удобно администрировать с используя PowerShell, это тулзовина называться PowerGUI
PowerGUI
понедельник, 28 января 2008 г.
Разработка сайтов
1. Разработка концепции сайта
2. Создание кликмоделей, что позволяет клиенту, на начале разработки видеть конечный результат
3. Непосредственная разработка
4. Покупка доменного имени и хостинга
5. Размещение сайта на сервере
6. Раскрутка (SEO)
7. Умеренная цена
Основные технологии, которые используются:
Microsoft ASP.NET 2
Microsoft SQL Server
CSS
JavaScript
DotNetNuke - Бесплатная CMS, с поддержкой множества функций
Контактная информация:
E-mail: jthotbox@gmail.com
Телефон: +380-67-718-51-58
воскресенье, 27 января 2008 г.
Открытые коды торговых советника для форекс - KingMinute
Разрабатывал я их давно, дают даже не плохой результат торговли. Они прошли обширное тестирование трейдерами.
Вероятность прибыльных сделок от 60%-80%
Но все же они иногда лажают, хотя если максимально хорошо настроить, есть вероятность, что будут давать прибыль.
Вот исходники кому интересно
Самая моя большая гордость это KingMinute
Действительно не плох, хотя не идеален
Советник KingMinute для MT4
Основные положение:
2006
Советник KingMinute был разработан для валютной пары EURUSD, для временных интервалов M1(рекомендовано) и M5 c встроенной функцией капитализации.
Есть функция отсылка e-mail, при запуски, выключении и постановки позиции
Что бы подключить эту функцию настройте работу MT4 с почтой.
Сервис->Настройки->вкладка Почта
Валюты которые возможное подходят для торговли этим советником, но не тестировались – GBPUSD, USDCHF, USDJPY
Свойства советника:
Lots – Начальный размер лота
TakeProfit – уровень выхода из рынка при прибили
StopLoss – уровень выхода из рынка при убытке
TrailingStop – Переход в без убыток, и заработок дополнительных пунктов
Podushka – Минимальное количество свободной маржи для увеличения количества лотов
UseH1Parabolic – Учитывание, часового параболика
ID_MagicNum – Индификатор, магическое число, нужно для того, если у вас в одном MT4, запущены несколько советников, они не будут путались где чей ордер.
KapitalFunc – Функция капитализации, автоматическое наращивание прибыли. Если
KatitalFunc равен false, тогда все лоты будут равны параметру Lots
Для корректной работы советников необходимо:
1. Скопировать файлы советников в папку Program files\MT4\experts и файл индикаторов в папку Program files\MT4\experts\indicators
2. К открывшемуся графику присоединить советник
3. И разрешить торговать советнику, нажав кнопку Разрешить советники
4. Все советник готов и уже торгует (мордочка должна улыбаться)
//| KingMinute.mq4 |
//| jthotbox@gmail.com |
//| |
//+-----------------------------------------------------------------------------------+
#property copyright "jthotbox@gmail.com © 2006" // +
#property link "http://jthotblog.blogspot.com/" // +
//------------------------------------------------------------------------------------+
// Использовать ли капитализацию, если "нет",-используем Lots
extern double Lots = 0.1; //
extern int TakeProfit = 20; // recomended no more than 20
extern int StopLoss = 45; // do not use s/l
extern int TrailingStop = 10;
extern double Podushka = 500;
//extern int CriticalMinus= 20;
extern bool UseH1Parabolic=true;
double slippage = 3; // Could be higher with some brokers
string nameEA = "KingMinute"; // To "easy read" which EA place an specific order
int Korelation = 10;
extern int ID_MagicNum=99919;
extern bool KapitalFunc = true;
double macdHistCurrent, macdHistPrevious, macdSignalCurrent, macdSignalPrevious;
double stochHistCurrent, stochHistPrevious, stochSignalCurrent, stochSignalPrevious;
double sarCurrent, sarPrevious, momCurrent, momPrevious,MA, MAprevious,sarCurrentH, sarPreviousH;
double realTP, realSL;
bool isBuying = false, isSelling = false, isClosing = false;
int cnt, ticket;
double DecreaseFactor = 3;
bool searchID=false;
int ts=10;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
SendMail("KingMinute","Alert: Work "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
SendMail("KingMinute","Alert: Exit "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
return(0);
}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
//---- select lot size
lot=NormalizeDouble(AccountFreeMargin()/(Podushka*Korelation),1);
//---- calcuulate number of losses orders without a break
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- return lot size
if(lot<0.1) lot=0.1;
if (KapitalFunc==false) lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
double lot;
// Check for invalid bars and takeprofit
if(Bars < 360) {
Print("Not enough bars for KingMinute");
return(0);
}
calculateIndicators(); // Calculate indicators' value
// Control open trades
int totalOrders = OrdersTotal();
int numPos = 0;
for(cnt=0; cnt
if(OrderSymbol() == Symbol() && OrderType() <= OP_SELL && OrderMagicNumber() == ID_MagicNum) { // only look for this symbol, and only orders from this EA
numPos++;
if(OrderType() == OP_BUY) { // Check for close signal for bought trade
if(isSelling || isClosing) {
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Violet); // Close bought trade
Print("Closing BUY order");
}
// if (CriticalMinus*Point<=OrderOpenPrice()-Ask) TrailingStop=MathRound(TrailingStop/2);
if(TrailingStop > 0) { // Check trailing stop
if(Bid-OrderOpenPrice() > TrailingStop*Point) {
if(OrderStopLoss() < (Bid - TrailingStop*Point)) {
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Blue);
Print("Modifying BUY order");
}
}
}
} else { // Check sold trade for close signal
if(isBuying || isClosing) {
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Violet);
Print("Closing SELL order");
}
// if (CriticalMinus*Point<=Bid-OrderOpenPrice()) TrailingStop=MathRound(TrailingStop/2);
if(TrailingStop > 0) { // Control trailing stop
if(OrderOpenPrice() - Ask > TrailingStop*Point) {
if(OrderStopLoss() == 0 || OrderStopLoss() > Ask + TrailingStop*Point) {
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Red);
Print("Modifying SELL order");
}
}
}
}
}
}
///-------------------------------------------------------
////////////////////Устанавливаем размер лота по состоянию депозита/////
///-------------------------------------------------------
// If there is no open trade for this pair and this EA
if(numPos < 1) {
if(AccountFreeMargin() < 1000*Lots) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
HideTestIndicators(true);
if (TimeYear(CurTime())<=2006 && TimeMonth(CurTime())<=8&& TimeDay(CurTime())<=22){ //kvota po date
//if (AccountNumber()==44448){
totalOrders = OrdersTotal();
if(totalOrders==0)
{
MakePosition();
}
else
{
for(cnt=0; cnt
OrderSelect(cnt, SELECT_BY_POS);
if(OrderMagicNumber()==ID_MagicNum)
searchID=true;
}
if (searchID==false){
MakePosition();
}
searchID=false;
}
}//kvota po date
//}//po accounty
}
return(0);
}
void calculateIndicators() { // Calculate indicators' value
macdHistCurrent = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_MAIN,0);
macdHistPrevious = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_MAIN,1);
macdSignalCurrent = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_SIGNAL,0);
macdSignalPrevious = iMACD(NULL,0,12,26,9,PRICE_OPEN,MODE_SIGNAL,1);
stochHistCurrent = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);
stochHistPrevious = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
stochSignalCurrent = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
stochSignalPrevious = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sarCurrent = iSAR(NULL,0,0.02,0.2,0); // Parabolic Sar Current
sarPrevious = iSAR(NULL,0,0.02,0.2,1); // Parabolic Sar Previuos
momCurrent = iMomentum(NULL,0,14,PRICE_OPEN,0); // Momentum Current
momPrevious = iMomentum(NULL,0,14,PRICE_OPEN,1); // Momentum Previous
sarCurrentH = iSAR(NULL,60,0.02,0.2,0);
sarPreviousH = iSAR(NULL,60,0.02,0.2,1);
// Check for BUY, SELL, and CLOSE signal
if (UseH1Parabolic){
isBuying = (sarCurrent<=High[0] && sarPrevious>sarCurrent&& sarPreviousH>sarCurrentH && momCurrent<100 && macdHistCurrent
isClosing = false;
}else{
isBuying = (sarCurrent<=High[0] && sarPrevious>sarCurrent&& momCurrent<100 && macdHistCurrent
isClosing = false;
}
}
void MakePosition(){
TrailingStop=ts;
if(isBuying && !isSelling && !isClosing) { // Check for BUY entry signal
if(StopLoss > 0)
realSL = Ask - StopLoss * Point;
if(TakeProfit > 0)
realTP = Ask + TakeProfit * Point;
ticket = OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Green); // Buy
SendMail("KingMinute","Alert: Opened long position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print("KingMinute - Opened long position");
if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail("KingMinute","OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
} else Print("Trading: Buying");
}
if(isSelling && !isBuying && !isClosing) { // Check for SELL entry signal
if(StopLoss > 0)
realSL = Bid + StopLoss * Point;
if(TakeProfit > 0)
realTP = Bid - TakeProfit * Point;
ticket = OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Red); // Sell
SendMail("KingMinute","Alert: Opened short position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print("KingMinute - Opened short position");
if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail("KingMinute","OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
} else Print("Trading: Selling");
}
}
//+------------------------------------------------------------------+
//| KingMinuteOrig.mq4 |
//| jthotbox@gmail.com |
//| http://jthotblog.blogspot.com/ |
//+-----------------------------------------------------------------------------------+
#property copyright "jthotbox@gmail.com © 2006" // +
#property link "http://jthotblog.blogspot.com/" // +
//------------------------------------------------------------------------------------+
// Использовать ли капитализацию, если "нет",-используем Lots
extern double Lots = 0.1; //
extern int TakeProfit = 20; // recomended no more than 20
extern int StopLoss = 45; // do not use s/l
extern int TrailingStop = 10;
extern double Podushka = 300;
//extern int CriticalMinus= 20;
//extern bool UseH1Parabolic=true;
double slippage = 3; // Could be higher with some brokers
string nameEA = "KingMinuteOriginal"; // To "easy read" which EA place an specific order
int Korelation = 10;
extern int ID_MagicNum=99919;
extern bool KapitalFunc = true;
double macdHistCurrent, macdHistPrevious, macdSignalCurrent, macdSignalPrevious;
double stochHistCurrent, stochHistPrevious, stochSignalCurrent, stochSignalPrevious;
double sarCurrent, sarPrevious, momCurrent, momPrevious,sarCurrentH, sarPreviousH;
double macdHistCurrentM5, macdHistPreviousM5, macdSignalCurrentM5, macdSignalPreviousM5;
double stochHistCurrentM5, stochHistPreviousM5, stochSignalCurrentM5, stochSignalPreviousM5;
double sarCurrentM5, sarPreviousM5, momCurrentM5, momPreviousM5;
double realTP, realSL;
bool isBuying1 = false, isSelling1 = false;
bool isBuying5 = false, isSelling5 = false;
bool isClosing = false;
int cnt, ticket;
double DecreaseFactor = 3;
bool searchID=false;
int ts=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
SendMail(nameEA,"Alert: Work "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
SendMail(nameEA,"Alert: Exit "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
return(0);
}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
//---- select lot size
lot=NormalizeDouble(AccountFreeMargin()/(Podushka*Korelation),1);
//---- calcuulate number of losses orders without a break
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- return lot size
if(lot<0.1) lot=0.1;
if (KapitalFunc==false) lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
double lot;
// Check for invalid bars and takeprofit
if(Bars < 360) {
Print("Not enough bars for KingMinute");
return(0);
}
calculateIndicators(); // Calculate indicators' value
// Control open trades
int totalOrders = OrdersTotal();
int numPos = 0;
for(cnt=0; cnt
if(OrderSymbol() == Symbol() && OrderType() <= OP_SELL && OrderMagicNumber() == ID_MagicNum) { // only look for this symbol, and only orders from this EA
numPos++;
if(OrderType() == OP_BUY) { // Check for close signal for bought trade
if(isSelling1||isSelling5|| isClosing)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
Print("Closing BUY order");
}
// if (CriticalMinus*Point<=OrderOpenPrice()-Ask) TrailingStop=MathRound(TrailingStop/2);
if(TrailingStop > 0) { // Check trailing stop
if(Bid-OrderOpenPrice() > TrailingStop*Point) {
if(OrderStopLoss() < (Bid - TrailingStop*Point)) {
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Blue);
Print("Modifying BUY order");
}
}
}
} else { // Check sold trade for close signal
if(isBuying1||isBuying5|| isClosing) {
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
Print("Closing SELL order");
}
// if (CriticalMinus*Point<=Bid-OrderOpenPrice()) TrailingStop=MathRound(TrailingStop/2);
if(TrailingStop > 0) { // Control trailing stop
if(OrderOpenPrice() - Ask > TrailingStop*Point) {
if(OrderStopLoss() == 0 || OrderStopLoss() > Ask + TrailingStop*Point) {
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Red);
Print("Modifying SELL order");
}
}
}
}
}
}
///-------------------------------------------------------
////////////////////Устанавливаем размер лота по состоянию депозита/////
///-------------------------------------------------------
// If there is no open trade for this pair and this EA
if(numPos < 1) {
if(AccountFreeMargin() < 1000*Lots) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
HideTestIndicators(true);
//if (TimeYear(CurTime())<=2006 && TimeMonth(CurTime())<=8&& TimeDay(CurTime())<=25){ //kvota po date
//if (AccountNumber()==44448){
//if (TimeDay(CurTime())<=19){
totalOrders = OrdersTotal();
if(totalOrders==0)
{
MakePosition();
ts=0;
}
else
{
for(cnt=0; cnt
OrderSelect(cnt, SELECT_BY_POS);
if(OrderMagicNumber()==ID_MagicNum)
searchID=true;
}
if (searchID==false){
MakePosition();
ts=0;
}
searchID=false;
}
}
// }//kvota po date
//}//po accounty
//}
return(0);
}
void calculateIndicators() { // Calculate indicators' value
macdHistCurrent = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_MAIN,0);
macdHistPrevious = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_MAIN,1);
macdSignalCurrent = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_SIGNAL,0);
macdSignalPrevious = iMACD(NULL,1,12,26,9,PRICE_OPEN,MODE_SIGNAL,1);
stochHistCurrent = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_MAIN,0);
stochHistPrevious = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_MAIN,1);
stochSignalCurrent = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
stochSignalPrevious = iStochastic(NULL,1,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sarCurrent = iSAR(NULL,1,0.02,0.2,0); // Parabolic Sar Current
sarPrevious = iSAR(NULL,1,0.02,0.2,1); // Parabolic Sar Previuos
momCurrent = iMomentum(NULL,1,14,PRICE_OPEN,0); // Momentum Current
momPrevious = iMomentum(NULL,1,14,PRICE_OPEN,1); // Momentum Previous
sarCurrentH = iSAR(NULL,60,0.02,0.2,0);
sarPreviousH = iSAR(NULL,60,0.02,0.2,1);
macdHistCurrentM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_MAIN,0);
macdHistPreviousM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_MAIN,1);
macdSignalCurrentM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_SIGNAL,0);
macdSignalPreviousM5 = iMACD(NULL,5,12,26,9,PRICE_OPEN,MODE_SIGNAL,1);
stochHistCurrentM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_MAIN,0);
stochHistPreviousM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_MAIN,1);
stochSignalCurrentM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
stochSignalPreviousM5 = iStochastic(NULL,5,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
sarCurrentM5 = iSAR(NULL,5,0.02,0.2,0); // Parabolic Sar Current
sarPreviousM5 = iSAR(NULL,5,0.02,0.2,1); // Parabolic Sar Previuos
momCurrentM5 = iMomentum(NULL,5,14,PRICE_OPEN,0); // Momentum Current
momPreviousM5 = iMomentum(NULL,5,14,PRICE_OPEN,1); // Momentum Previous
// Check for BUY, SELL, and CLOSE signal
isBuying1 = (sarCurrent<=High[0] && sarPrevious>sarCurrent&& sarPreviousH>sarCurrentH && momCurrent<100 && macdHistCurrent
isBuying5 = (sarCurrentM5<=iHigh(NULL,5,0) && sarPreviousM5>sarCurrentM5&&sarPreviousH>sarCurrentH&& momCurrentM5<100 && macdHistCurrentM5
isClosing = false;
}
void MakePosition(){
calculateIndicators();
if((isBuying1 && !isSelling1) || (isBuying5 && !isSelling5) && !isClosing) { // Check for BUY entry signal
if(isBuying1)ts=1; if(isBuying5) ts=5;
if(StopLoss > 0)
realSL = Ask - StopLoss * Point;
if(TakeProfit > 0)
realTP = Ask + TakeProfit * Point;
ticket = OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Green); // Buy
SendMail(nameEA,"Alert: Opened long position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print(nameEA+" - Opened long position");
if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail(nameEA,"OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
} else Print("Trading: Buying");
}
if((isSelling1 && !isBuying1) || (isSelling5 && !isBuying5) && !isClosing) { // Check for SELL entry signal
if(isSelling1)ts=1; if(isSelling5) ts=5;
if(StopLoss > 0)
realSL = Bid + StopLoss * Point;
if(TakeProfit > 0)
realTP = Bid - TakeProfit * Point;
ticket = OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,slippage,realSL,realTP,nameEA+" - Magic: "+ID_MagicNum+" ",ID_MagicNum,0,Red); // Sell
SendMail(nameEA,"Alert: Opened short position "+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
Print(nameEA+" - Opened short position");
if(ticket < 0) {
Print("OrderSend (" + nameEA + ") failed with error #" + GetLastError());
SendMail(nameEA,"OrderSend (" + nameEA + ") failed with error #" + GetLastError()+"@"+TimeDay(CurTime())+"/"+TimeMonth(CurTime())+" ID_MagicNum - "+ID_MagicNum);
} else Print("Trading: Selling");
}
}
//+------------------------------------------------------------------+
Если у кого то возникли вопросы по поводу использования советников - пишите комментарии.
Если у кого то возникло желание, что бы я для вас разработал программу советника под вашу торговую стратегию, пишите мне на email: jthotbox@gmail.com
воскресенье, 20 января 2008 г.
Реалиальность бытия и любви, мой взгляд
Хочу рассказать свою позицию по поводу отношений и любви в частности!
Сначала хочу напомнить закон Дарвина и природы: «выживают сильнейшие!»
Что я этим хотел сказать, а то что красивая здоровая девушка, будет искать себе красивого здорового парня, каждый красивый и здоровый парень будет искать себе такую же девушка, для продления своего рода, такого же здорового и красивого, как и их родители.
Но у нас остались не красивые и не здоровые, что же им делать в этом мире красивых людей. Все просто – они тоже хотят здорового и красивого партнера, но тут получается не стыковка, красивый и здоровый партнер не хочет не красивую и не здоровую вторую половинку.
Я не хочу совсем исключить вероятность, она есть, когда у людей возникает любов, с детского садика или при каком то трагическом событие и возникает чувство благодарности и на базе чувства благодарности возникает любовь.
Это было не большое отступление, хочу вернуться снова к некрасивым.
Что же делать некрасивой девушке или парню?
Как всем известно уже давно есть ответ, на этот вопрос.
Можно просто найти себе подобную половинку и влюбиться в нее до безумия, жениться на ней и родить кучу прекрасных детей.
Но не все не красивые хотят, быть с такими же не красивыми вторыми половинками.
По этому на фоне общего своего жалкого вида, они пытаются выделиться другими своими качествами и возможностями, что бы просто заинтересовать противоположный пол.
Если смотреть правде в глаза, то все подтвердят поговорку: «Встречают по одежке, провожают по уму».
Что я хотел этим сказать, а все просто, после того как вы заинтересовать противоположный пол и какое то время с ним или с ней в близких отношения, у человеческого мозга есть феноменальная функция – адаптивная, т.е. через некоторое время недостатки одного из них перестают быть видимыми, и ты уже не ощущаешь так резко ее или его физические или внешние недостатки.
Значит вопрос состоит в заинтересовании противоположного пола.
Сейчас речь пойдет о девушках, для начала немного статистики и фактов.
59 процентов женщин выходит за муж из-за денег.
Часть читателей это просто возмутит, а что делать, это правда.
Плохая экономическая ситуация в стране, никакой преспективы или просто все общая тупость, дает о себе знать.
Вернемся обратно к теме
Если девушка красивая и умная, она понимает что ей нужно, либо работать и встречаться красавчиком, либо найти красавчика – миллионера на белом мерседе и можно не работать и заниматься только воспитанием детей.
Ну конечно же все происходит как в природе, т.е. по пути меньшого сопротивления, т.е. найти красавчика – миллионера.
Но тут в возрасте к 25 годам наступает прозрение, что миллионеры ей попадались и красавчики ей попадались, а вот в комбинации одного и другого труднее или вобще нет. Потому что их очень мало или их давно уже расхватали, другие болие шустрые или действительно достойные девушки.
Так как на девушку нашло прозрение, она понимает что работать всю жизнь и не иметь возможности выехать в Египет на собственном вертолете, когда ей захочется, ее совсем не привлекает, и она просто выбирает материальную сторону.
Короче говоря находить себе миллионера, и начинает с ним встречаться. Бывает очень часто, что любов. Ведь бывает! :)
Она конечно не могла даже ожидать, что такой уродец может быть просто идеальным мужчиной о котором она всегда мечтала, и любов вот она!
Но есть и другая категория, если парень осознает, то что эта красотка с ним из-за денег, он рано или позно ее выбросит, или девушка окажется просто стервой и бросит его забрав, половину его денег.
Ну хватит о девушках, тепер о парнях.
Парни есть тоже разные хорошие и плохи, но это не главное, а главное, что есть красавчики и не красавчики.
Откуда бедная девушка, может знать что этот урод может быть идеальным мужчиной для нее, ведь у нее есть выбор найти себе парня-милашку, он же наверняка будет хорошим, у него на лице это написано, он будет ее любить и за ней убиваться, не смотря на то что, кучи других девушек перед ним стелятся.
Ну ведь девушка верит, что он хорош и это главное.
Рассмотрим ситуацию с уродом, у урода было мало девушек или их вобще не было. Это значит, что он либо не знает, что нужно делать с девушкой и как за ней ухаживать, либо будет мыслить трезво осознавая то что, у него и так их немного было и будет стараться беречь ее, хотя он может оказаться идиотом либо придурком и не делать этого.
Это был мой взгляд на просто отношения, не учитывая материальный аспект.
А теперь о деньгах, может мне кто обьяснить как может быть такое, что молодой красивый парень будет «любить» тетку или бабку которая ему, в лучшем случае, в матери годиться, это не природно, но тут можно провести аналогии со сказанным выше по тексту про девушек и миллионера, суть таже.
Вывод отсюда, если человеки не схожи по внешности и у них не было в жизни каких то катастрофических событий или они не знакомы с детства, все будет происходить по одному и тому же сюжету, что я описал выше.
Не хочу ни у кого вызвать ярости, просто это реальность, такой какой ее вижу, конечно на мое восприятие повлияла моя внешность, к красавчика или миллионерам меня нельзя приписать, но все же, я есть какой я есть!
Всем спасибо, жду критики, очень интересно какие у вас есть взгляды на любов и реальность!
Особая благодарность моей бывшой девушке, которая показала мне, что такое одиночество и что такое быть не мертвым и не живым, если бы не она, я бы не заметил этого всего.
Посвящено моему хорошему другу.
Я надеюсь ты сделаешь правильные выводы, прочитав эту статью!
P.S. Если у кого то возникли какие то сомнения о идее этой статьи, то найдите статейку про переписку американки с финансистами из вал стрит :)