Полезные функции 2 Функции совместимые с использованием в MT4 билд >= 562
Сообщений: 536
#21 - 25 декабря 2013 в 13:38
Назад
Пример
Скрипт
[code=php]
//+------------------------------------------------------------------+
//| sTest_sysDT.mq4 |
//| Copyright 2013, artamir |
//| http:\\forexmd.ucoz.org |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, artamir"
#property link "http:\\forexmd.ucoz.org"
//#property version "1.00"
//#property strict
#include
//--------------------------------------------------------------------
#include
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void start()
{
//---
datetime mc=DT_ModeledCurrent();
string time2str=DT_Time2Str(mc);
int time2sec=DT_Time2Seconds(mc);
int str2sec=DT_Str2Seconds(time2str);
bool istimebetween=DTs_isTimeBetween(mc,"12:48:53","15:54:18");
Print("DT_ModeledCurrent=",mc);
Print("DT_Time2Str=",time2str);
Print("DT_Time2Seconds=",time2sec);
Print("DT_Str2Seconds=",str2sec);
Print("DTs_isTimeBetween 12:48:53 and 15:54:18 =",istimebetween);
}
//+------------------------------------------------------------------+
[/code]
Сообщений: 536
#22 - 25 декабря 2013 в 14:13
Редактировалось: 2 раз (Последний: 25 декабря 2013 в 14:32)
Сообщений: 536
#23 - 25 декабря 2013 в 14:19
Назад
Norm_symb
Нормализует значение типа double количеством знаков после запятой для заданного инструмента.
[code=php]
double Norm_symb(double d, string sy = "", int add = 0){//..
/*
>Ver : 0.0.2
>Date : 2012.07.18
>Hist:
@0.0.2@2012.07.18@artamir [+] добавление новой переменной add
@0.0.1@2012.06.25@artamir [+] Базовый функционал
>Desc:
Нормализует значение типа double количеством знаков после запятой для заданного инструмента.
>VARS:
d : Переменная типа доубл
sy : Название инструмента
add : Добавление количесва значащих цифр после запятой
*/
//==================================
if(sy == ""){
sy = Symbol();
}
//----------------------------------
if(d == 0){
return(0);
}
//----------------------------------
int di = MarketInfo(sy, MODE_DIGITS);
return(NormalizeDouble(d, di+add));
}//.
[/code]
Сообщений: 536
#24 - 25 декабря 2013 в 14:31
Начало
Norm_vol
Нормализация объема по шагу изменения.
[code=php]
double Norm_vol(double v, string sy = ""){//..
/*
>Ver : 0.0.2
>Date : 2012.07.31
>History:
@0.0.2@2012.07.31@artamir [+] Добавил нормализацию объема в зависимости от шага объема.
@0.0.1@2012.07.25@artamir []
>Description: Нормализация объема по шагу изменения.
*/
//--------------------------------------------------------------------
if(sy == ""){
sy = Symbol();
}
//--------------------------------------------------------------------
int d = 2; //
//--------------------------------------------------------------------
double lotStep = MarketInfo(sy, MODE_LOTSTEP);
//--------------------------------------------------------------------
if(lotStep == 0.01){
d = 2;
}
//------
if(lotStep == 0.1){
d = 1;
}
//------
if(lotStep == 1){
d = 0;
}
//--------------------------------------------------------------------
return(NormalizeDouble(v, d));
}//.
[/code]
Сообщений: 536
#25 - 25 декабря 2013 в 14:35
Начало
Пример
Эксперт
Запускать на терминале более 562 билда
[code=php]
//+------------------------------------------------------------------+
//| eTest_sysNormalize.mq4 |
//| Copyright 2013, artamir |
//| http:\\forexmd.ucoz.org |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, artamir"
#property link "http:\\forexmd.ucoz.org"
#property version "1.00"
#property strict
#include
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Print("Norm_symb(2.1234567)=",Norm_symb(2.1234567));
Print("Norm_symb(2.1234567,'EURJPY')=",Norm_symb(2.1234567,"EURJPY"));
Print("Norm_symb(2.1234567,'',8)=",Norm_symb(2.1234567,"",8));
Print("Norm_vol(0.123)=",Norm_vol(0.123));
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
[/code]
Сообщений: 536
#26 - 25 декабря 2013 в 18:15
Начало
sysStructure.mqh
Функции для работы со структурой, сохраненной в строке.
Для работы необходима библиотека sysOther.mqh
int Struc_KeyValue_int(string str, string key = "@p", int def = -1)
double Struc_KeyValue_double(string str, string key = "@p")
string Struc_KeyValue_string(string str, string key = "@p", string def = "")
string Struc_StringKeyValue(string str = "", string key = "@p", string def = "-1", string del = "@")
string Struc_setValue(string str, string key = "p", string value = "0", string del = "@")
Пример работы с библиотекой Редактировалось: 6 раз (Последний: 25 декабря 2013 в 19:00)
Сообщений: 536
#27 - 25 декабря 2013 в 18:20
Назад
Struc_KeyValue_int
Возвращает значение, заданное ключом
[code=php]
int Struc_KeyValue_int(string str, string key = "@p", int def = -1){
/*
>Ver : 0.0.0.2
>Date : 2013.08.05
>History:
@0.0.0.2@2013.08.05@artamir [*] Добавлен параметр, возвращающий значение по умолчанию
>Description:
return int value by key from format string
*/
return(StrToInteger(Struc_StringKeyValue(str,key,def)));
}
[/code]
Сообщений: 536
#28 - 25 декабря 2013 в 18:23
Назад
Struc_KeyValue_double
Возвращает значение, заданное ключом
[code=php]
double Struc_KeyValue_double(string str, string key = "@p"){
/*
>Ver : 0.0.1
>Date : 2012.04.05
>History:
>Description:
return double value by key from format string
*/
return(StrToDouble(Struc_StringKeyValue(str,key)));
}
[/code]
Сообщений: 536
#29 - 25 декабря 2013 в 18:26
Назад
Struc_KeyValue_string
Возвращает значение, заданное ключом
[code=php]
string Struc_KeyValue_string(string str, string key = "@p", string def = ""){
return(Struc_StringKeyValue(str,key,def));
}
[/code]
Сообщений: 536
#30 - 25 декабря 2013 в 18:52
Назад
Struc_StringKeyValue
Возвращает значение, заданное ключом.
[code=php]
string Struc_StringKeyValue(string str = "", string key = "@p", string def = "-1", string del = "@"){
/*
>Ver : 0.0.0.3
>Date : 2013.08.05
>History:
@0.0.0.3@2013.08.05@artamir [*] Изменились названия параметров функции.
>Description:
@str = incoming string of the form "@p123456@l5@w3@d1"; p,l,w,d - name of keys
@key = <@x>; where @-separator, x-name of key
on defolt return parent ticket
if key not found, return defolt value
*/
int lPosStart = -1; //start position of key name
int lPosEnd = -1; //end position of key name
string d = del; //разделитель
//---
if(StringFind(key,d,0) == -1){
key = d + key;
}
//---
lPosStart = StringFind(str,key,0);
if(lPosStart == -1){
return(def);
}
//---
int lKeyLen = StringLen(key);
lPosEnd = StringFind(str,d,lPosStart+1); // find position of "@" in str after lPosStart
lPosStart = lPosStart + lKeyLen;
int len = iif(lPosEnd == -1, -1, lPosEnd - lPosStart);
//---
return(StringSubstr(str, lPosStart, len));
}
[/code]
Сообщений: 536
#31 - 25 декабря 2013 в 18:56
Назад
Struc_setValue
Устанавливает значение, соответствующее ключу в строку str возвращает измененную строку.
[code=php]
string Struc_setValue(string str, string key = "p", string value = "0", string del = "@"){
/**
\version 0.0.0.1
\date 2013.08.02
\author Morochin
Artiom
\details Устанавливает значение, соответствующее ключу в строку str
возвращает измененную строку.
\internal
>Hist:
@0.0.0.1@2013.08.02@artamir [] Struc_setValue
>Rev:0
*/
key = O_StringReplace(key,del,"");
string lkey = del+key;
int start_pos = StringFind(str, lkey);
if(start_pos == -1){
str = str+lkey+value;
return(str);
}
string old_value = Struc_KeyValue_string(str, lkey);
str = O_StringReplace(str, lkey+old_value, lkey+value);
return(str);
}
[/code]
Сообщений: 536
#32 - 25 декабря 2013 в 18:59
Назад
Пример
советник
для билда от 562
[code=php]
//+------------------------------------------------------------------+
//| eTest_sysStructure.mq4 |
//| Copyright 2013, artamir |
//| http:\\forexmd.ucoz.org |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, artamir"
#property link "http:\\forexmd.ucoz.org"
#property version "1.00"
#property strict
#include
#include
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
string s="@int123@dbl123.456@strthis is string :)";
Print(s);
Print("Struc_KeyValue_int(s,'@int')=",Struc_KeyValue_int(s,"@int"));
Print("Struc_KeyValue_double(s,'@dbl')=",Struc_KeyValue_double(s,"@dbl"));
Print("Struc_KeyValue_string(s,'@str')=",Struc_KeyValue_string(s,"@str"));
Print("Struc_setValue(s,'@str','this is new string')=",Struc_setValue(s,"@str","this is new string"));
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
[/code]
Сообщений: 536
#33 - 25 декабря 2013 в 19:27
Начало
iStoh.mqh
версия:0.0.1.0
дата:2013.12.25
Функции для работы с индикатором iStohastic.
void aSth_Init()
int aSth_set(int k=5, int d=3, int sl=3, int me=MODE_SMA, int pr=0, string sy="", int tf=0, int shift=0)
double iSth_get(int handle=0, int line=MODE_MAIN, int shift=-1, int dgt=0, bool useSinhro = true)
int iSth_getArray(int h, double &a[], int l=MODE_MAIN, int shift = -1, double def=-1)
int iSth_Cross(double &f[], double &s[], int shift=2)
int iSth_CrossMainSignal(int h, int shift = 1)
int iSth_CrossMainLevel(int h, int l=80 /** exemple 80*/, int shift=1)
Пример использования библиотеки Редактировалось: 8 раз (Последний: 25 декабря 2013 в 19:57)
Сообщений: 536
#34 - 25 декабря 2013 в 19:30
Назад
aSth_Init
Очищает стринговый массив. Использовать при инициализации библиотеки
[code=php]
void aSth_Init(){
/**
\version 0.0.0.0
\date 2013.05.20
\author Morochin
Artiom
\details Очищает стринговый массив. Использовать при инициализации библиотеки.
\internal
>Hist:
>Rev:0
*/
ArrayResize(aStSets,0);
}
[/code]
Сообщений: 536
#35 - 25 декабря 2013 в 19:33
Назад
aSth_set
Сохраняет настройку стохастика в массив настроек. Возвращает индекс настройки в массиве.
[code=php]
int aSth_set( int k = 5 /** %Kperiod */
, int d = 3 /** %Dperiod */
, int sl = 3 /** slowing */
, int me = MODE_SMA /** method */
, int pr = 0 /** price_field */
, string sy = "" /** symbol */
, int tf = 0 /** timeframe */
, int shift = 0 /** shift */){
/**
\version 0.0.0.3
\date 2013.07.25
\author Morochin
Artiom
\details Сохраняет настройку стохастика в массив настроек. Возвращает индекс настройки в массиве.
\internal
>Hist:
@0.0.0.3@2013.07.25@artamir [+] добавлена настройка таймфрейма
>Rev:0
*/
int ROWS = ArrayRange(aStSets,0);
ROWS++;
int lastROW=ROWS-1;
ArrayResize(aStSets, ROWS);
if(sy == ""){
sy=Symbol();
}
string s = "";
s=s+"@k"+k;
s=s+"@d"+d;
s=s+"@sl"+sl;
s=s+"@pr"+pr;
s=s+"@me"+me;
s=s+"@sy"+sy;
s=s+"@tf"+tf;
s=s+"@sh"+shift;
aStSets[lastROW]=s;
return(lastROW);
}
[/code]
Сообщений: 536
#36 - 25 декабря 2013 в 19:35
Назад
iSth_get
Возвращает значение заданной линии стохастика по заданному индексу в массиве настроек и индексу бара. Синхронизация смещения происходит по времени бара с заданным индексом на текущем фрейме.
[code=php]
double iSth_get(int handle=0, int line=MODE_MAIN, int shift=-1, int dgt=0, bool useSinhro = true /** использовать синхронизацию таймфреймов. */){
/**
\version 0.0.0.5
\date 2013.07.25
\author Morochin
Artiom
\details Возвращает значение заданной линии стохастика по заданному индексу в массиве настроек и индексу бара.
Синхронизация смещения происходит по времени бара с заданным индексом на текущем фрейме.
\internal
>Hist:
@0.0.0.5@2013.07.25@artamir [*] синхронизация с тф отличными от текущуго.
@0.0.0.4@2013.07.25@artamir [*] Изменения связанные с ST_MODE_AVG
@0.0.0.3@2013.07.25@artamir [*] Добавлено получение tf.
>Rev:0
*/
int k = Struc_KeyValue_int(aStSets[handle] , "@k");
int d = Struc_KeyValue_int(aStSets[handle] , "@d");
int sl = Struc_KeyValue_int(aStSets[handle] , "@sl");
double pr = Struc_KeyValue_double(aStSets[handle] , "@pr");
int me = Struc_KeyValue_int(aStSets[handle] , "@me");
string sy = Struc_KeyValue_string(aStSets[handle] , "@sy");
int tf = Struc_KeyValue_int(aStSets[handle] , "@tf");
int sh = shift;
if(sh<=-1){
sh = Struc_KeyValue_int(aStSets[handle], "@sh");
}
if(useSinhro){
if(tf != Period()){
sh = iBarShift(sy, tf, iTime(sy, 0, sh));
}
}
double stoh = 0.0;
if(line == ST_MODE_AVG){
stoh = (iStochastic(sy,tf,k,d,sl,me,pr,MODE_MAIN,sh) + iStochastic(sy,tf,k,d,sl,me,pr,MODE_SIGNAL,sh))/2;
}else{
stoh = iStochastic(sy,tf,k,d,sl,me,pr,line,sh);
}
stoh = Norm_symb(stoh, "", dgt);
return(stoh);
}
[/code]
Сообщений: 536
#37 - 25 декабря 2013 в 19:38
Назад
iSth_getArray
Возвращает массив линии индикатора из 3-х элементов.
[code=php]
int iSth_getArray(int h, double &a[], int l=MODE_MAIN, int shift = -1, double def=-1/** если > -1, то заполняет массив переданным значением*/){
/**
\version 0.0.0.1
\date 2013.07.17
\author Morochin
Artiom
\details Возвращает массив линии индикатора из 3-х элементов.
\internal
>Hist:
@0.0.0.1@2013.07.17@artamir [] iSth_getArray
>Rev:0
*/
ArrayResize(a,0); //Очистили массив.
int ROWS = 0; //Начальное количество элементов.
for(int i = shift-1; i<= shift+1; i++){
ROWS++;
ArrayResize(a,ROWS);
if(def==-1){
a[ROWS-1]=iSth_get(h, l, i);
}else{
a[ROWS-1]=def;
}
}
return(ROWS);
}
[/code]
Сообщений: 536
#38 - 25 декабря 2013 в 19:44
Назад
iSth_Cross
Определяем, было ли на баре с заданным индексом пересечение значений быстрого и медленного массива. Возвращает статус пересечения. (0: нет пересечения, 1: пересечение снизу вверх, 2: пересечение сверху вниз)
[code=php]
int iSth_Cross( double &f[] /** быстрый массив */
, double &s[] /** медленный массив */
, int shift=2 /** индекс бара для проверки пересечения */){
/**
\version 0.0.0.2
\date 2013.07.25
\author Morochin
Artiom
\details Определяем, было ли на баре с заданным индексом пересечение значений быстрого и медленного массива
Возвращает статус пересечения. (0: нет пересечения, 1: пересечение снизу вверх, 2: пересечение сверху вниз)
\internal
>Hist:
@0.0.0.2@2013.07.25@artamir [] изменились определения.
@0.0.0.1@2013.07.17@artamir [] iSth_Cross
>Rev:0
*/
double f3=Norm_symb(f[shift+1],"",2), f2=Norm_symb(f[shift],"",2), f1=Norm_symb(f[shift-1],"",2);
double s3=Norm_symb(s[shift+1],"",2), s2=Norm_symb(s[shift],"",2), s1=Norm_symb(s[shift-1],"",2);
int status = ST_CRNONE;
if(f3s2){
status = ST_CRUP;
}
if(f3>s3 && f2 status = ST_CRDW;
}
if(f2==s2){
if(f3s1){
status = ST_CRUP;
}
if(f3>s3 && f1 status = ST_CRDW;
}
}
return(status);
}
[/code]
Сообщений: 536
#39 - 25 декабря 2013 в 19:46
Назад
iSth_CrossMainSignal
Проверяет, если на баре с заданным индексом было пересечение главной и сигнальной линий
[code=php]
int iSth_CrossMainSignal(int h, int shift = 1){
/**
\version 0.0.0.1
\date 2013.07.17
\author Morochin
Artiom
\details Проверяет, если на баре с заданным индексом было пересечение главной и сигнальной линий
\internal
>Hist:
@0.0.0.1@2013.07.17@artamir [] iSth_CrossMainSignal
>Rev:0
*/
double f[];
double s[];
int ROWS_f = iSth_getArray(h, f, MODE_MAIN, shift);
int ROWS_s = iSth_getArray(h, s, MODE_SIGNAL, shift);
return(iSth_Cross(f,s,1));
}
[/code]
Сообщений: 536
#40 - 25 декабря 2013 в 19:48
Назад
iSth_CrossMainLevel
Пересечение основной линии с заданным уровнем
[code=php]
int iSth_CrossMainLevel(int h, int l=80 /** exemple 80*/, int shift=1){
/**
\version 0.0.0.0
\date 2013.07.17
\author Morochin
Artiom
\details Пересечение основной линии с заданным уровнем
\internal
>Hist:
>Rev:0
*/
double f[];
double s[];
int ROWS_f = iSth_getArray(h, f, MODE_MAIN, shift);
int ROWS_s = iSth_getArray(h, s, 0, 0, l);
return(iSth_Cross(f,s,1));
}
[/code]
Перейти на форум: Правила форума. Читать обязательно RoboForex Forex4you Alpari FreshForex InstaForex NordFX Weltrade (SystemForex) Торговые платформы Альфа-Форекс FXOpen FBS Markets Forex.ee Admiral Markets LiteForex AMarkets (AForex) Forex Optimum FIBO Group TurboForex Grand Capital FXstart Exness MaxiMarkets Mayzus Investment Company (UWC) MFX Broker (MasterForex) Акция «Форекс Особые» - «Депозит за общение». Реклама Любые темы, реклама. Стратегии и торговые системы Советники, индикаторы, программирование для МТ4 -- Советники -- Индикаторы -- Скрипты -- Программирование MQL4 -- Прочий софт, Утилиты для трейдинга Советники, индикаторы, программирование для МТ5 -- Советники -- Индикаторы -- Скрипты -- Программирование MQL5 Акции и конкурсы трейдеров, проводимые «Форекс Особые» -- Архив акций и конкурсов -- Акции и конкурсы Форекс Особые и Брокеров Новичкам Обучающие материалы Форекс. Видео материалы, литература. Опыт на Forex Трейдеры и инвесторы -- Ищу инвесторов! -- Ищу трейдеров! Форекс аналитика. Технический и фундаментальный анализ валютного рынка -- Обсуждение рынков Форекс прогнозы валютных пар. Бесплатные торговые сигналы Электронные платежные системы -- Обменные сервисы Диалоги о Форекс Психология трейдинга -- Первый этап: Необходимые базовые знания для прибыльной торговли. -- Второй этап: Необходимые элементы для любой прибыльной торговой стратегии -- Третий этап: Торговая стратегия «SaveSystemTrade». ---- Один один Курилка Ключ к интернет заработку , различные виды заработка в интернете Межбанковские условия торговли Архив Корзина КРОУФР (Комиссия по Регулированию Отношений Участников Финансовых Рынков) Другие Брокеры, Дилинговые центры, Форекс компании ЦРФИН - Центр регулирования внебиржевых финансовых инструментов и технологий Индикаторы для торговой платформы VertexFX УМНЫЕ ИНВЕСТИЦИИ
← Назад