Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
DTS-SHI_Channel_MTF
//+------------------------------------------------------------------+
//| SHI_Channel.mq4 |
//| Copyright © 2004, Shurka & Kevin |
//| MTF by Michel |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, Shurka & Kevin"
#property link ""
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
extern int Timeframe = 0;
extern int AllBars=240;
extern int BarsForFract=0;
double ExtMapBuffer1[];
int CurrentBar=0;
double Step=0;
int B1=-1,B2=-1;
int UpDown=0;
double P1=0,P2=0,PP=0;
int i=0,AB=300,BFF=0;
int ishift=0;
double iprice=0;
datetime T1,T2;
color Clr;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,164);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
if(Timeframe == 0) Timeframe = Period();
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
DelObj();
//----
return(0);
}
void DelObj()
{
ObjectDelete("TL1-"+Timeframe);
ObjectDelete("TL2-"+Timeframe);
ObjectDelete("MIDL-"+Timeframe);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
if ((AllBars==0) || (iBars(Symbol(),Timeframe)<AllBars)) AB=iBars(Symbol(),Timeframe); else AB=AllBars; //AB-êîëè÷åñòâî îáñ÷èòûâàåìûõ áàðîâ
if (BarsForFract>0)
BFF=BarsForFract;
else
{
switch (Timeframe)
{
case 1: BFF=12; Clr=Turquoise ;break;
case 5: BFF=48; Clr=SteelBlue ;break;
case 15: BFF=24; Clr=Lime ;break;
case 30: BFF=24; Clr=Silver ;break;
case 60: BFF=12; Clr=Magenta ;break;
case 240: BFF=15; Clr=Yellow ;break;
case 1440: BFF=10; Clr=DarkOrange ;break;
case 10080: BFF=6; Clr=Red ;break;
default: DelObj(); return(-1); break;
}
}
CurrentBar=2; //ñ÷èòàåì ñ òðåòüåãî áàðà, ÷òîáû ôðàêòàë "çàêðåïèëñÿ
B1=-1; B2=-1; UpDown=0;
while(((B1==-1) || (B2==-1)) && (CurrentBar<AB))
{
//UpDown=1 çíà÷èò ïåðâûé ôðàêòàë íàéäåí ñâåðõó, UpDown=-1 çíà÷èò ïåðâûé ôðàêòàë
//íàéäåí ñíèçó, UpDown=0 çíà÷èò ôðàêòàë åù¸ íå íàéäåí.
//Â1 è Â2 - íîìåðà áàðîâ ñ ôðàêòàëàìè, ÷åðåç íèõ ñòðîèì îïîðíóþ ëèíèþ.
//Ð1 è Ð2 - ñîîòâåòñòâåííî öåíû ÷åðåç êîòîðûå áóäåì ëèíèþ ïðîâîäèòü
if((UpDown<1) && (CurrentBar==iLowest(Symbol(),Timeframe,MODE_LOW,BFF*2+1,CurrentBar-BFF)))
{
if(UpDown==0) { UpDown=-1; B1=CurrentBar; P1=iLow(Symbol(),Timeframe,B1); }
else { B2=CurrentBar; P2=iLow(Symbol(),Timeframe,B2);}
}
if((UpDown>-1) && (CurrentBar==iHighest(Symbol(),Timeframe,MODE_HIGH,BFF*2+1,CurrentBar-BFF)))
{
if(UpDown==0) { UpDown=1; B1=CurrentBar; P1=iHigh(Symbol(),Timeframe,B1); }
else { B2=CurrentBar; P2=iHigh(Symbol(),Timeframe,B2); }
}
CurrentBar++;
}
if((B1==-1) || (B2==-1)) {DelObj(); return(-1);} // Çíà÷èò íå íàøëè ôðàêòàëîâ ñðåäè 300 áàðîâ 8-)
Step=(P2-P1)/(B2-B1);//Âû÷èñëèëè øàã, åñëè îí ïîëîæèòåëüíûé, òî êàíàë íèñõîäÿùèé
P1=P1-B1*Step; B1=0;//ïåðåñòàâëÿåì öåíó è ïåðâûé áàð ê íóëþ
//À òåïåðü îïîðíóþ òî÷êó ïðîòèâîïîëîæíîé ëèíèè êàíàëà.
ishift=0; iprice=0;
if(UpDown==1)
{
PP=iLow(Symbol(),Timeframe,2)-2*Step;
for(i=3;i<=B2;i++)
{
if(iLow(Symbol(),Timeframe,i)<PP+Step*i) { PP=iLow(Symbol(),Timeframe,i)-Step*i; }
}
if(iLow(Symbol(),Timeframe,0)<PP) {ishift=0; iprice=PP;}
if(iLow(Symbol(),Timeframe,1)<PP+Step) {ishift=1; iprice=PP+Step;}
if(iHigh(Symbol(),Timeframe,0)>P1) {ishift=0; iprice=P1;}
if(iHigh(Symbol(),Timeframe,1)>P1+Step) {ishift=1; iprice=P1+Step;}
}
else
{
PP=iHigh(Symbol(),Timeframe,2)-2*Step;
for(i=3;i<=B2;i++)
{
if(iHigh(Symbol(),Timeframe,i)>PP+Step*i) { PP=iHigh(Symbol(),Timeframe,i)-i*Step;}
}
if(iLow(Symbol(),Timeframe,0)<P1) {ishift=0; iprice=P1;}
if(iLow(Symbol(),Timeframe,1)<P1+Step) {ishift=1; iprice=P1+Step;}
if(iHigh(Symbol(),Timeframe,0)>PP) {ishift=0; iprice=PP;}
if(iHigh(Symbol(),Timeframe,1)>PP+Step) {ishift=1; iprice=PP+Step;}
}
//Òåïåðü ïåðåñòàâèì êîíå÷íóþ öåíó è áàð íà ÀÂ, ÷òîáû ëèíèè êàíàëà ðèñîâàëèñü ïîäëèííåå
P2=P1+AB*Step;
T1=iTime(Symbol(),Timeframe,B1);
T2=iTime(Symbol(),Timeframe,AB);
//Åñëè íå áûëî ïåðåñå÷åíèÿ êàíàëà, òî 0, èíà÷å ñòàâèì ïñèñó.
if(iprice!=0) ExtMapBuffer1[ishift]=iprice;
DelObj();
//Comment (PP,P1);
string Text = " Channel size = "+DoubleToStr(MathAbs(PP - P1)/Point,0)+" Slope = "+DoubleToStr(-Step/Point, 2);
if (PP<P1)
{
ObjectCreate("TL1-"+Timeframe,OBJ_TREND,0,T2,PP+Step*AB,T1,PP);
ObjectSet("TL1-"+Timeframe,OBJPROP_COLOR,Clr);
ObjectSet("TL1-"+Timeframe,OBJPROP_WIDTH,1);
ObjectSet("TL1-"+Timeframe,OBJPROP_STYLE,STYLE_SOLID);
ObjectSetText("TL1-"+Timeframe,Text);
ObjectCreate("TL2-"+Timeframe,OBJ_TREND,0,T2,P2,T1,P1);
ObjectSet("TL2-"+Timeframe,OBJPROP_COLOR,Clr);
ObjectSet("TL2-"+Timeframe,OBJPROP_WIDTH,1);
ObjectSet("TL2-"+Timeframe,OBJPROP_STYLE,STYLE_SOLID);
ObjectSetText("TL2-"+Timeframe,Text);
ObjectCreate("MIDL-"+Timeframe,OBJ_TREND,0,T2,(P2+PP+Step*AB)/2,T1,(P1+PP)/2);
ObjectSet("MIDL-"+Timeframe,OBJPROP_COLOR,Clr);
ObjectSet("MIDL-"+Timeframe,OBJPROP_WIDTH,1);
ObjectSet("MIDL-"+Timeframe,OBJPROP_STYLE,STYLE_DOT);
ObjectSetText("MIDL-"+Timeframe,Text);
}
if (PP>P1)
{
ObjectCreate("TL2-"+Timeframe,OBJ_TREND,0,T2,PP+Step*AB,T1,PP);
ObjectSet("TL2-"+Timeframe,OBJPROP_COLOR,Clr);
ObjectSet("TL2-"+Timeframe,OBJPROP_WIDTH,1);
ObjectSet("TL2-"+Timeframe,OBJPROP_STYLE,STYLE_SOLID);
ObjectSetText("TL2-"+Timeframe,Text);
ObjectCreate("TL1-"+Timeframe,OBJ_TREND,0,T2,P2,T1,P1);
ObjectSet("TL1-"+Timeframe,OBJPROP_COLOR,Clr);
ObjectSet("TL1-"+Timeframe,OBJPROP_WIDTH,1);
ObjectSet("TL1-"+Timeframe,OBJPROP_STYLE,STYLE_SOLID);
ObjectSetText("TL1-"+Timeframe,Text);
ObjectCreate("MIDL-"+Timeframe,OBJ_TREND,0,T2,(P2+PP+Step*AB)/2,T1,(P1+PP)/2);
ObjectSet("MIDL-"+Timeframe,OBJPROP_COLOR,Clr);
ObjectSet("MIDL-"+Timeframe,OBJPROP_WIDTH,1);
ObjectSet("MIDL-"+Timeframe,OBJPROP_STYLE,STYLE_DOT);
ObjectSetText("MIDL-"+Timeframe,Text);
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
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
---