//+------------------------------------------------------------------+ //| TrendLineRange.mq4 | //| Ñîêðàòèëèí Àëåêñåé | //| sokratilin@brocompany.com | //+------------------------------------------------------------------+ #property copyright "Ñîêðàòèëèí Àëåêñåé" #property link "sokratilin@brocompany.com" #property indicator_chart_window //---- input parameters extern int PointsRange1=20; //1-îå ðàññòîÿíèå äî òðåíäîâîé ëèíèè extern int PointsRange2=10; //2-îå ðàññòîÿíèå äî òðåíäîâîé ëèíèè extern int PointsRange3=5; //3-åå ðàññòîÿíèå äî òðåíäîâîé ëèíèè extern string IndexTrendLine; //Èíäåêñ òðåíäîâîé ëèíèè â ñïèñêå îáúåêòîâ //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { static int S1,S2,S3; //Ñ÷åò÷èêè ñèãíàëîâ string TrendLine="Trendline "+IndexTrendLine; //Äîáàâëåíèå èíäåêñà òåíäîâîé ëèíèè ê "Trendline" double Price=Bid; //Òåêóùàÿ öåíà double TrendLineValue=NormalizeDouble(ObjectGetValueByShift(TrendLine,0),Digits); //Òåêóùåå çíà÷åíèå òðåíäîâîé ëèíèè int Range=MathAbs((NormalizeDouble(Price,Digits)-TrendLineValue)*MathPow(10,Digits)); //Âû÷èñëåíèå ðàññòîÿíèÿ ìåæäó òåêóùåé öåíîé è òðåíäîâîé ëèíèåé Comment("Range=",Range); if (Range<=PointsRange1 && Range>PointsRange2 && S1==0) //Åñëè òåêóùåå ðàñññòîÿíèå <= ðàññòîÿíèÿ1 è > ðàññòîÿíèÿ2 { //ñèãíàë íà ýòîì ïðîìåæóòêå íå ïîäàâàëñÿ, òî ïîäàåì îäèí ñèãíàë. Alert("Range=",Range," Price=",Price," TrendLine=",TrendLineValue); S1=1; S2=0; S3=0; //Îáíóëåíèå ñ÷åò÷èêîâ } else if (Range<=PointsRange2 && Range>PointsRange3 && S2==0) //Åñëè òåêóùåå ðàñññòîÿíèå <= ðàññòîÿíèÿ2 è > ðàññòîÿíèÿ3 { //ñèãíàë íà ýòîì ïðîìåæóòêå íå ïîäàâàëñÿ, òî ïîäàåì îäèí ñèãíàë. Alert("Range=", Range, " Price=", Price, " TrendLine=",TrendLineValue); S1=0; S2=1; S3=0; //Îáíóëåíèå ñ÷åò÷èêîâ } else if (Range<=PointsRange3 && S3==0) //Åñëè òåêóùåå ðàñññòîÿíèå <= ðàññòîÿíèÿ3 { //ñèãíàë íà ýòîì ïðîìåæóòêå íå ïîäàâàëñÿ, òî ïîäàåì îäèí ñèãíàë. Alert("Range=", Range, " Price=", Price, " TrendLine=",TrendLineValue); S1=0; S2=0; S3=1; //Îáíóëåíèå ñ÷åò÷èêîâ } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen