Navigation:Home > Content >

dkenlib.mqh

Time: 2017-03-09 | Download file:dkenlib.mqh

//+------------------------------------------------------------------+
//|                                                      dkenlib.mq4 |
//|                                           Copyright © 2011, DKeN |
//|                                             http://dken.ru/mql4/ |
//+------------------------------------------------------------------+
#import "dkenlib.ex4"
//работа
void reconnect (); //пересканировать сервера при потери связи
bool work_check(bool demo);//проверка можно ли работать советнику
void terminal_close(int handle); //закрыть терминал
int terminal_handle();//хендл терминала
int get_lastError();//последняя сохраненная  ошибка GetLastError 
int order_GetLastError();//последняя ошибка, но после выдачи сбрасывается

bool time_checking(string timeList); //уникальный алгоритм для работы с фильтрами времени в формате ЧЧ:ММ-ЧЧ:ММ, ЧЧ:ММ-ЧЧ:ММ кол-во интервалов не ограничено
bool time_check(string start,string end);//проверить попадаем ли мы в диапозон времени
bool time_checkgmt(string start,string end,int timeoffset); //возможность сдвига времени  gmt в текущее (разница между GMT и текущим)
bool bar_isNew(int mode=0,int period=0); //новый бар?
int string_hour(string start); //выдергивает часы из строки вида 00:00
int string_minute(string start);//выдергивает минуты из строки вида 00:00

//работа со строками
void string_explode(string sDelimiter, string sText, string &sReturn[]);//из строки с разделителями формирует массив значений
string string_StrToUp(string s);//возводит в верхний регистр строку

/*управление ордерами*/
bool isValid(double d); //проверяет валидность сигнала индикатора
void order_set_slip(int slip);//задает проскальзывание, по умолчанию 0
void order_OrderCloseAll(string name,int id,int type=-1); //закрыть все ордера
void order_OrderCloseAllColor(string name,int id,int type=-1,color cl=CLR_NONE); //закрыть все ордера и пометить цветом
int  order_OrderSend(string name,int magic,int cmd,double lot,double open,double stop,double take,string comment="",datetime dt=0,color cl=CLR_NONE,bool ecn=true);//откыть ордер
int  order_OrderSendNDD(string name,int magic,int cmd,double lot,double open,double sl,double tp,string comment="",datetime dt=0,color cl=CLR_NONE);//открыть ордер с заданным тр,сл в пунктах
int  virtual_order_OrderSendNDD(string name,int magic,int cmd,double lot,double open,double sl,double tp,string comment="",datetime dt=0,color cl=CLR_NONE); //открытие ордера с установкой виртуального стопа и тейка
bool order_OrderClose(int ticket,double lot,int slip=0,color cl=CLR_NONE);//закрыть ордер
bool order_OrderModify(int ticket,double open,double stop,double take,datetime dt=0,color cl=CLR_NONE);//модифицировать ордер

int order_OrdersTotal(string name,int id,int &orders[]);//посчитать кол-во ордеров каждого типа и суммарное
int order_OrdersTrade(string name,int id,int period,int &orders[],int mode=MODE_TRADES);//open time
int order_OrdersTrade2(string name,int id,int period,int &orders[],int mode=MODE_TRADES);//close time
int get_last_OrderTicket(string name,int id,int type);//получить последний открытый ордер нужного типа
int get_history_OrderTicket(string name,int id,int type);//получить последний закрытый ордер нужного типа
int order_OrderType(int ticket);//получить тип ордера
double order_OrderOpenPrice(int ticket);//цена открытия
double order_OrderClosePrice(int ticket);//цена закрытия
double order_OrderTakeProfit(int ticket);//цена тейк
double order_OrderStopLoss(int ticket);//цена стоп
double order_OrderLots(int ticket);//лот
double order_OrderProfit(int ticket);//текущий профит в валюте
double order_OrderProfitPoint(int ticket); //возвращает кол-во пунктов профита
datetime order_OrderOpenTime(int ticket);//время открытия
datetime order_OrderCloseTime(int ticket);//время закрытия
string order_OrderComment(int ticket);//коммент
double get_AveragePrice(string name,int id,int type); //точка безубытка
double get_Average(string n,int id);//новый расчет точки БУ
void order_SetAll(string name,int id,int type,double stop,double take); //установить всем ордерам данного утипа тейк и стоп
void virtual_order_SetAll(string name,int id,int type,double stop,double take); //установить всем ордерам данного утипа тейк и стоп
int order_get(string name,int magic,int &type[],double &orders[][7],string &symbols[][2]);//получить массив ордеров
/*
         orders[count][0]=OrderOpenPrice();//price
         orders[count][1]=OrderStopLoss();//sl
         orders[count][2]=OrderTakeProfit();//tp
         orders[count][3]=OrderLots();//lots
         orders[count][4]=OrderType();//type
         orders[count][5]=OrderMagicNumber();//magic
         orders[count][6]=OrderTicket();//ticket
         
         symbols[count][0]=OrderSymbol();
         symbols[count][1]=OrderComment();
*/
double get_profit(string name,int magic, int type);//суммарный профит по ордерам нужного типа
double getDayProfit(string name,int magic,int day_offset);//профит за текущий или предыдущий день
//вспомогательные
double dAsk(string name);
double dBid(string name);
double dPoint(string name);
double dDigits(string name);
double NLot(double lot);//нормализация лота
int d(string name="");
double sp(string name);
double p(string name); //d*Point
double ND(double d,string name="");
double ND2(double d,int dgt=-1,string name="");
double ND3(double d);
bool cmp_double(double p1,double p2,double point);
string double_string(double d);//число в строку

int string_period(string p);//период в строку и наоборот
string period_string(int p);
string string_trim(string str);//удалить спереди и сконца пробелы
string string_type(int type);

//работа с глобальными переменными
void global_Delete(string text);//удалить по началу названия переменной
int global_get(string &globals[],string match="");//получить список переменных по фильтру
bool array_find(string & ar[],string match);//проверить вхождение в массив
bool array_find2(double & ar[],double match);
/*для реализации контроля орджеров через глобальные переменные, необходимо скопировать функцию*/
//void order.Manager(); //контроль тикетов, необходимо перегрузить функцию для получения тикета из строки переменной, int global.get.ticket(string var);
   
//трейлинг и безубыток 
void trailing_simple(string name,int magic,double level1,double step1,int trailing_pause_time=5);//простейший трейлинг стоп
void trailing_esmart(string name,int magic,double level1,double step1,double level2,double step2,double level3,double step3,int trailing_pause_time=5);//обычный 3х уровневый трейлинг
void trailing_esmart2(string name,int magic,double level1,double step1,double level2,double step2,double level3,double step3);//3х уровневый шаговый трейлинг стоп
void trailing_esmart3(string name,int magic,double level1,double step1,double level2,double step2,double level3,double step3,double trailing_step=1); //трал 3х уровневый с шагом изменения цены
void virtual_trailing_esmart(string name,int magic,double level1,double step1,double level2,double step2,double level3,double step3,int trailing_pause_time=5); //виртуальный трейлтнг стоп

void bu(string name,int magic,double start,double profit);//безубыток
void bu_esmart(string name,int magic,double level1,double profit1,double level2=0,double profit2=0,double level3=0,double profit3=0,double level4=0,double profit4=0);//улучшенный перенос в бу по этапам достижения прибыли, шаговый безубыток
void virtual_bu_esmart(string name,int magic,double level1,double profit1,double level2=0,double profit2=0,double level3=0,double profit3=0,double level4=0,double profit4=0);//улучшенный перенос в бу по этапам достижения прибыли

//работа с объектами на графике
int objects_get(string &obj[],int type);

//MM
double mm_get_price_point(string name);//получить цену пункта
double mm_get_lot_martin(string symbol,int id,double lotstart,double K,datetime firstRun);//получить лот по мартину
double mm_get_lot(string name,double lot_def,double risk,double startdepo); //расчет лота от депозита
double mm(string name,double risk,double sl);//рассчитать лот по заданному стопу и риску (стоп в пипсах 0.0001)
double mm2(string name,double risk,double slPoint);//рассчитать лот по заданному стопу и риску (стоп в пунктах! 1.1)

//balance, для сохранения баланса в глобальных переменных
void mm_balance_set(string name,string var,double start_balance);
double mm_balance_get(string name,string var);
void mm_balance_delete(string name,string var);
double mm_balance_check(string name,string var,double curr_balance);
double mm_balance_profit(string name,int magic,int &del[]);

//virtual, работа с виртуальными стопами и профитами
//void virtual.expert(string expert.name); //больше не используется !!!!
void virtual_init(); //должна вызываться первой для контроля текущего состояния
void virtual_deinit();//удаляет переменные при закрытии(удалять данные при переключении счета, удалении с графика , закрытия графика)
void virtual_set(int ticket,double sl,double tp); //задает данные по тикету
double virtual_get_tp(int ticket); //получить ТР
double virtual_get_sl(int ticket); //получит СЛ
void virtual_OrdersToVirtual();//переносит стопы и тейки в виртуальные переменные
void virtual_VirtualToOrders();//выполянет обратный перенос с виртуальных на текущий ордер

//symbols.raw,sel
int GetAllSymbols(string & Symbols[], bool Selected=false,double maxspread=0);//получить все символы или выбранные в окне данных
string fx(string name,string & Symbols[]);

//частичное закрытие
int get_part(int ticket,double &lot[]); //получает суммарный начальный лот ордера в закрытой цепочке
//разложить крос на составляющие пары
void get_subsymbol(string cross,string &sub[2]);

//файловые функции
/*
int fclose(int stream){ FileClose(stream);}
int fopen(string filename, int mode,string delimer="|"){   return (FileOpen(filename,mode,delimer));}
int fgets(string &result, int n, int stream ){   result=FileReadString(stream,n);   return (StringLen(result));}
int fputs(int stream,string result){int len=StringLen(result);  len=FileWrite(stream,result);   return (len);}
bool feof(int stream){   return (FileIsEnding(stream));}
*/

//debug
void global_print(string str="");

//выключить советник или включить (кнопка)
void ExpertEnabled(bool Switch);

//поддержка ренко графиков
bool bar_isRenko(int TF); //это ренко?
void renko_Comment(); //выводит сообщение что сова будет запущена со следующим тиком или нужно перезапустить
void renko_time();//вывести время, когда сова рабоатет на ренко, она может при сбоях не перезапуститься, нужно контролировать
//void renko.start(int tf,int delay); //пример обработчика, использовать нельзя
//коробки
void get_box(string name,string start,string end,double &high[1],double &low[1]);
void get_boxgmt(string name,string start,string end,double &high[1],double &low[1],int timeoffset=0); //с возможностью свингуть время для перевода в gmt

//работа с сет файлами
int load_set(string name,string & lines[]);//загружает данные файла в массив
string get_setFileString(string & lines[],string match); //получает строку по названию параметра
string paramString(string & lines[],string match);//получает параметр строку
int paramInt(string & lines[],string match);//получает параметр целое
double paramDouble(string & lines[],string match);//получает параметр double
bool paramBool(string & lines[],string match); //булевое значение
datetime paramTime(string & lines[],string match); //в формате времени если оно было сохранено как datetime

//draw
//draw library
void draw_delete(string obj_name);
void draw_obj_label(string name,int window);
void draw_obj_rectangle(string name,int bar1,double price1, int bar2, double price2,color cl,int window);
void draw_setxy(string name,int x,int y);
void draw_color(string name,color c);
void draw_corner(string name,int corner);
void draw_settext(string name,string text,int size,string font="Arial Black",color cl=Black);
//help://constants_wingdings/
void draw_setarrow(string name,int code,int size,color cl);
void draw_label(string name,string text,int x,int y,color cl,int size=12);
void draw_label_bold(string name,string text,int x,int y,color cl,int size=12);
void draw_label2_bold(string name,string text,int x,int y,color cl,int size=12);
//lines
void draw_obj_vline(string name,int window);
void draw_obj_hline(string name,int window);

Recommend