Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2012.09.03 13:28
Библиотеки

b-PSI@Base - библиотека для MetaTrader 4

Просмотров:
3564
Рейтинг:
голосов: 7
Base.zip (115.34 KB)
\MQL4\Include\

Всё начиналось с создания библиотеки торговых опреаций, а закончилось созданием програмной среды (ПС) для конструирования советников для MT4. А основу этой ПС и объединяющую роль всех составных частей и играет данная библиотека.

Библиотека кроме функций содержит и набор общих переменных. Часть (наиболее часто используемых) функций размещены в include-библиотеке (Base.mqh), компилируемой в состав советника, а другая часть размещена в отдельной библиотеке (Base.mq4), компилируемой самостоятельно, и вызвывается "по требованию".

Так как это базовая библиотека, то в теле советника она прописывается ПЕРВОЙ!!!

В первую часть библиотеки вошли следующие функции:

//IIIIIIIIIIIIIIIIIII===========Перечень функций модуля=========IIIIIIIIIIIIIIIIIIIIII+
/*void fInit_Base (string fs_SymbolList,           // Лист рабочих валютных пар
                   string fs_MagicList,            // Лист рабочих Магиков
                   int fi_TFControl = 0,           // Контрольный период (TF индикаторов)
                   bool fb_ShowCom = true,         // Разрешение на показ комментариев на графике
                   bool fb_PrintCom = true,        // Разрешение на печать комментариев
                   bool fb_PlaySound = true)       // Разрешение на звуковое сопровождение событий
                   bool fb_CreatVStopsInChart = false,// Разрешение на рисование виртуальных СТОПов на чарте
                   string fs_Delimiter = ",")*/    // Разделитель переменных в листе fs_MagicList
                                     // Инициализация модуля
//|***********************************************************************************|
//| РАЗДЕЛ: Общие функции                                           |
//|***********************************************************************************|
/*double fGet_TradePrice (int fi_Price,            // Цена: 0 - Bid; 1 - Ask
                          bool fb_RealTrade,       // реальная торговля или оптимизация\тестирование
                          string fs_Symbol = "")*/ // валютная пара
                                     // Запускаем в цикл получение рыночной цены
//int fControl_NewBar (int fi_TF = 0)// Функция, контролирующая приход нового бара
/*datetime fGet_TermsTrade (string fs_SymbolList,  // Лист управляемых валютных пар
                            string fs_MagicList,   // Лист управляемых Магиков
                            datetime& fdt_LastTrade,// когда был последний ордер
                            string fs_Delimiter = ",")*/// Разделитель переменных в листе fs_MagicList
                                     // Находим дату начала торговли по дате первого открытого ордера
//string fSplitField (string fs_Value)// Разделяем разряды чисел пробелами
//int NDPD (double v)                // Функция "нормализации" значения по Point в целое число
//double NDP (int v)                 // Функция, перевода int в double по Point
//double ND0 (double v)              // Функция нормализации значения double до целого
//double NDD (double v)              // Функция нормализации значения по Digits
//double NDDig (double v)            // Функция, нормализации значения double до мин. разрядности лота
//string DS0 (double v)              // Функция, перевода значения из double в string c нормализацией по 0
//string DSD (double v)              // Функция, перевода значения из double в string c нормализацией по Digits
//string DSDig (double v)            // Перевод значения из double в string c нормал. по мин. разрядности лота
//int LotDecimal()                   // Функция, определения минимальной разрядности лота
/*bool fCheck_NewBarInPeriod (int fi_Period = 0,   // TF
                              bool fb_Conditions = true)*/// условие на проверку
                                     // Контролир. факт прихода нов. бара на NewBarInPeriod периоде (если NewBarInPeriod >= 0)
//|***********************************************************************************|
//| РАЗДЕЛ: Работа с ошибками                                    |
//|***********************************************************************************|
/*int fGet_LastErrorInArray (string& Comm_Array[], // возвращаемый массив комментов
                             string Com = "",      // дополнительная информация к сообщению об ошибке
                             int index = -1)*/     // индекс ячейки в которую заносим сообщение об ошибке
                                     // Получаем номер и описание посл. ошибки и выводим в массив комментов
//int fGet_LastError (string& Comm_Error, string Com = "")
                                     // Получаем номер и описание последней ошибки
//|***********************************************************************************|
//| РАЗДЕЛ: Сервисных функций                                   |
//|***********************************************************************************|
//void fWrite_Log (string fs_Txt)    // Пишем Log-файл
/*void fPrintAndShowComment (string& Text,         // Возвращаемая пустая строка
                             bool Show_Conditions, // Разрешение на показ комментов на графике
                             bool Print_Conditions,// Разрешение на печать комментов
                             string& s_Show[],     // Взвращаемый массив комментов
                             int ind = -1)*/       // индекс ячейки массива, куда внесли изменения
                                     // Выводим на печать и на график комментарии
//void fControl_BreakEven (double ar_Lots[])       // массив объёмов открытых рыночных ордеров
                                     // Контроль Уровня БезУбытка по символу
//bool fSTOPTRADE()                  // ПРЕДУПРЕЖДЕНИЕ
//|***********************************************************************************|
//| РАЗДЕЛ: MONEY MANAGEMENT                                                    |
//|***********************************************************************************|
//double fLotsNormalize (double fd_Lots)          // размер лота
                                     // Производим нормализацию лота
//double fGet_PipsValue()            // Определение стоимости пункта выделенного ордера
/*bool fCheck_MinProfit (double fd_MinProfit,     // размер минимальной прибыли по ордеру
                         double fd_NewSL,         // новый SL
                         bool fb_Condition = true)*/// условие на проведение проверки
                                     // Проверяем условие ни минимальную прибль по ордеру
/*double fGet_BreakEven (string fs_Symbol,        // Symbol
                         double ar_Lots[],        // массив объёмов открытых рыночных ордеров
                         double fd_Profit)*/      // текущий профит по открытым ордера
                                     // Определение Уровня БезУбытка по символу

Во вторую часть попали:

//IIIIIIIIIIIIIIIIIII===========Перечень функций модуля=========IIIIIIIIIIIIIIIIIIIIII+
//|***********************************************************************************|
//| РАЗДЕЛ: Общие функции                                           |
//|***********************************************************************************|
//double fGet_Point (string fs_Symbol = "")
                                     // Функция, гарантированного получения Point
/*bool fCCV_D (double fd_Value,                    // Проверяемый параметр
               int fi_IND)*/                       // индекс параметра в массиве
                                     // Фиксирует факт изменения проверяемого double параметра
/*bool fCCV_S (string fs_Value,                    // Проверяемый параметр
               int fi_IND)*/                       // индекс параметра в массиве
                                     // Фиксирует факт изменения проверяемого string параметра
/*bool fCCV_B (bool fb_Value,                      // Проверяемый параметр
               int fi_IND)*/                       // индекс параметра в массиве
                                     // Фиксирует факт изменения проверяемого bool параметра
//string fGet_NameOP (int fi_Type)   // Функция возвращает наименование торговой операции
//string fGet_NameTF (int fi_TF)     // Возвращает наименование таймфрейма
//string fGet_SignCurrency()         // Функция возвращает значёк валюты депозита
//string CheckBOOL (int M)           // Возвращает наименование состояния (ДА\НЕТ)
//string fGet_TimeToStr (datetime fdt_Time)
                                     // Возвращает продолжительность периода в D:H:M
//double IIFd (bool condition, double ifTrue, double ifFalse)
                                     // Возвращает одно из двух значений DOUBLE в зависимости от условия
//string IIFs (bool condition, string ifTrue, string ifFalse)
                                     // Возвращает одно из двух значений STRING в зависимости от условия
//color IIFc (bool condition, color ifTrue, color ifFalse)
                                     // Возвращает одно из двух значений COLOR в зависимости от условия
//|***********************************************************************************|
//| РАЗДЕЛ: Работы с массивами                                  |
//|***********************************************************************************|
/*int fGet_INDInArrayINT (int fi_Value,            // Искомый элемент
                          int ar_Array[])*/        // Проверяемый массив
                                     // Получаем индекс искомого элемента в массиве int
/*int fGet_INDInArraySTR (string fs_Value,         // Искомый элемент
                          string ar_Array[])*/     // Проверяемый массив
                                     // Получаем индекс искомого элемента в массиве string
//int fGet_NumPeriods (int fi_Period)// Получаем номер периода графика
//void InitializeArray_STR (string& fsa_Array[], string fs_Value = "")
                                     // Инициализируем массив STRING
/*void fCreat_ArrayGV (string& ar_Base[],          // рабочий массив
                       string ar_Add[])*/          // добавляемы массив
                                     // Создаём массив имён временных GV-переменных
/*int fSplitStrToStr (string fs_List,              // строка с данными
                      string& ar_OUT[],            // возвращаемый массив
                      string fs_Delimiter = ",")*/ // разделитель данных в строке
                                     // Возвращает массив STRING из строки, разделённой sDelimiter
/*void fCreat_StrToInt (string ar_Value[],         // массив элементов string
                        int& ar_OUT[],             // возвращаемый массив int
                        int fi_IND,                // количество ячеек в массиве
                        int fi_Factor = 1,         // множитель
                        string fs_NameArray = "")*/// имя возвращаемого массива
                                     // Возвращает массив INT из элементов массива STRING
/*void fCreat_StrToDouble (string ar_Value[],      // массив элементов string
                           double& ar_OUT[],       // возвращаемый массив double
                           int fi_IND,             // количество ячеек в массиве
                           double fd_Factor = 1.0, // множитель
                           string fs_NameArray = "")*/// имя возвращаемого массива
                                     // Возвращает массив DOUBLE из элементов массива STRING
/*string fCreat_StrAndArray (int fi_First,         // значение 1-го эелемента массива
                             int& ar_OUT[],        // возвращаемый массив int
                             int fi_cntIND,        // количество элементов в массиве
                             string fs_Delimiter = ",")*/// разделитель элементов в возвращаемой строке
                                     // Возвращает строку из элементов массива INT и сам массив
/*string fCreat_StrFromArray (string ar_Array[],   // массив со значениями
                              string fs_Delimiter = ",")*/// разделитель элементов в возвращаемой строке
                                     // Возвращает строку из элементов массива, разделённых fs_Delimiter
/*int fInit_ArrayINT (int& ar_INT[],               // Инициализируемый массив
                      string fs_List,              // Инициализируемые значения в строке
                      int fi_Range,                // Размер массива
                      double fd_Factor = 1.0,      // множитель
                      string fs_NameArray = "",    // имя возвращаемого массива
                      string fs_Delimiter = ",")*/ // Разделитель значений в строке
                                     // Инициализация рабочего массива int
/*int fInit_ArrayDBL (double& ar_DBL[],            // Инициализируемый массив
                      string fs_List,              // Инициализируемые значения в строке
                      int fi_Range,                // Размер массива
                      double fd_Factor = 1.0,      // множитель
                      string fs_NameArray = "",    // имя возвращаемого массива
                      string fs_Delimiter = ",")*/ // Разделитель значений в строке
                                     // Инициализация рабочего массива double
/*int fInit_ArrayBOOL (bool& ar_BOOL[],            // Инициализируемый массив
                       string fs_List,             // Инициализируемые значения в строке
                       int fi_Range,               // Размер массива
                       double fd_Factor = 1.0,     // множитель
                       string fs_NameArray = "",   // имя возвращаемого массива
                       string fs_Delimiter = ",")*/// Разделитель значений в строке
                                     // Инициализация рабочего массива bool
/*double fChoiceSource (string fs_Symbol,          // Symbol
                        int fi_Bar,                // Bar
                        datetime fdt_Time,         // Time
                        int fi_TF,                 // Period
                        double fda_Array[][],      // массив с альтернативными котировками
                        int fi_NSource,            // индекс в 1-ом измерении массива
                        bool fb_IsBufffer = true)*/// флаг "родной" истории
                                     // Альтернатива индикаторному буферу
/*void fRun_Sort (int& ar_INDEX[],                 // массив индексов для сортировки
                  double fda_Value[])*/            // массив значений
                                     // Сортируем индексы массива по убыванию
//|***********************************************************************************|
//| РАЗДЕЛ: Сервисных функций                                   |
//|***********************************************************************************|
/*double fGet_ValueFromGV (string fs_Name,         // имя GV-переменной
                           double fd_Value,        // если такой переменной нет, подставляемое значение
                           bool fd_Condition = true)*/// условие на проверку наличия GV-переменной
                                     // Берём значение переменной или из GV, или (при её отстутствии) fd_Value
//void fClear_GV (int fi_cnt = 5000)               // кол-во очищаемых объектов (тикетов)
                                     // Подчищаем возможно оставшиеся GV-переменные
/*void fPrintAlert (string fs_Symbol,              // Symbol
                    int fi_TF,                     // Таймфрейм
                    int fi_IND)*/                  // номер индекса в массиве
                                     // Предупреждаем об отсутствии истории на баре

Как всегда библиотеку нужно инициализировать:

int init()
{
    //---- Инициализируем библиотеку базовых функций
    fInit_Base (Symbol(), MagicNumber, TF_Indicators, ShowCommentInChart, PrintCom, SoundAlert, CreatVStopsInChart);
}

Примеры советников, созданных с использованием ПС: ManagerTrailing, MULTI_Scalper, SAR, MAStoch.

В архиве вся библиотека.

iACfunc, iAOfunc and iBearsBullsfuncs iACfunc, iAOfunc and iBearsBullsfuncs

Расширенные возможности функций iAC, iAO and iBearsBulls

MTF FractalsChannel MTF FractalsChannel

Мультитаймфреймный фрактальный канал.

Kvadrat Kvadrat

Советник устанавливает отложенные ордера Buy Stop и Sell Stop в пределах ценового квадрата.

OrderPercent2 OrderPercent2

Индикатор показывает прибыль по ордерам в процентах от баланса. Или уровень стопа в пунктах.