//+------------------------------------------------------------------+
//| Vinni.mq4 |
//| Copyright 2018, AM2 |
//| http://www.forexsyatems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link "http://www.forexsyatems.biz"
#property version "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(INIT_SUCCEEDED);
}
input string Name1="DSS Bresert";
extern int EMA_period=8;
extern int Stochastic_period=13;
extern int Shift=1;
extern int Level=30;
input string Name2="VininI_HMA_soundamp-Alert";
extern int period=16;
extern int method=3; // MODE_SMA
extern int price=0; // PRICE_CLOSE
extern int sdvig=0;
datetime t=0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutArrow(string name,int code,double p,datetime time,color clr)
{
//--- создадим стрелку
ObjectCreate(0,name,OBJ_ARROW,0,time,p);
//--- установим код стрелки
ObjectSetInteger(0,name,OBJPROP_ARROWCODE,code);
//--- установим способ привязки
ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- установим цвет стрелки
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим размер стрелки
ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
for(int i=0;i<1000;i++)
{
double dss=iCustom(NULL,0,Name1,EMA_period,Stochastic_period,0,i);
double gre1=iCustom(NULL,0,Name2,period,method,price,sdvig,1,i);
double red1=iCustom(NULL,0,Name2,period,method,price,sdvig,2,i);
double gre2=iCustom(NULL,0,Name2,period,method,price,sdvig,1,i+1);
double red2=iCustom(NULL,0,Name2,period,method,price,sdvig,2,i+1);
double ma=iMA(NULL,0,5,2,0,0,Shift);
if(t!=Time[0])
{
if(dss<Level && gre1<1000 && red2<1000 && close[i]>ma)
{
PutArrow("UP "+(string)time[i],233,low[i],time[i],Blue);
Alert(_Symbol+" UP Signal!!!");
}
if(dss>100-Level && gre2<1000 && red1<1000 && close[i]<ma)
{
PutArrow("DN "+(string)time[i],234,high[i],time[i],Red);
Alert(_Symbol+" DN Signal!!!");
}
}
t=Time[0];
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| PairVol.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window
input string s1="EURUSD";
input string s2="GBPUSD";
input string s3="USDCHF";
input string s4="AUDUSD";
input string s5="USDJPY";
input string s6="USDCAD";
input string s7="EURGBP";
input string s8="GBPJPY";
input string s9="NZDUSD";
input int count=10;
int vol[9];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutLabel(string text,string name,int x,int y)
{
ObjectDelete(0,name);
//--- создадим текстовую метку
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- установим координаты метки
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
ObjectSetInteger(0,name,OBJPROP_CORNER,1);
//--- установим текст
ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет
ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
double h1=iHigh(s1,0,iHighest(s1,0,MODE_HIGH,count,0));
double l1=iLow(s1,0,iLowest(s1,0,MODE_LOW,count,0));
int v1=(int)((h1-l1)/MarketInfo(s1,MODE_POINT));
int sp1=(int)MarketInfo(s1,MODE_SPREAD);
vol[0]=v1;
double h2=iHigh(s2,0,iHighest(s2,0,MODE_HIGH,count,0));
double l2=iLow(s2,0,iLowest(s2,0,MODE_LOW,count,0));
int v2=(int)((h2-l2)/MarketInfo(s2,MODE_POINT));
int sp2=(int)MarketInfo(s2,MODE_SPREAD);
vol[1]=v2;
double h3=iHigh(s3,0,iHighest(s3,0,MODE_HIGH,count,0));
double l3=iLow(s3,0,iLowest(s3,0,MODE_LOW,count,0));
int v3=(int)((h3-l3)/MarketInfo(s3,MODE_POINT));
int sp3=(int)MarketInfo(s3,MODE_SPREAD);
vol[2]=v3;
double h4=iHigh(s4,0,iHighest(s4,0,MODE_HIGH,count,0));
double l4=iLow(s4,0,iLowest(s4,0,MODE_LOW,count,0));
int v4=(int)((h4-l4)/MarketInfo(s4,MODE_POINT));
int sp4=(int)MarketInfo(s4,MODE_SPREAD);
vol[3]=v4;
double h5=iHigh(s5,0,iHighest(s5,0,MODE_HIGH,count,0));
double l5=iLow(s5,0,iLowest(s5,0,MODE_LOW,count,0));
int v5=(int)((h5-l5)/MarketInfo(s5,MODE_POINT));
int sp5=(int)MarketInfo(s5,MODE_SPREAD);
vol[4]=v5;
double h6=iHigh(s6,0,iHighest(s6,0,MODE_HIGH,count,0));
double l6=iLow(s6,0,iLowest(s6,0,MODE_LOW,count,0));
int v6=(int)((h6-l6)/MarketInfo(s6,MODE_POINT));
int sp6=(int)MarketInfo(s6,MODE_SPREAD);
vol[5]=v6;
double h7=iHigh(s7,0,iHighest(s7,0,MODE_HIGH,count,0));
double l7=iLow(s7,0,iLowest(s7,0,MODE_LOW,count,0));
int v7=(int)((h7-l7)/MarketInfo(s7,MODE_POINT));
int sp7=(int)MarketInfo(s7,MODE_SPREAD);
vol[6]=v7;
double h8=iHigh(s8,0,iHighest(s8,0,MODE_HIGH,count,0));
double l8=iLow(s8,0,iLowest(s8,0,MODE_LOW,count,0));
int v8=(int)((h8-l8)/MarketInfo(s8,MODE_POINT));
int sp8=(int)MarketInfo(s8,MODE_SPREAD);
vol[7]=v8;
double h9=iHigh(s9,0,iHighest(s9,0,MODE_HIGH,count,0));
double l9=iLow(s9,0,iLowest(s9,0,MODE_LOW,count,0));
int v9=(int)((h9-l9)/MarketInfo(s9,MODE_POINT));
int sp9=(int)MarketInfo(s9,MODE_SPREAD);
vol[8]=v9;
//---
PutLabel(s1+" VOL: "+(string)v1+" SPREAD: "+(string)sp1,s1,260,10);
PutLabel(s2+" VOL: "+(string)v2+" SPREAD: "+(string)sp2,s2,260,30);
PutLabel(s3+" VOL: "+(string)v3+" SPREAD: "+(string)sp3,s3,260,50);
PutLabel(s4+" VOL: "+(string)v4+" SPREAD: "+(string)sp4,s4,260,70);
PutLabel(s5+" VOL: "+(string)v5+" SPREAD: "+(string)sp5,s5,260,90);
PutLabel(s6+" VOL: "+(string)v6+" SPREAD: "+(string)sp6,s6,260,110);
PutLabel(s7+" VOL: "+(string)v7+" SPREAD: "+(string)sp7,s7,260,130);
PutLabel(s8+" VOL: "+(string)v8+" SPREAD: "+(string)sp8,s8,260,150);
PutLabel(s9+" VOL: "+(string)v9+" SPREAD: "+(string)sp9,s9,260,170);
ArraySort(vol,WHOLE_ARRAY,0,MODE_DESCEND);
Comment("\n Max Vol: ",vol[0]);
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
сигналит каждую секунду не останавливаясь)
//--- зададим название индикатора
#property description "$lide$"
//--- установим строгий режим компиляции
#property strict
//--- укажем где отрисовываться индиктору
#property indicator_separate_window
//--- укажем количество буферов
#property indicator_buffers 1
//--- зададим цвет отрисовки индикатора
#property indicator_color1 clrGreenYellow
//--- установим толщину горизонтальных уровней
#property indicator_levelwidth 1
//--- установим стиль горизонтальных уровней
#property indicator_levelstyle STYLE_SOLID
//--- зададим входные параметры
extern string S_I = "Настройки индикатора";
extern int count = 10; //период
extern int flexibility = 1; //гибкость
extern int deviation_from_levels = 1; //отклонение от уровней
extern string S_G = "Настройки графики";
extern int counted_bars=100; //подсчет баров
//--- укажем массивы индикаторных буферов
double line_01[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit(void)
{
string short_name;
//--- укажем один дополнительный буфер для вычислений
IndicatorBuffers(1);
SetIndexBuffer(0,line_01);
//--- зададим уровни
IndicatorSetInteger(INDICATOR_LEVELS,2);
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,count/flexibility-deviation_from_levels);
IndicatorSetDouble(INDICATOR_LEVELVALUE,1,-count/flexibility+deviation_from_levels);
//--- зададим всем уровням цвет Blue
IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
//--- зададим отрисовку индикатора в виде линии
SetIndexStyle(0,DRAW_LINE,EMPTY,EMPTY,clrGreenYellow);
SetIndexBuffer(0,line_01);
//--- зададим имя в окне DataWindow и метку
short_name="$lide$("+string(count)+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//--- проверим входные параметры
if(count<2)
{
Alert("Неправильное значение переменной период = ",count);
return(INIT_FAILED);
}
//--- если нет ошибок,то инициализация успешно завершена
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutArrow(string name,int code,double p,datetime time,color clr)
{
//--- создадим стрелку
ObjectCreate(0,name,OBJ_ARROW,0,time,p);
//--- установим код стрелки
ObjectSetInteger(0,name,OBJPROP_ARROWCODE,code);
//--- установим способ привязки
ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- установим цвет стрелки
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим размер стрелки
ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
}
//+------------------------------------------------------------------+
//| $lide$ |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
for(int shift=counted_bars;shift>=0;shift--)
{
double lowest=iLowest(_Symbol,_Period,MODE_LOW,count,shift)/flexibility;
double highest= iHighest(_Symbol,_Period,MODE_HIGH,count,shift)/flexibility;
line_01[shift]=lowest-highest;
}
if(line_01[1]>0 && line_01[2]<0) PutArrow("NULL_UP"+(string)time[0],233,low[1],time[0],Blue);
if(line_01[1]<0 && line_01[2]>0) PutArrow("NULL_DN"+(string)time[0],234,high[1],time[0],Red);
return(rates_total);
}
//+------------------------------------------------------------------+
Прошу сделать дополнениевам в стол заказов
AM2