-
Постов
2,279 -
Зарегистрирован
-
Посещение
Весь контент Zhunko
-
Кто-нибудь знает, как по потоку в библиотеке вычислить дескриптор окна графика МТ4, из которого была вызвана библиотека?
-
Консольное приложение RangSymbols.exe переписывает файл "symbols.sel", находящийся в папке с историей. Чтобы всё сработало надо: 1. Достать из архива файл "RangSymbols.exe". 2. Положить файл "RangSymbols.exe" в папку с историей: ...\MetaTrader 4.00\history\NameServer 3. Выгрузить МТ4. 4. Запустить приложение "RangSymbols.exe". 5. Запустить МТ4. //+--------------------------------------------------------------------------------------+ //| RangSymbols.cpp: определяет точку входа для консольного приложения. | //| Приложение предназначено для сортировки по алфавиту символов в файле "symbols.sel" | //|терминала МТ4. Таким образом символы выстраиваются по алфавиту в окне "Обзор рынка". | //| Copyright © 2009, Жунко Вадим (Zhunko) | //| e-mail: vadim@zhunko.ru 09.03.2010 - 10.03.2010 | //+--------------------------------------------------------------------------------------+ #include "stdafx.h" // Пространства имён. using namespace std; // Функция возвращает описание кода системной ошибки. string StringError(const DWORD dwErrCode); // Код системной ошибки. //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж // Точка входа для консольного приложения. void main(int argc, char *argv[], char *envp[]) {// Константы. const bool DEBUGGING = false; // Включение отладки. // Переменные. DWORD dwByte = 0; // Количество прочитанных байт. HANDLE hHandle = 0; // Файловый описатель. int i, j, k; // Переменные для счётчиков и циклов. int erError = 0; // Номер последней ошибки. int nMaxSymbols = 0; // Максимальное количество инструментов обзора рынка МТ4. int nSearched = 0; // Номер найденного символа. int nSizeSymb = 0; // Размер файла с инструметами обзора рынка МТ4. string sExclusion = ""; // Возврат строки с сообщением об ошибке. string sInfoTool = ""; // Строка для инициализации массива. stringstream ssExclusion; // Строка с сообщением об ошибке. // Структуры. struct InfoTools_ {char szTool[12]; char szInfo[116];} InfoTool; // Массивы. vector <InfoTools_> vitSymbolsListNew; // Массив с сортированным списком. vector <InfoTools_> vitSymbolsListOld; // Массив с несортированным списком. //xxxx Общие операци. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx if (DEBUGGING) cout << "==== START ====================================== RangSymbols ====================================== START ====" << endl; SetConsoleOutputCP(1251); // Меняем кодовую странуцу. Работает только со шрифтом "Lucida Console" в CMD. memset(InfoTool.szTool, '\0', 12); // Очищаем массив структуры. memset(InfoTool.szInfo, '\0', 116); // Очищаем массив структуры. // Читаем файл со всеми инструментами МТ4. if (DEBUGGING) cout << "Читаем файл \"symbols.sel\" с инструментами обзора рынка МТ4." << endl; SetLastError(0); // Сбрасываем ошибки. //xxxx Блок перехвата ошибок. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx try {//==== Общие операции. ================================================================================================================================================================================================== sInfoTool.assign(128, '\0'); // Инициализируем строку в 128 знаков. if ((hHandle = CreateFileA("symbols.sel", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { erError = GetLastError(); ssExclusion << endl << "Ошибка в приложении \"RangSymbols\"." << endl << "Не открыт файл \"symbols.sel\"" << endl << "Последняя ошибка: " << erError << endl << StringError(erError); cout << ssExclusion.str(); throw(ssExclusion.str()); } // Если файл открыт, сдвигаем файловый указатель в конец файла. Измеряем размер файла. if ((nSizeSymb = SetFilePointer(hHandle, 0, NULL, FILE_END)) < 0) { erError = GetLastError(); ssExclusion << endl << "Ошибка в приложении \"RangSymbols\"." << endl << "Не смещён файловый указатель в конец файла \"symbols.sel\"" << endl << "Последняя ошибка: " << erError << endl << StringError(erError); cout << ssExclusion.str(); throw(ssExclusion.str()); } else if (DEBUGGING) cout << "Размер файла \"symbols.sel\": " << nSizeSymb << " байт." << endl; // Сдвигаем файловый указатель в начало списка инструментов. if (SetFilePointer(hHandle, 4, NULL, FILE_BEGIN) != 4) { erError = GetLastError(); ssExclusion << endl << "Ошибка в приложении \"RangSymbols\"." << endl << "Не смещён файловый указатель на первый инструмент файла \"symbols.sel\"" << endl << "Последняя ошибка: " << erError << endl << StringError(erError); cout << ssExclusion.str(); throw(ssExclusion.str()); } nMaxSymbols = (nSizeSymb - 4) / 128; // Определяем количество инструментов, зарегистрированных в файле. if (DEBUGGING) cout << "В файле \"symbols.sel\" зарегистрировано " << nMaxSymbols << " инструментов." << endl; // Изменяем размер массива с сортированными и несортированными символами. vitSymbolsListOld.resize(nMaxSymbols); vitSymbolsListNew.resize(nMaxSymbols); // Считываем символы из файла. if (DEBUGGING) cout << "+----------------+" << endl << "| ИНСТРУМЕНТЫ |" << endl << "+---+------------+" << endl << "| № | TOOLS |" << endl << "+---+------------+" << endl; for (i = 0; i < nMaxSymbols; i++) {// Читаем название инструмента. if (!ReadFile(hHandle, &vitSymbolsListOld[i], 128, &dwByte, NULL) || dwByte != 128) { erError = GetLastError(); ssExclusion << endl << "Ошибка в приложении \"RangSymbols\"." << endl << "Не прочитано имя инструмента из файла \"symbols.sel\"" << endl << "Последняя ошибка: " << erError << endl << StringError(erError); cout << ssExclusion.str(); throw(ssExclusion.str()); } if (DEBUGGING) cout << "|" << setw(3) << i << "|" << setw(12) << vitSymbolsListOld[i].szTool << "|" << endl; } if (DEBUGGING) cout << "+---+------------+" << endl << endl; // Сортировка символов. for (i = 0; i < nMaxSymbols; i++) { if (DEBUGGING) cout << "+---------------------------------------------+" << endl << "| СОРТИРОВКА ИНСТРУМЕНТОВ |" << endl << "+---+------------+---+---+------------+---+---+" << endl << "| № | NEW |smb| № | OLD |smb|Ltr|" << endl << "+---+------------+---+---+------------+---+---+" << endl; // Ищем непустой инструмент для начала поиска. vitSymbolsListNew[i] = vitSymbolsListOld[0]; for (j = 0, k = 0, nSearched = 0; j < (nMaxSymbols - i); j++) {// Если символ имеет больший номер. if (DEBUGGING) cout << "|" << setw(3) << i << "|" << setw(12) << vitSymbolsListNew[i].szTool << "|" << setw(3) << vitSymbolsListNew[i].szTool[k] << "|" << setw(3) << j << "|" << setw(12) << vitSymbolsListOld[j].szTool << "|" << setw(3) << vitSymbolsListOld[j].szTool[k] << "|" << setw(3) << k << "|" << endl; if (!strcmp(vitSymbolsListNew[i].szTool, vitSymbolsListOld[j].szTool)) { k = 0; // Сбрасываем счётчик. continue; // Пропускаем итерацию, если одинаковые инструменты. } if (vitSymbolsListNew[i].szTool[k] > vitSymbolsListOld[j].szTool[k]) { vitSymbolsListNew[i] = vitSymbolsListOld[j]; // Берём наименьший символ. nSearched = j; // Номер найденного инструмента. } // Если символы одинаковые, переходим к анализу следующего символа в слове. if (vitSymbolsListNew[i].szTool[k] == vitSymbolsListOld[j].szTool[k]) { k++; // Увеличиваем счётчик букв в слове. j--; // Уменьшаем счётчик инструментов, чтобы вернуться к предыдущему. } else k = 0; // Обнуляем счётчик букв в слове,если серия одинаковых символов прошла. } vitSymbolsListOld.erase(vitSymbolsListOld.begin() + nSearched); // Удаляем ячейку с найденным инструментом. }/**/ if (DEBUGGING) cout << "+---+------------+---+---+------------+---+---+" << endl << endl; // Сдвигаем файловый указатель в начало списка инструментов. if (SetFilePointer(hHandle, 4, NULL, FILE_BEGIN) != 4) { erError = GetLastError(); ssExclusion << endl << "Ошибка в приложении \"RangSymbols\"." << endl << "Не смещён файловый указатель на первый инструмент файла \"symbols.sel\"" << endl << "Последняя ошибка: " << erError << endl << StringError(erError); cout << ssExclusion.str(); throw(ssExclusion.str()); } // Записываем новый список в файл. if (!WriteFile(hHandle, &vitSymbolsListNew[0], 128 * nMaxSymbols, &dwByte, NULL) || dwByte != DWORD(128 * nMaxSymbols)) { erError = GetLastError(); ssExclusion << endl << "Ошибка в приложении \"RangSymbols\"." << endl << "Файл \"symbols.sel\" не записан." << endl << "Последняя ошибка: " << erError << endl << StringError(erError) << endl; cout << ssExclusion.str(); throw(ssExclusion.str()); } else if (DEBUGGING) cout << "Файл \"symbols.sel\" записан с размером " << dwByte << " байт." << endl; // Закрываем файл. if (!CloseHandle(hHandle)) { erError = GetLastError(); ssExclusion << endl << "Ошибка в приложении \"RangSymbols\"." << endl << "Не закрыт файл \"symbols.sel\"" << endl << "Последняя ошибка: " << erError << endl << StringError(erError); cout << ssExclusion.str(); throw(ssExclusion.str()); } } //xxxx Контроль ошибок. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx catch(string sExclusion) { MessageBoxA(NULL, sExclusion.c_str(), "RangSymbols", MB_OK|MB_ICONSTOP|MB_DEFBUTTON1|MB_TASKMODAL); if (DEBUGGING) cout << "==== END ======================================== RangSymbols ======================================== END ====" << endl; #ifdef _DEBUG // В режиме отладки останавливаем выполнение программы для контроля ошибок. _getch(); #endif return; } catch(...) { MessageBoxA(NULL, "Неизвестная ошибка.", "RangSymbols", MB_OK|MB_ICONSTOP|MB_DEFBUTTON1|MB_TASKMODAL); if (DEBUGGING) cout << "==== END ======================================== RangSymbols ======================================== END ====" << endl; #ifdef _DEBUG // В режиме отладки останавливаем выполнение программы для контроля ошибок. _getch(); #endif return; } if (DEBUGGING) cout << "==== END ======================================== RangSymbols ======================================== END ====" << endl; #ifdef _DEBUG // В режиме отладки останавливаем выполнение программы для контроля ошибок. _getch(); #endif //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx } //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж // Функция возвращает описание кода системной ошибки. string StringError(const DWORD dwErrCode) // Код системной ошибки. { char szBuffer[MAX_PATH] = {'\0'}; // Буфер для приёма строки с описанием ошибки. FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, 0, dwErrCode, 0, szBuffer, MAX_PATH, 0); return(szBuffer); } //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж Приложение: RangSymbols.exe.rar Проект: RangSymbols.rar
-
Часть 3. Сила тренда. Одним из достоинств и возможностей спектрального анализа является точное измерение СИЛЫ ТРЕНДА в любой точке рынка. Если принять за силу тренда наклон линии тренда, то применить этот метод практически невозможно из-за сложной конфигурации тренда. Не ясно где и к каким барам приложить линию, и какой длины должна быть эта линия для измерения наклона. На рисунке изображены четыре трендовых линии разной длины, приложенных к разным участкам тренда. Какую линию считать истинной? Понятно, что при обычном подходе ответить на этот вопрос невозможно. Можно предложить следующий подход для измерения силы тренда: 1. Измерять силу тренда тангенсом угла наклона к горизонтальной линии. 2. Применить этот метод к каждой спектральной линии. 3. Для каждой спектральной линии применять базу (катет) расчёта тангенса в частях периода фильтрации. 4. Часть периода измерения для всех линий должна быть одинакова, например, ¼ периода. 5. Применить спектральный синтез ко всем измеренным спектральным линиям. На рисунке изображено измерение наклона одной спектральной линии на базе 4/10 периода. Затем, необходимо просуммировать полученные значения в точке пересечения Катета Y и Гипотенузы по каждой спектральной линии. В результате получим гистограммы, как на последнем рисунке слева вверху. С небольшой математической обработкой на гистограммах отображены: – на верхней гистограмме динамика тренда рассчитанная нарастающим итогом по каждой спектральной линии отдельно; – на нижней гистограммы динамика тренда рассчитанная убывающим итогом по каждой спектральной линии отдельно. Таким образом, имеем информацию о точках входа (верхняя гистограмма) и генеральном направлении тренда (нижняя гистограмма). Входить вниз на продажу надо, когда верхняя гистограмма вывернута от красного цвета (стрелки вверх) до фиолетового цвета (стрелки вниз), а нижняя гистограмма вся внизу (стрелки вниз). На рисунке почти идеальная ситуация для входа вниз (продажа). Для входа вверх на покупку условия соответственно инвертируются. В таблице в правом верхнем углу перечислены периоды спектральных линий текущего графика приведённых к периоду М1. Это помогает собрать картину всего рынка из разных таймфреймов, используя принцип непрерывности следования периодов (без пропусков). Для торговли в ручном режиме это обычно не требуется. Гистограммы силы тренда это, если сказать другими словами, взгляд с правого торца графика. Т.е. поперечный разрез рынка. Также, можно посмотреть историю силы тренда на каждом баре с помощью осциллирующей линии. На рисунке отображена сила тренда, посчитанная нарастающим итогом в абсолютном виде. На рисунке отображена сила тренда, посчитанная убывающим итогом в абсолютном виде. На рисунке отображена сила тренда, посчитанная нарастающим итогом в относительном виде. На рисунке отображена сила тренда, посчитанная убывающим итогом в относительном виде. Спектральный анализ рынка.rar
-
Спектральный анализ рынка. Введение к техническому анализу Часть 2. Селективность фильтров Для понимания физических процессов надо договориться о терминах и предмете исследования. В радиотехнике основным предметом исследований является частота. Её измеряют в Герцах. Это количество колебаний в секунду. Для рынка, где процессы протекают очень медленно частота как предмет исследования не подходит. Слишком низкие частоты. Неудобна запись таких частот числами с большим отрицательным порядком. Альтернативой может послужить период как величина обратно пропорциональная частоте: T = 1 / F, где T – период, F – частота. В любом торговом терминале есть фильтры низкой частоты: SMA - простое скользящее среднее; EMA - экспоненциальное скользящее среднее; SMMA - сглаженное скользящее среднее; LWMA - линейно-взвешенное скользящее среднее. Эти фильтры - низкодобротные, с очень невысокой селективностью - не пригодны для выделения множества тенденций рынка. А так же, по этой причине не пригодны все осцилляторы, построенные на базе этих фильтров. Всем известные осцилляторы (MACD, Stochastic, RSI) в своей основе представляют полосовые фильтры. Полосовой фильтр помогает выделить конкретные частоты или периоды рынка. Чем уже полоса пропускания фильтра, тем выше селективность, и тем меньше лишних тенденций (частот) попадает в полосу пропускания фильтра. Сравним на конкретных примерах плавность и периодичность линий разных методов вычислений полосовых фильтров. Для удобства визуального сравнения настроим все фильтры с одинаковой и с самой узкой полосой на одном графике. Минимальный период среза фильтра равен 20 (частота максимальная), максимальный период среза фильтра равен 21 (частота минимальная). Это самая узкая полоса в один период доступна в каждом терминале. Отобразим все фильтры на одном графике: Фильтры на графике расположены в порядке возрастания селективности (узости полосы пропускания). Чем ближе к фиолетовому цвету, тем выше селективность и, как следствие, более выраженная периодичность и равномерность амплитуды. Отображённые на графике фильтры. 1. SMA Простое скользящее среднее. 2. EMA Экспоненциальное скользящее среднее. 3. SMMA Сглаженное скользящее среднее. 4. LWMA Линейно-взвешенное скользящее среднее. 5. BW2 Фильтр Баттерворта 2-го порядка. 6. BS2 Фильтр Бесселя 2-го порядка. 7. CH2 Фильтр Чебышёва 2-го порядка. 8. WDCT1 Оконное разложение в базисе тригонометрической функции 1-го порядка. 9. WDCT2 Оконное разложение в базисе тригонометрической функции 2-го порядка. 10. WDCT4 Оконное разложение в базисе тригонометрической функции 4-го порядка. 11. WDCT8 Оконное разложение в базисе тригонометрической функции 8-го порядка. 12. WDCT16 Оконное разложение в базисе тригонометрической функции 16-го порядка. 13. WDCT32 Оконное разложение в базисе тригонометрической функции 32-го порядка. 14. WDCT64 Оконное разложение в базисе тригонометрической функции 64-го порядка. Разделим фильтры на три группы. 1. Стандартные фильтры торговых терминалов. 1.1. SMA Простое скользящее среднее. 1.2. EMA Экспоненциальное скользящее среднее. 1.3. SMMA Сглаженное скользящее среднее. 1.4. LWMA Линейно-взвешенное скользящее среднее. 2. Электротехнические фильтры. 2.1. BW2 Фильтр Баттерворта 2-го порядка. 2.2. BS2 Фильтр Бесселя 2-го порядка. 2.3. CH2 Фильтр Чебышёва 2-го порядка. 3. Фильтры на базе оконного разложения. 3.1. WDCT1 Оконное разложение в базисе тригонометрической функции 1-го порядка. 3.2. WDCT2 Оконное разложение в базисе тригонометрической функции 2-го порядка. 3.3. WDCT4 Оконное разложение в базисе тригонометрической функции 4-го порядка. 3.4. WDCT8 Оконное разложение в базисе тригонометрической функции 8-го порядка. 3.5. WDCT16 Оконное разложение в базисе тригонометрической функции 16-го порядка. 3.6. WDCT32 Оконное разложение в базисе тригонометрической функции 32-го порядка. 3.7. WDCT64 Оконное разложение в базисе тригонометрической функции 64-го порядка. Отобразим фильтры по группам на графике. Можно видеть по сглаженности и периодичности, что в первой группе фильтр SMA (простое скользящее среднее) имеет самую худшую селективность, а LWMA (линейно-взвешенное скользящее среднее) имеет самую высокую селективность в этой группе. Во второй группе, самую высокую селективность показывает CH2 (фильтр Чебышева 2-го порядка). Надо сказать, что из-за особенностей цифровой фильтрации повышение порядка фильтров Баттерворта, Бесселя и Чебышева не приведёт к увеличению селективности этих фильтров, как это могло бы произойти в реальных аналоговых схемах в радиотехнике. Но селективность цифрового фильтра значительно выше подобного аналогового фильтра того же порядка. Третья группа фильтров, строго говоря, к фильтрам отношения не имеет. Здесь применены особенности оконного преобразования. Как было обещано в первой части, оконное преобразование показывает удачное соединение двух разных подходов к фильтрации сигналов. Оконное преобразование совмещает самые лучшие характеристики преобразования Фурье и селективной фильтрации. Форма кривой оконного преобразования 1-го порядка (WDCT1) примерно соответствует форме кривой фильтра Чебышева 2-го порядка (CH2). Стабильность периода и амплитуды кривой оконного преобразования более 2-го порядка даёт возможность высокоточного прогнозирования цены. Это возможно, если разложить цену на несколько таких кривых по определённому закону. Этой теме будет посвящена отдельная часть статьи. Проверено
-
Ну , это лишь ваше личное и суб'ективное представление и вовсе не обязано соответсвовать действительности. Уверяю, что слушащему вас ценить в данном случае нечего. А вообще говорить (без обид, я тоже решил сказать, что думаю) , то что думаешь- это признак безответсвенного отношения вообще. Это всё тоже Ваши представления и фантазии о действительности. Они на столько же верны, как и мои. Карен, по Вашим постам заметил, что Вы любите льстить. Вас задела моя нелюбовь к этому?
-
.... Я знаю, что НЕсмотря людям в глаза очень соблазнительно и легко говорить все , что когда-то горячо обсуждали будучи школьниками. Вадим, а теперь представте, что вы со своей семьей стоите у входа в ваш дом и кто-то стоя перед вами , громко и жестекулируя говорит вам эти слова : "А Вы .... паразиты. Потому что ничего не производите. Вы вообще на планенте не нужны". На полном серьезе. Вы можете это сказать живым людям в лицо или просто стараетесь блеснуть остротой ? Мне лебезить ни к чему. Я свободен. Всегда говорю, что думаю. Это ценить надо. Только так узнаешь правду о себе. А когда льстят... Терпеть не могу. Будешь в полном неведении о себе. Кстати, я осознаю, что паразит. Стало быть, такого со мной не случиться.
-
Молодец!!! И что Вы произвели? В производстве участвует меньше 5% процентов трудоспособного населения. А Вы и журналисты паразиты. Потому что ничего не производите. Вы вообще на планенте не нужны. И не только Вы. Ещё разные там политики, военные, милиция (полиция), таможенники, все чиновники и многие другие паразиты живущие за счёт тех 5%. Только не надо говорить, что так устроенно. Можно устроить по всякому. Только так удобнее. Не надо ничего делать. Все при деле. Цирк... Игра... Зря Вы так огульно. Хороший журналист - это человек, который умеет работать с источниками, в т.ч. с людьми. И выдает емкую информацию, с качеством, стремящимся к объективности. На это человеку др.профессии потребуется как минимум больше времени. Другое дело, что, как и в любой сфере, немногие делаются хорошими специалистами. Интересный способ общения... Сначала охаить оппонента, а потом подтвердить сказанное оппонетом. Позволяете себе оскорбления (осознанно?). Это как минимум неадекватность. Есть еще шанс проявить ум и лучшую сторону воспитания. Всегда всё делаю осознанно. И всегда занимаю противоположную позицию. Чтобы уравновесить ситуацию. Где оскорбления? Выделите красным, пожалуйста. Не хватило мужества извиниться. Мне это глубоко неприятно, но все же. Красным: человек хамит, а потом просит показать ему, где именно он это сделал. Не давая себе труда даже обдумать свои собственные слова. Все с ним ясно. Извините, не знал, что Вы дама... Вы так настойчиво просите извинений не понятно за что. Вам неприятно осознавать паразитическую сущность своего существования? Привыкайте к этому. Это нормально. Человек ко всему привыкает.
-
Что касаемо журналиста Артёма Никитина, то понятно почему он обиделся. Я не причислил его к гениальным журналистам. Работать надо много и упорно, чтобы это случилось. Очень много лет. По статье видна неподготовленность журналиста. Ещё обратите внимание, как он реагирует на лесть. Ещё меня покоробило это: "Зарабатывать на Forex можно только после длительного обучения и практики на демосчете, - говорит основатель Академии Masterforex-V, известный под именем Вячеслав Васильевич. - Нужен минимум год, чтобы понять, как это все функционирует, и выработать собственную стратегию". Интересно, что ВВ об этом думает?... По сути это оскорбление. У Вас есть сомнения? Так развейти их. Поговорите с человеком, имя которого публикуете. Разве не в этом профессионализм журналиста. Где тут работа с источником и людьми? Правильно ребята тут говорили. Понахватался понемногу разного и статья готова. Почему кому-то не нравиться роль паразита? Мы почти все парзиты. Это такая форма существования в природе и в социуме. Но как было бы здорово без паразитов производителям? Прибыль в 20 раз больше. Кто бы не хотел так увеличить свою прибыль? За одно, производители получили бы право справедливо распределять свои средства.
-
Молодец!!! И что Вы произвели? В производстве участвует меньше 5% процентов трудоспособного населения. А Вы и журналисты паразиты. Потому что ничего не производите. Вы вообще на планенте не нужны. И не только Вы. Ещё разные там политики, военные, милиция (полиция), таможенники, все чиновники и многие другие паразиты живущие за счёт тех 5%. Только не надо говорить, что так устроенно. Можно устроить по всякому. Только так удобнее. Не надо ничего делать. Все при деле. Цирк... Игра... Зря Вы так огульно. Хороший журналист - это человек, который умеет работать с источниками, в т.ч. с людьми. И выдает емкую информацию, с качеством, стремящимся к объективности. На это человеку др.профессии потребуется как минимум больше времени. Другое дело, что, как и в любой сфере, немногие делаются хорошими специалистами. Интересный способ общения... Сначала охаить оппонента, а потом подтвердить сказанное оппонетом. Позволяете себе оскорбления (осознанно?). Это как минимум неадекватность. Есть еще шанс проявить ум и лучшую сторону воспитания. Всегда всё делаю осознанно. И всегда занимаю противоположную позицию. Чтобы уравновесить ситуацию. Где оскорбления? Выделите красным, пожалуйста.
-
Игра относится к природе самой жизни. Каждый человек играет постоянно и неосознанно. На работе роль журналиста, с родителями роль сына, с женщиной - любовника, за монитором с графиками - трейдера... Быть самим собой очень трудно. Кстати, профессия журналиста ещё более бесполезная, чем трейдера. Ничего не производит. Только гадит. Можно по пальцам пересчитать настоящих журналистов, которым есть чего сказать и, которые могут это сказать. Вообще, согласен, что спекуляция труд непроизводительный в обоих смыслах. Ликвидность на рынке обеспечивают не трейдеры, а брокеры. Ради неё они и появились. Именно по этому каждый брокер имеет полное законное право менять котировки по своему усмотрению. Считаю, что с человеком, который строит беседу на личных оскорблениях, говорить не о чем. Поэтому, если позволите, отвечать на Ваши комментарии я не буду. Это по-детски, как-то... Где личные оскорбления? Выделите красным, пожалуйста.
-
Вадим, я с тобой не только не спорю, но даже согласен на все 100%. Возникает два вопроса. 1. Это "светлое будущее", которое мы будем строить в себе и в "окружающей среде" возникнет КОГДА? Что делать до того как. Отказаться от всего? Так я не хочу чтобы моя жена и дочь голодали пока папа будет пребывать в нирване ... 2. Может быть лучше все таки, чтобы это самое будущее строили люди сытые (программа минимум), а не голодные и злые. Это питательная среда для очередных "революций". А вот этого то что сейчас называется СНГ-э-э-э наелось уже по самое не хочу . Помнишь диалог Руматы и Будаха, очень похоже, не находишь ... Жень, ты же историк! Революции, говорят, происходили не тогда, когда плохо народу (обычно ему в это время не до революций), а когда ему становиться хорошо, а хочется лучше и быстрее. А так, конечно, надо заниматься собой и своей семьёй. При этом государство становиться лишним. Мы уже на эту тему много раз спорили здесь.
-
Молодец!!! И что Вы произвели? В производстве участвует меньше 5% процентов трудоспособного населения. А Вы и журналисты паразиты. Потому что ничего не производите. Вы вообще на планенте не нужны. И не только Вы. Ещё разные там политики, военные, милиция (полиция), таможенники, все чиновники и многие другие паразиты живущие за счёт тех 5%. Только не надо говорить, что так устроенно. Можно устроить по всякому. Только так удобнее. Не надо ничего делать. Все при деле. Цирк... Игра... Зря Вы так огульно. Хороший журналист - это человек, который умеет работать с источниками, в т.ч. с людьми. И выдает емкую информацию, с качеством, стремящимся к объективности. На это человеку др.профессии потребуется как минимум больше времени. Другое дело, что, как и в любой сфере, немногие делаются хорошими специалистами. Интересный способ общения... Сначала охаить оппонента, а потом подтвердить сказанное оппонетом.
-
Игра относится к природе самой жизни. Каждый человек играет постоянно и неосознанно. На работе роль журналиста, с родителями роль сына, с женщиной - любовника, за монитором с графиками - трейдера... Быть самим собой очень трудно. Кстати, профессия журналиста ещё более бесполезная, чем трейдера. Ничего не производит. Только гадит. Можно по пальцам пересчитать настоящих журналистов, которым есть чего сказать и, которые могут это сказать. Вообще, согласен, что спекуляция труд непроизводительный в обоих смыслах. Ликвидность на рынке обеспечивают не трейдеры, а брокеры. Ради неё они и появились. Именно по этому каждый брокер имеет полное законное право менять котировки по своему усмотрению.
-
Игра - не игра... Вопрос отношения и терминологии. Профессия врача тоже игра. Например хирурга. Отрезал не там и не то - проиграл (посадили или уволили). Операция удачная - молодец, выиграл (зарплату получил). И профессия учителя игра. Выучил ученика. Он академиком стал. Почёт и уважение такому учителю (выиграл). Выучил уголовника и убийцу - позор (проиграл). Но зарплата одна и таже. Где-то слышал, что жизнь тоже игра.
-
Всё, что происходит с Броко давно описано здесь. Это давняя практика всех брокеров. Это нормально и практикуется во всём цивилизованном мире. Никто не хочет терять деньги. К этому надо быть готовым. Не пожалйте времени, пройдите по ссылке и получите максимум удовольствия. Года полтора назад там было всего 14 статей. В очень острой сатирической форме об этом всё написано. Раскрыты все нюансы и основы работы всех рынков. Вся поднаготная. Приведены примеры из жизни. Сейчас там значительно больше статей. Рекомендую начинать с конца. От сюда. Вообщем, читать обязательно каждому трейдеру. Чтобы грустно не было потом...
-
Сам не пользуюсь наработками Ганна. Но знаю одного реального трейдера, который управляет своим достаточно крупным счётом у американского брокера, основа его торговли именно наработки Ганна. Достаточно давно и успешно тогует.
-
Ещё раз МТ4 установите. Наверно, компилятора у Вас нет в папке МТ4.
-
Разработчики скрывают API МТ4.
-
Портреты удалил. У меня было согласие девчонок только на публикацию в моём альбоме.