PriceSound_Fibolevels

Author: Roll
Miscellaneous
It issuies visual alerts to the screenIt plays sound alerts
0 Views
0 Downloads
0 Favorites
PriceSound_Fibolevels
//+------------------------------------------------------------------+
//|                                        PriceSound_Fibolevels.mq4 |
//|                                                             Roll |
//|                                           Ôèáî-óðîâíè ñî çâóêîì. |
//+------------------------------------------------------------------+
#property copyright "Roll"
#property link      "http://www.mql4.com/ru/users/Roll"
#property indicator_chart_window
/* Èñòî÷íèêè: 1)- èíäèêàòîð PriceAlert(v.1.1)îò api(http://codebase.mql4.com/download/17987).
 Èíäèêàòîð PriceAlert ðàáîòàåò ñ ãîðèçîíòàëüíîé(ìè)ëèíèåé(ìè).
 "Èíäèêàòîð àâòîìàòè÷åñêè îïðåäåëÿåò ìîìåíò ïåðåñå÷åíèÿ öåíîé ëèíèè è àêòèâèçèðóåò ñèãíàë"(api).
2)- Èíäèêàòîð PriceSound_trendline(http://codebase.mql4.com/ru/7601).Ðàáîòàåò â òåñòåðå.
 Èíäèêàòîð PriceSound_trendline ðàáîòàåò ñ òðåíäîâîé(ìè) ëèíèåé(ìè).
 Äëÿ ñèãíàëà ïðåäïî÷òåíèå îòäàåòñÿ çâóêó,ïîýòîìó çâóêîâîé ôàéë äîëæåí áûòü èíäèâèäóàëüíûì è 
 ïðîäîëæèòåëüíîñòüþ ïðîèãðûâàíèÿ íåñêîëüêî ñåêóíä.Íà ãðàôèêå ìîæåò íàõîäèòñÿ íåñêîëüêî 
 òàêèõ òðåíäîâûõ ëèíèé ñ ðàçëè÷íûìè íàçâàíèÿìè(íåñêîëüêî èíäèêàòîðîâ PriceSound_trendline).
Çàìå÷àíèå: Âî âðåìÿ çàïóñêà èíäèêàòîðû PriceSound_...(PriceSound_trendline,PriceSound_channel,
 PriceSound_Fibochannel,PriceSound_Fibolevels)óñòàíàâëèâàþò èëè ïðåäëàãàþò óñòàíîâèòü"ñâîè"îáúåêòû(ïî óìîë÷àíèþ),
 Åñëè ïîëüçîâàòåëü ñîãëàñåí (ñì.âíåøíèå ïåðåìåííûå),òî"îáúåêò"óñòàíàâëèâàåòñÿ íåìíîãî âûøå ðûíêà.
 Äàëåå îáúåêò ïîëüçîâàòåëåì âûäåëÿåòñÿ è ïåðåìåùàåòñÿ(D&d),íàïðèìåð,äëÿ ïîñòðîåíèÿ ëèíèé ïîääåðæêè/ñîïðîòèâëåíèÿ è ò.ï. 
================================================================
PriceSound_Fibolevels ðàáîòàåò ñ îáúåêòîì "ëèíèè Ôèáîíà÷÷è"(OBJ_FIBO),êîòîðûé íà ôèáî-óðîâíÿõ 
 ïåðåìåùàåò âîñåìü òðåíäîâûõ  ëèíèé ñî ñâîéñòâàìè èíäèêàòîðà PriceSound_trendline,
 íàõîäÿùèõñÿ â ãîðèçîíòàëüíîì ïîëîæåíèè.PriceSound_Fibolevels ðàáîòàåò â òåñòåðå.
================================================================*/
extern bool   Sound_Play=true;              //ðàçðåøåíèå íà çâóê
extern string UniqueName1="Fibolines0_1";   //íàçâàíèå 1 òðåíäîâîé ëèíèè
extern color  LineColor1=Pink;              //öâåò 1 ëèíèè
extern int    LineWidth1=2;                 //øèðèíà 1 ëèíèè
extern string Sound1="connect.wav";         //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 1 òðåíäîâîé ëèíèè
extern string UniqueName2="Fibolines23_1";  //íàçâàíèå 2 òðåíäîâîé ëèíèè
extern color  LineColor2=YellowGreen;       //öâåò 2 ëèíèè
extern int    LineWidth2=2;                 //øèðèíà 2 ëèíèè
extern string Sound2="news.wav";            //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 2 òðåíäîâîé ëèíèè
extern string UniqueName3="Fibolines38_1";  //íàçâàíèå 3 òðåíäîâîé ëèíèè
extern color  LineColor3=Pink;              //öâåò 3 ëèíèè
extern int    LineWidth3=2;                 //øèðèíà 3 ëèíèè
extern string Sound3="connect.wav";         //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 3 òðåíäîâîé ëèíèè
extern string UniqueName4="Fibolines50_1";  //íàçâàíèå 4 òðåíäîâîé ëèíèè
extern color  LineColor4=YellowGreen;       //öâåò 4 ëèíèè
extern int    LineWidth4=2;                 //øèðèíà 4 ëèíèè
extern string Sound4="news.wav";            //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 4 òðåíäîâîé ëèíèè
extern string UniqueName5="Fibolines62_1";  //íàçâàíèå 5 òðåíäîâîé ëèíèè
extern color  LineColor5=Pink;              //öâåò 5 ëèíèè
extern int    LineWidth5=2;                 //øèðèíà 5 ëèíèè
extern string Sound5="connect.wav";         //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 5 òðåíäîâîé ëèíèè
extern string UniqueName6="Fibolines_100_1";//íàçâàíèå 6 òðåíäîâîé ëèíèè
extern color  LineColor6=YellowGreen;       //öâåò 6 ëèíèè
extern int    LineWidth6=2;                 //øèðèíà 6 ëèíèè
extern string Sound6="news.wav";            //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 6 òðåíäîâîé ëèíèè
extern string UniqueName7="Fiboline_162_1"; //íàçâàíèå 7 òðåíäîâîé ëèíèè
extern color  LineColor7=Pink;              //öâåò 7 ëèíèè
extern int    LineWidth7=2;                 //øèðèíà 7 ëèíèè
extern string Sound7="connect.wav";         //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 7 òðåíäîâîé ëèíèè
extern string UniqueName8="Fibolines_262_1";//íàçâàíèå 8 òðåíäîâîé ëèíèè
extern color  LineColor8=YellowGreen;       //öâåò 8ëèíèè
extern int    LineWidth8=2;                 //øèðèíà 8 ëèíèè
extern string Sound8="news.wav";            //íàçâàíèå çâóêîâîãî ôàéëà äëÿ 8 òðåíäîâîé ëèíèè
extern color  FIBOColor=DarkTurquoise;      //öâåò Ôèáî
extern color  FIBOlevelsColor=DarkTurquoise;//öâåò Ôèáî-óðîâíåé
extern int    LineWidthFIBO=2;              //øèðèíà ëèíèé Ôèáî-óðîâíåé
extern bool   Create_FIBO=true;             //ðàçðåøåíèå/çàïðåò íà îáðàçîâàíèå OBJ_FIBO (Ôèáî-óðîâíåé)
extern string Name_FIBO="FIBO_1";           //íàçâàíèå OBJ_FIBO (Ôèáî-óðîâíåé)
extern bool   Del_FIBO=false;               //çàïðåò/ðàçðåøåíèå íà óäàëåíèå çàäàííîãî OBJ_FIBO (Ôèáî-óðîâíåé)
int ArrShift;bool Active;string PipsTextName;double LastLevel,LastPrice,TradePoint;
static double lastLevel_0,lastLevel_23,lastLevel_38,lastLevel_50,lastLevel_62,lastLevel_100,lastLevel_162,
lastLevel_262,lastPrice_0,lastPrice_23,lastPrice_38,lastPrice_50,lastPrice_62,lastPrice_100,lastPrice_162,lastPrice_262;
int init()
{if(Digits==3||Digits==5)TradePoint=Point*10;else TradePoint=Point;LastPrice=0;
 lastLevel_0=0;lastLevel_23=0;lastLevel_38=0;lastLevel_50=0;lastLevel_62=0;lastLevel_100=0;lastLevel_162=0;lastLevel_262=0;
 lastPrice_0=0;lastPrice_23=0;lastPrice_38=0;lastPrice_50=0;lastPrice_62=0;lastPrice_100=0;lastPrice_162=0;lastPrice_262=0;Active=true;return(0);}
int deinit()
{if(UninitializeReason()==REASON_REMOVE){ObjectDelete(Name_FIBO);
  ObjectDelete(UniqueName1);PipsTextName=UniqueName1+" Pips";ObjectDelete(PipsTextName);
  ObjectDelete(UniqueName2);PipsTextName=UniqueName2+" Pips";ObjectDelete(PipsTextName);
  ObjectDelete(UniqueName3);PipsTextName=UniqueName3+" Pips";ObjectDelete(PipsTextName);
  ObjectDelete(UniqueName4);PipsTextName=UniqueName4+" Pips";ObjectDelete(PipsTextName);
  ObjectDelete(UniqueName5);PipsTextName=UniqueName5+" Pips";ObjectDelete(PipsTextName); 
  ObjectDelete(UniqueName6);PipsTextName=UniqueName6+" Pips";ObjectDelete(PipsTextName);
  ObjectDelete(UniqueName7);PipsTextName=UniqueName7+" Pips";ObjectDelete(PipsTextName);
  ObjectDelete(UniqueName8);PipsTextName=UniqueName8+" Pips";ObjectDelete(PipsTextName);
  lastLevel_0=0;lastLevel_23=0;lastLevel_38=0;lastLevel_50=0;lastLevel_62=0;lastLevel_100=0;lastLevel_162=0;lastLevel_262=0;
  lastPrice_0=0;lastPrice_23=0;lastPrice_38=0;lastPrice_50=0;lastPrice_62=0;lastPrice_100=0;lastPrice_162=0;lastPrice_262=0;}return(0);}
//+--------Custom indicator iteration function------------------+
int start()
{datetime c0,c2,cc0,cc2;double c1,c3,a,b,cp,cp2;
 switch(Period())
 {case PERIOD_M1: if(Period()==PERIOD_M1) {ArrShift=10;  break;}
  case PERIOD_M5: if(Period()==PERIOD_M5) {ArrShift=12;  break;}
  case PERIOD_M15:if(Period()==PERIOD_M15){ArrShift=15;  break;}
  case PERIOD_M30:if(Period()==PERIOD_M30){ArrShift=30;  break;}
  case PERIOD_H1: if(Period()==PERIOD_H1) {ArrShift=50;  break;}
  case PERIOD_H4: if(Period()==PERIOD_H4)	{ArrShift=100; break;}
  case PERIOD_D1: if(Period()==PERIOD_D1) {ArrShift=200; break;}
  case PERIOD_W1: if(Period()==PERIOD_W1) {ArrShift=500; break;}
  case PERIOD_MN1:if(Period()==PERIOD_MN1){ArrShift=1000;break;}}
 if(Del_FIBO)
 {if(ObjectFind(UniqueName1)==0)PriceSound_trendline(UniqueName1,LineColor1,Sound1,ArrShift,lastLevel_0,lastPrice_0);
  if(ObjectFind(UniqueName2)==0)PriceSound_trendline(UniqueName2,LineColor2,Sound2,ArrShift,lastLevel_23,lastPrice_23);
  if(ObjectFind(UniqueName3)==0)PriceSound_trendline(UniqueName3,LineColor3,Sound3,ArrShift,lastLevel_38,lastPrice_38);
  if(ObjectFind(UniqueName4)==0)PriceSound_trendline(UniqueName4,LineColor4,Sound4,ArrShift,lastLevel_50,lastPrice_50);
  if(ObjectFind(UniqueName5)==0)PriceSound_trendline(UniqueName5,LineColor5,Sound5,ArrShift,lastLevel_62,lastPrice_62);
  if(ObjectFind(UniqueName6)==0)PriceSound_trendline(UniqueName6,LineColor6,Sound6,ArrShift,lastLevel_100,lastPrice_100);
  if(ObjectFind(UniqueName7)==0)PriceSound_trendline(UniqueName7,LineColor7,Sound7,ArrShift,lastLevel_162,lastPrice_162);
  if(ObjectFind(UniqueName8)==0)PriceSound_trendline(UniqueName8,LineColor8,Sound8,ArrShift,lastLevel_262,lastPrice_262);
  if(ObjectFind(Name_FIBO)==0)ObjectDelete(Name_FIBO);return(0);}
 if(ObjectFind(Name_FIBO)!=0&&Create_FIBO){cp=Close[0]+(10+ArrShift)*TradePoint;cp2=cp+ArrShift*TradePoint;
  ObjectCreate(Name_FIBO,OBJ_FIBO,0,Time[25],cp,Time[0],cp2);ObjectSet(Name_FIBO,OBJPROP_COLOR,FIBOColor);
  ObjectSet(Name_FIBO,OBJPROP_LEVELCOLOR,FIBOlevelsColor);ObjectSet(Name_FIBO,OBJPROP_LEVELWIDTH,LineWidthFIBO);} 
 else if((ObjectFind(Name_FIBO)==0&&!Create_FIBO)||ObjectFind(Name_FIBO)==0)
 {if(ObjectFind(Name_FIBO)==0&&!Create_FIBO)
  {ObjectSet(Name_FIBO,OBJPROP_COLOR,FIBOColor);ObjectSet(Name_FIBO,OBJPROP_LEVELCOLOR,FIBOlevelsColor);
   ObjectSet(Name_FIBO,OBJPROP_LEVELWIDTH,LineWidthFIBO);}
 c0=ObjectGet(Name_FIBO,0);c1=ObjectGet(Name_FIBO,1);c2=ObjectGet(Name_FIBO,2);c3=ObjectGet(Name_FIBO,3);}
 else if(ObjectFind(Name_FIBO)!=0){Alert("No Fibo - ",Name_FIBO," !");return(0);}
 a=c3-c1;if(c2>c0){cc0=c0;cc2=c2;}else if(c2<c0){cc0=c2;cc2=c0;}else if(c2==c0)return(0);
 if(ObjectFind(UniqueName1)!=0)
 {ObjectCreate(UniqueName1,OBJ_TREND,0,cc0,c3,cc2,c3);ObjectSetText(UniqueName1,"Price alert level1",0);
  ObjectSet(UniqueName1,OBJPROP_COLOR,LineColor1);ObjectSet(UniqueName1,OBJPROP_WIDTH,LineWidth1);}
 if(ObjectFind(UniqueName1)==0) 
 {ObjectMove(UniqueName1,0,cc0,c3);ObjectMove(UniqueName1,1,cc2,c3);
  PriceSound_trendline(UniqueName1,LineColor1,Sound1,ArrShift,lastLevel_0,lastPrice_0);} 
 if(ObjectFind(UniqueName2)!=0){b=c3-0.236*a;
  ObjectCreate(UniqueName2,OBJ_TREND,0,cc0,b,cc2,b);ObjectSetText(UniqueName2,"Price alert level2",0);
  ObjectSet(UniqueName2,OBJPROP_COLOR,LineColor2);ObjectSet(UniqueName2,OBJPROP_WIDTH,LineWidth2);}
 if(ObjectFind(UniqueName2)==0) 
 {b=c3-0.236*a;ObjectMove(UniqueName2,0,cc0,b);ObjectMove(UniqueName2,1,cc2,b);
  PriceSound_trendline(UniqueName2,LineColor2,Sound2,ArrShift,lastLevel_23,lastPrice_23);} 
 if(ObjectFind(UniqueName3)!=0){b=c3-0.382*a;
  ObjectCreate(UniqueName3,OBJ_TREND,0,cc0,b,cc2,b);ObjectSetText(UniqueName3,"Price alert level3",0);
  ObjectSet(UniqueName3,OBJPROP_COLOR,LineColor3);ObjectSet(UniqueName3,OBJPROP_WIDTH,LineWidth3);}
 if(ObjectFind(UniqueName3)==0) 
 {b=c3-0.382*a;ObjectMove(UniqueName3,0,cc0,b);ObjectMove(UniqueName3,1,cc2,b);
  PriceSound_trendline(UniqueName3,LineColor3,Sound3,ArrShift,lastLevel_38,lastPrice_38);} 
 if(ObjectFind(UniqueName4)!=0){b=c3-0.5*a;
  ObjectCreate(UniqueName4,OBJ_TREND,0,cc0,b,cc2,b);ObjectSetText(UniqueName4,"Price alert level",0);
  ObjectSet(UniqueName4,OBJPROP_COLOR,LineColor4);ObjectSet(UniqueName4,OBJPROP_WIDTH,LineWidth4);}
 if(ObjectFind(UniqueName4)==0) 
 {b=c3-0.5*a;ObjectMove(UniqueName4,0,cc0,b);ObjectMove(UniqueName4,1,cc2,b);
  PriceSound_trendline(UniqueName4,LineColor4,Sound4,ArrShift,lastLevel_50,lastPrice_50);} 
 if(ObjectFind(UniqueName5)!=0){b=c3-0.618*a;
  ObjectCreate(UniqueName5,OBJ_TREND,0,cc0,b,cc2,b);ObjectSetText(UniqueName5,"Price alert level5",0);
  ObjectSet(UniqueName5,OBJPROP_COLOR,LineColor5);ObjectSet(UniqueName5,OBJPROP_WIDTH,LineWidth5);}
 if(ObjectFind(UniqueName5)==0) 
 {b=c3-0.618*a;ObjectMove(UniqueName5,0,cc0,b);ObjectMove(UniqueName5,1,cc2,b);
  PriceSound_trendline(UniqueName5,LineColor5,Sound5,ArrShift,lastLevel_62,lastPrice_62);} 
 if(ObjectFind(UniqueName6)!=0)
 {ObjectCreate(UniqueName6,OBJ_TREND,0,cc0,c1,cc2,c1);ObjectSetText(UniqueName6,"Price alert level6",0);
  ObjectSet(UniqueName6,OBJPROP_COLOR,LineColor6);ObjectSet(UniqueName6,OBJPROP_WIDTH,LineWidth6);} 
 if(ObjectFind(UniqueName6)==0) 
 {ObjectMove(UniqueName6,0,cc0,c1);ObjectMove(UniqueName6,1,cc2,c1);
  PriceSound_trendline(UniqueName6,LineColor6,Sound6,ArrShift,lastLevel_100,lastPrice_100);}
 if(ObjectFind(UniqueName7)!=0){b=c3-1.618*a;
  ObjectCreate(UniqueName7,OBJ_TREND,0,cc0,b,cc2,b);ObjectSetText(UniqueName7,"Price alert level7",0);
  ObjectSet(UniqueName7,OBJPROP_COLOR,LineColor7);ObjectSet(UniqueName7,OBJPROP_WIDTH,LineWidth7);}
 if(ObjectFind(UniqueName7)==0) 
 {b=c3-1.618*a;ObjectMove(UniqueName7,0,cc0,b);ObjectMove(UniqueName7,1,cc2,b);
  PriceSound_trendline(UniqueName7,LineColor7,Sound7,ArrShift,lastLevel_162,lastPrice_162);} 
 if(ObjectFind(UniqueName8)!=0){b=c3-2.618*a;
  ObjectCreate(UniqueName8,OBJ_TREND,0,cc0,b,cc2,b);ObjectSetText(UniqueName8,"Price alert level8",0);
  ObjectSet(UniqueName8,OBJPROP_COLOR,LineColor8);ObjectSet(UniqueName8,OBJPROP_WIDTH,LineWidth8);}
 if(ObjectFind(UniqueName8)==0) 
 {b=c3-2.618*a;ObjectMove(UniqueName8,0,cc0,b);ObjectMove(UniqueName8,1,cc2,b);
  PriceSound_trendline(UniqueName8,LineColor8,Sound8,ArrShift,lastLevel_262,lastPrice_262);}return(0);}
//+-------------------------------------------------------------+
void PriceSound_trendline(string UniqueName,color LineColor,string Sound,int arrShift,double lastLevel,double lastPrice)
{PipsTextName=StringConcatenate(UniqueName," ","Pips");ArrShift=arrShift;LastLevel=lastLevel;LastPrice=lastPrice;
 if(ObjectFind(PipsTextName)==-1){double cp=LastLevel;if(cp==0)cp=Close[0]+(10+ArrShift)*TradePoint;
    ObjectCreate(PipsTextName,OBJ_TEXT,0,Time[0],cp);}
 ObjectSet(PipsTextName,OBJPROP_TIME1,Time[0]);double newlevel=ObjectGetValueByShift(UniqueName,0);
 if(Active){ObjectSet(UniqueName,OBJPROP_COLOR,LineColor);ObjectSetText(UniqueName,"Price sound level - Active",0);
  double Pips=MathAbs(NormalizeDouble((newlevel-Close[0])/TradePoint,Digits));
  if(Digits==3||Digits==5)ObjectSetText(PipsTextName,DoubleToStr(Pips,1),14,"Terminal",LineColor);
  else ObjectSetText(PipsTextName,DoubleToStr(Pips,0),14,"Terminal",LineColor);}
 if(Close[0]>newlevel)ObjectSet(PipsTextName,OBJPROP_PRICE1,newlevel-ArrShift*TradePoint);
 if(Close[0]<newlevel)ObjectSet(PipsTextName,OBJPROP_PRICE1,newlevel+ArrShift*TradePoint);
 if(LastLevel!=newlevel){LastLevel=newlevel;LastPrice=0;
  ObjectSetText(UniqueName,"Price sound level - Active",0);Active=true;}
 if(Active&&LastPrice!=0&&((LastPrice<LastLevel&&Close[0]>=LastLevel)||(LastPrice>LastLevel&&Close[0]<=LastLevel)))
 {if(Sound_Play)PlaySound(Sound);else Active=false;ObjectSetText(PipsTextName,"",14,"Terminal",LineColor);
 ObjectSetText(UniqueName,"Price sound level - Inactive",0);ObjectSet(UniqueName,OBJPROP_COLOR,Blue);}
 if(UniqueName==UniqueName1){lastLevel_0=LastLevel;lastPrice_0=Close[0];}
 if(UniqueName==UniqueName2){lastLevel_23=LastLevel;lastPrice_23=Close[0];}
 if(UniqueName==UniqueName3){lastLevel_38=LastLevel;lastPrice_38=Close[0];}
 if(UniqueName==UniqueName4){lastLevel_50=LastLevel;lastPrice_50=Close[0];}
 if(UniqueName==UniqueName5){lastLevel_62=LastLevel;lastPrice_62=Close[0];}
 if(UniqueName==UniqueName6){lastLevel_100=LastLevel;lastPrice_100=Close[0];}
 if(UniqueName==UniqueName7){lastLevel_162=LastLevel;lastPrice_162=Close[0];}
 if(UniqueName==UniqueName8){lastLevel_262=LastLevel;lastPrice_262=Close[0];}}
//+-------------------------------------------------------------+



Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---