Miscellaneous
0
Views
0
Downloads
0
Favorites
Energy_Market_01_mail
//+------------------------------------------------------------------+
//| Energy_Market_01_mail.mq4 |
//+------------------------------------------------------------------+
#property copyright "Inkov Evgeni ew123@mail.ru"
#property link "8-918-600-11-33"
//+------------------------------------------------------------------+
#define Max_Razm_Mas 10000
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Green
#property indicator_width1 2
#property indicator_color2 Magenta
#property indicator_width2 2
#property indicator_color3 Red
#property indicator_width3 2
//.....................................
extern int n_bar_sum = 5; // êîëè÷åñòâî áàðîâ óñðåäíåíèÿ
extern double porog_sum = 20.0; // ïîðîã äëÿ ñðåäíèõ ñêîðîñòåé
extern double porog_one = 60.0; // ïîðîã äëÿ îäíè÷íîãî èìïóëüñà ñêîðîñòè
extern int sdvig_strel_up = 5; // ñäâèã âåðõíåé ïåðâîé ñòðåëêè
extern int sdvig_strel_dw = 15; // ñäâèã íèæíåé ïåðâîé ñòðåëêè
extern int sdvig_strel_step = 8; // øàã âûâîäà îñòàëüíûõ ñòðåëîê è öèôð
extern bool ust_strel = true; // âûâîäèòü ñòðåëêè íà ýêðàí ?
extern bool sound = true; // îçâó÷èâàòü ñòðåëêè ?
extern int Razm_Mas = 100; // äëèíà ãðàôèêà
extern color Color_txt = Black; // öâåò òåêñòà
extern bool Mail = true; // îòïðàâëÿòü ñîîáùåíèÿ íà ïî÷òó
//.....................................
double ExtBuffer0[]; // ìàññèâ ñóìì
double ExtBuffer1[]; // ìàññèâ ìåòîê
double ExtBuffer2[]; // ìàññèâ ïðåâûøåíèÿ
double Buffer [Max_Razm_Mas]; // ìàññèâ ñêîðîñòåé
double Buffer_i [Max_Razm_Mas]; // ìàññèâ (èìïóëüñîâ) ñêîðîñòåé, ïðåâûøàþùèéõ ïîðîã porog_one
double Buffer1 [Max_Razm_Mas]; // ìàññèâ ìèíóòíûõ ìåòîê
double Sum_Buffer [Max_Razm_Mas]; // ìàññèâ ñóìì ñêîðîñòåé (ñðåäíåå çíà÷åíèå)
//+------------------------------------------------------------------+
int kol_ms, pred_kol_ms;
double delta_tick,delta_time;
double pr, pred_pr, V, Sum_V;
datetime time_pred_met, time_tek_met;
string name;
int kol_izm;
string name_file="EM_01";
//+------------------------------------------------------------------+
int init()
{
if (n_bar_sum<1)n_bar_sum=1;
IndicatorBuffers(3);
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);
IndicatorDigits(1);
SetIndexEmptyValue(0,0);
ArrayInitialize(ExtBuffer0,0);
ArrayInitialize(ExtBuffer1,0);
ArrayInitialize(Buffer, 0);
ArrayInitialize(Buffer1, 0);
ArrayInitialize(Sum_Buffer,0);
IndicatorShortName("EM_01 ( "+(string)n_bar_sum+", "+
DoubleToStr(porog_sum,1)+", "+
DoubleToStr(porog_one,1)+" )");
SetLevelValue(1, porog_sum);
SetLevelValue(2,-porog_sum);
SetLevelValue(3, porog_one);
SetLevelValue(4,-porog_one);
Get_File();
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
Save_File();
return(0);
}
//+------------------------------------------------------------------+
int start()
{
// èçìåðèòü âðåìÿ ìåæäó òèêàìè
pred_kol_ms=kol_ms;
kol_ms=GetTickCount();
if(kol_ms==pred_kol_ms)
{
kol_ms+=1000;
}
delta_time=kol_ms-pred_kol_ms;
//...............................
// îïðåäåëèòü âåëè÷èíó òèêà
pred_pr=pr;
pr=Bid;
delta_tick=NormalizeDouble((pr-pred_pr)/Point,0);
//...............................
if (pred_pr==0 || pred_kol_ms==0)return(0); // åñëè ïåðåìåííûå íå óñòàíîâëåíû, ïîâòîðèòü âõîä
//...............................
kol_izm=MathMin(Bars,MathMin(Razm_Mas,Max_Razm_Mas)); // îïðåäåëèòü äëèíó ãðàôèêà
//...............................
// âû÷èñëèòü ñêîðîñòü èçìåíåíèÿ òèêà
V=delta_tick/delta_time/Point;
//...............................
// çàíåñòè ñêîðîñòü òèêà â ìàññèâ ñêîðîñòåé
ArrayCopy(Buffer,Buffer,1,0,kol_izm-1); // ïðåäâàðèòåëüíî ñäâèíóòü äàííûå âíóòðè ìàññèâà
Buffer[0]=V;
//...............................
// âû÷èñëèòü ñðåäíþþ ñêîðîñòü çà "n_bar_sum" òèêîâ è çàíåñè â ìàññèâ ñðåäíèõ ñêîðîñòåé
ArrayCopy(Sum_Buffer,Sum_Buffer,1,0,kol_izm-1); // ïðåäâàðèòåëüíî ñäâèíóòü äàííûå âíóòðè ìàññèâà
Sum_V=0;
for (int i=0;i<n_bar_sum;i++)Sum_V+=Buffer[i];
Sum_V=Sum_V/n_bar_sum;
Sum_Buffer[0]=Sum_V;
//...............................
// åñëè ñêîðîñòü ïðåâûñèëà ïîðîã, çàíåñòè ñðåäíþþ ñêîðîñòü â ìàññèâ ïðåâûøåíèÿ ïîðîãà
ArrayCopy(Buffer_i,Buffer_i,1,0,kol_izm-1); // ïðåäâàðèòåëüíî ñäâèíóòü äàííûå âíóòðè ìàññèâà
if (V >= porog_one || V <= -porog_one)
Buffer_i[0]=Sum_V;
else
Buffer_i[0]=0;
//...............................
// ïðè íåîáõîäèìîñòè âûâåñòè ñòðåëêè, çâóê è îòïðàâèòü ñîîáùåíèå íà ïî÷òó
string mail_txt="";
if (Sum_V >= porog_sum)
{
if (ust_strel)
{
strel_up(241,sdvig_strel_up+2*sdvig_strel_step); // äâîéíàÿ ñòðåëêà ââåðõ
txt_up(Sum_V,sdvig_strel_up+3*sdvig_strel_step,Color_txt);
}
if (sound)PlaySound("email.wav");
mail_txt="Äâîéíàÿ ââåðõ="+(string)Sum_V+" ";
}
if (V >= porog_one)
{
if (ust_strel)
{
strel_up(225,sdvig_strel_up); // îäèíî÷íàÿ ñòðåëêà ââåðõ
txt_up(V,sdvig_strel_up+sdvig_strel_step,Color_txt);
}
if (sound)PlaySound("news.wav");
mail_txt=mail_txt+"Îäèíî÷íàÿ ââåðõ="+(string)V+" ";
}
//....................................
if (Sum_V <= -porog_sum)
{
if (ust_strel)
{
strel_dw(242,sdvig_strel_dw+2*sdvig_strel_step); // äâîéíàÿ ñòðåëêà âíèç
txt_dw(Sum_V,sdvig_strel_dw+3*sdvig_strel_step,Color_txt);
}
if (sound)PlaySound("timeout.wav");
mail_txt=mail_txt+"Äâîéíàÿ âíèç="+(string)Sum_V+" ";
}
if (V <= -porog_one)
{
if (ust_strel)
{
strel_dw(226,sdvig_strel_dw); // îäèíî÷íàÿ ñòðåëêà âíèç
txt_dw(V,sdvig_strel_dw+sdvig_strel_step,Color_txt);
}
if (sound)PlaySound("alert2.wav");
mail_txt=mail_txt+"Îäèíî÷íàÿ âíèç="+(string)V;
}
if (Mail && mail_txt!="")SendMail("Îò Energy_Market_01_mail", mail_txt);
//...............................
// â íà÷àëå ìèíóòû, ïîñòàâèòü ìåòêó
time_tek_met=TimeCurrent();
if (time_pred_met==0)time_pred_met=StrToTime(TimeToStr(time_tek_met,TIME_DATE)+" "+TimeToStr(time_tek_met,TIME_MINUTES));
ArrayCopy(Buffer1,Buffer1,1,0,kol_izm-1); // ïðåäâàðèòåëüíî ñäâèíóòü äàííûå âíóòðè ìàññèâà
if (time_tek_met-time_pred_met>=60)
{
time_pred_met=StrToTime(TimeToStr(time_tek_met,TIME_DATE)+" "+TimeToStr(time_tek_met,TIME_MINUTES));
Buffer1[0]=Sum_Buffer[0];
}
else
Buffer1[0]=0;
//...............................
// âûâåñòè ìàññèâ ñðåäíèõ ñêîðîñòåé íà ýêðàí
ArrayCopy(ExtBuffer0,Sum_Buffer,0,0,kol_izm-1);
ExtBuffer0[Razm_Mas-1]=0;
//...............................
// âûâåñòè ìàññèâ ìèíóòíûõ ìåòîê íà ýêðàí
ArrayCopy(ExtBuffer1,Buffer1,0,0,kol_izm-1);
ExtBuffer1[Razm_Mas-1]=0;
//...............................
// âûâåñòè ìàññèâ ïðåâûøåíèÿ ñêîðîñòåé íà ýêðàí
ArrayCopy(ExtBuffer2,Buffer_i,0,0,kol_izm-1);
ExtBuffer2[Razm_Mas-1]=0;
//...............................
return(0);
}
//+------------------------------------------------------------------+
void strel_up(int kod, int sdv)
{
name="up"+(string)Minute()+"_"+DoubleToStr(kod,0);
if (ObjectFind(name)<0)ObjectCreate(name,OBJ_ARROW,0,Time[0],Bid-sdv*Point);
ObjectSet(name,OBJPROP_TIME1,Time[0]);
ObjectSet(name,OBJPROP_PRICE1,Bid-sdv*Point);
ObjectSet(name,OBJPROP_ARROWCODE,kod);
ObjectSet(name,OBJPROP_COLOR,Green);
}
//-------------------------
void strel_dw(int kod, int sdv)
{
name="dw"+(string)Minute()+"_"+DoubleToStr(kod,0);
if (ObjectFind(name)<0)ObjectCreate(name,OBJ_ARROW,0,Time[0],Ask+sdv*Point);
ObjectSet(name,OBJPROP_TIME1,Time[0]);
ObjectSet(name,OBJPROP_PRICE1,Ask+sdv*Point);
ObjectSet(name,OBJPROP_ARROWCODE,kod);
ObjectSet(name,OBJPROP_COLOR,Red);
}
//-------------------------
void txt_up(double n, int sdv, color col)
{
name="txt_up"+(string)Minute()+DoubleToStr(sdv,0);
if (ObjectFind(name)<0)ObjectCreate(name,OBJ_TEXT,0,Time[0],Bid-sdv*Point);
ObjectSet(name,OBJPROP_TIME1,Time[0]);
ObjectSet(name,OBJPROP_PRICE1,Bid-sdv*Point);
ObjectSetText(name,DoubleToStr(n,0),10,"Times New Roman",col);
}
//-------------------------
void txt_dw(double n, int sdv, color col)
{
name="txt_dw"+(string)Minute()+DoubleToStr(sdv,0);
if (ObjectFind(name)<0)ObjectCreate(name,OBJ_TEXT,0,Time[0],Ask+sdv*Point);
ObjectSet(name,OBJPROP_TIME1,Time[0]);
ObjectSet(name,OBJPROP_PRICE1,Ask+sdv*Point);
ObjectSetText(name,DoubleToStr(n,0),10,"Times New Roman",col);
}
//-------------------------
void Save_File()
{
// ñîõðàíåíèå äûííûõ â ôàéëå
// ïåðâîå çíà÷åíèå - âðåìÿ çàïèñè (TimeCurrent())
// âòîðîå çíà÷åíèå - êîë. äàííûõ â ãðóïïå (kol_izm)
// 1-ÿ ãðóïïà - ñêîðîñòè (Buffer[])
// 2-ÿ ãðóïïà - ìåòêè (Buffer1[])
// 3-ÿ ãðóïïà - èìïóëüñû (Buffer_i[])
// 4-ÿ ãðóïïà - ñðåäíèå (Sum_Buffer[])
int file=FileOpen(name_file, FILE_BIN|FILE_WRITE);
FileWriteInteger(file, TimeCurrent());
FileWriteInteger(file, kol_izm);
FileWriteArray(file, Buffer, 0, kol_izm);
FileWriteArray(file, Buffer1, 0, kol_izm);
FileWriteArray(file, Buffer_i, 0, kol_izm);
FileWriteArray(file, Sum_Buffer, 0, kol_izm);
FileClose(file);
}
//-------------------------
void Get_File()
{
// ÷òåíèå äûííûõ èç ôàéëå
// ïåðâîå çíà÷åíèå - âðåìÿ ïðåäûäóùåé çàïèñè
// âòîðîå çíà÷åíèå - êîë. äàííûõ â ãðóïïå (kol_izm)
// 1-ÿ ãðóïïà - ñêîðîñòè (Buffer[])
// 2-ÿ ãðóïïà - ìåòêè (Buffer1[])
// 3-ÿ ãðóïïà - èìïóëüñû (Buffer_i[])
// 4-ÿ ãðóïïà - ñðåäíèå (Sum_Buffer[])
int file=FileOpen(name_file, FILE_BIN|FILE_READ);
datetime t=FileReadInteger(file);
if (TimeCurrent()-t>60)
{
FileClose(file);
FileDelete(name_file);
return;
}
int kol=FileReadInteger(file);
FileReadArray(file, Buffer, 0, kol);
FileReadArray(file, Buffer1, 0, kol);
FileReadArray(file, Buffer_i, 0, kol);
FileReadArray(file, Sum_Buffer, 0, kol);
FileClose(file);
}
//-------------------------
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---