//+------------------------------------------------------------------+ //| lukas1 arrows & curves.mq4 v.28 //| Copyright © 2007, Ëóêàøóê Âèêòîð Ãåííàäüåâè÷ aka lukas1 //+------------------------------------------------------------------+ //1. Äëÿ ëèíèé ââåäåíà çàäåðæêà, ïðèâîäÿùàÿ ê ñìåùåíèþ âïðàâî ("relay") //2. Ïîÿâèëèñü êðåñòèêè, îáîçíà÷àþùèå çàêðûòèå ñäåëêè //3. Ïîâòîðíûå îðäåðà â òîì æå íàïðàâëåíèè îòìå÷åíû òàê æå êðåñòèêàìè #property copyright "Copyright © 2007, MetaQuotes Software Corp.+lukas1" #property link "lukas1@ngs.ru" //---- #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 DeepSkyBlue #property indicator_color2 Red #property indicator_color3 Orange #property indicator_color4 Orange #property indicator_color5 MediumSeaGreen #property indicator_color6 MediumSeaGreen #property indicator_color7 DeepSkyBlue #property indicator_color8 Red #property indicator_width1 1 #property indicator_width2 1 #property indicator_width7 2 #property indicator_width8 2 //---- input parameters extern int SSP = 20; //ïåðèîä ëèíåéíîãî ðàçâîðîòà èíäèêàòîðà extern int Channel = 0; //óìåíüøåíèå äèàïàçîíà êàíàëà. Ä.á. â äèàïàçîíå 0-50 extern int Ch_Stop = 30; //óìåíüøåíèå ñòîïîâîãî êàíàëà (ñóììèðóåòñÿ ñ îñíîâíûì) extern int relay = 10; //ñìåùåíèå ëèíèé âãëóáü èñòîðèè íà 4 áàðà extern int CBars = 2000; //ðàñ÷åòíûé ïåðèîä int i; double high, low, smin, smax, smin2, smax2; double val1[]; // áóôåð äëÿ áàé double val2[]; // áóôåð äëÿ ñåëë double BufferH[]; double BufferL[]; double BufferHS[]; double BufferLS[]; double valX1[],valX2[]; // áóôåð äëÿ X bool uptrend, old, uptrend2, old2; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexStyle(0, DRAW_ARROW,0,1); SetIndexArrow(0, 233); // ñòðåëêà äëÿ áàé SetIndexBuffer(0, val1); // èíäåêñ áóôåðà äëÿ áàé SetIndexLabel(0, "BUY"); SetIndexDrawBegin(0, Bars-CBars-2*SSP); SetIndexStyle(1, DRAW_ARROW,0,1); SetIndexArrow(1, 234); // ñòðåëêà äëÿ ñåëë SetIndexBuffer(1, val2); // èíäåêñ áóôåðà äëÿ ñåëë SetIndexLabel(1, "SELL"); SetIndexDrawBegin(1, Bars-CBars-2*SSP); SetIndexStyle(2, DRAW_LINE,0,1); SetIndexBuffer(2, BufferH); SetIndexLabel(2, "BUY from here"); SetIndexDrawBegin(2, Bars-CBars-2*SSP); SetIndexStyle(3, DRAW_LINE,0,1); SetIndexBuffer(3, BufferL); SetIndexLabel(3, "SELL from here"); SetIndexDrawBegin(3, Bars-CBars-2*SSP); SetIndexStyle(4, DRAW_LINE,0,1); SetIndexBuffer(4, BufferHS); SetIndexLabel(4, "BuyStop"); SetIndexDrawBegin(4, Bars-CBars-2*SSP); SetIndexStyle(5, DRAW_LINE,0,1); SetIndexBuffer(5, BufferLS); SetIndexLabel(5, "SellStop"); SetIndexDrawBegin(5, Bars-CBars-2*SSP); SetIndexStyle(6, DRAW_ARROW,0,2); SetIndexArrow(6, 251); // êðåñòèê ñèíèé SetIndexBuffer(6, valX1); // èíäåêñ áóôåðà äëÿ êðåñòèêà SetIndexDrawBegin(6, Bars-CBars-2*SSP); SetIndexStyle(7, DRAW_ARROW,0,2); SetIndexArrow(7, 251); // êðåñòèê êðàñíûé SetIndexBuffer(7, valX2); // èíäåêñ áóôåðà äëÿ êðåñòèêà SetIndexDrawBegin(7, Bars-CBars-2*SSP); //---- return(0); } //+------------------------------------------------------------------+ //| Calculation of Channel lines //+------------------------------------------------------------------+ int start() { int counted_bars = IndicatorCounted(); //---- ïîñëåäíèé ïîñ÷èòàííûé áàð áóäåò ïåðåñ÷èòàí if(counted_bars > 0) counted_bars--; //---- if(Bars <= SSP + 1) return(0); //---- uptrend =false; old =false; uptrend2 =false; old2 =false; GlobalVariableSet("goSELL", 0); // çàäàëè ñóùåñòâîâàíèå è îáíóëèëè goSELL=0 GlobalVariableSet("goBUY", 0); // çàäàëè ñóùåñòâîâàíèå è îáíóëèëè goBUY =0 GlobalVariableSet("stSELL", 0); // çàäàëè ñóùåñòâîâàíèå è îáíóëèëè stSELL=0 GlobalVariableSet("stBUY", 0); // çàäàëè ñóùåñòâîâàíèå è îáíóëèëè stBUY =0 //---- for(i = CBars - SSP; i >= 0; i--) // óìåíüø çíà÷åíèå shift íà 1 çà ïðîõîä; { high = High[Highest(Symbol(),0,MODE_HIGH,SSP,i+relay)]; low = Low[Lowest(Symbol(),0,MODE_LOW,SSP,i+relay)]; smax = high - (high - low)*Channel / 100; // smax íèæå high ñ ó÷åòîì êîýôô.Channel smin = low + (high - low)*Channel / 100; // smin âûøå low ñ ó÷åòîì êîýôô.Channel smax2= high - (high - low)*(Channel+Ch_Stop) / 100; // smax íèæå high ñ ó÷åòîì êîýôô.Chan+Ch_Stop smin2= low + (high - low)*(Channel+Ch_Stop) / 100; // smin âûøå low ñ ó÷åòîì êîýôô.Channel val1[i] = 0; val2[i] = 0; valX1[i] = 0; valX2[i] = 0; //----------------------- if(Close[i] < smin && Close[i] < smax && uptrend2 == true && i!=0 ) // âûêëþ÷åíî ìåðöàíèå ñòðåëîê (i!=0) { uptrend = false; } if(Close[i] > smax && Close[i] > smin && uptrend2 == false && i!=0 ) // âûêëþ÷åíî ìåðöàíèå ñòðåëîê (i!=0) { uptrend = true; } if((Close[i] > smax2 || Close[i] > smin2) && uptrend == false && i!=0 ) // âûêëþ÷åíî ìåðöàíèå ñòðåëîê (i!=0) { uptrend2 = false; } if((Close[i] < smin2 || Close[i] < smax2) && uptrend == true && i!=0 ) // âûêëþ÷åíî ìåðöàíèå ñòðåëîê (i!=0) { uptrend2 = true; } //---- ïîâòîðíûé ñèãíàë íå ïåðåêëþ÷àåò ðåæèìû "uptrend" //---- íî èñïîëüçóåòñÿ ñèãíàë ïî êðåñòèêàì if(Close[i] < smin && Close[i] < smax && uptrend2 == false && i!=0 ) // âûêëþ÷åíî ìåðöàíèå ñòðåëîê (i!=0) { val2[i] = low; // åñëè óñëîâèÿ âûïîëíåíû òî ðèñóåì val2 if(i == 0) GlobalVariableSet("goSELL",1); uptrend2 = true; } //---- ïîâòîðíûé ñèãíàë íå ïåðåêëþ÷àåò ðåæèìû "uptrend" //---- íî èñïîëüçóåòñÿ ñèãíàë ïî êðåñòèêàì if(Close[i] > smax && Close[i] > smin && uptrend2 == true && i!=0 ) // âûêëþ÷åíî ìåðöàíèå ñòðåëîê (i!=0) { val1[i] = high; // åñëè óñëîâèÿ âûïîëíåíû òî ðèñóåì val1 if(i == 0) GlobalVariableSet("goBUY",1); uptrend2 = false; } //---- if(uptrend != old && uptrend == false) { val2[i] = low; // åñëè óñëîâèÿ âûïîëíåíû òî ðèñóåì val1 if(i == 0) GlobalVariableSet("goSELL",1); } if(uptrend != old && uptrend == true) { val1[i] = high; // åñëè óñëîâèÿ âûïîëíåíû òî ðèñóåì val2 if(i == 0) GlobalVariableSet("goBUY",1); } //---- if(uptrend2 != old2 && uptrend2 == true) { valX1[i] = smax2; // åñëè óñëîâèÿ âûïîëíåíû òî ðèñóåì valX1 if(i == 0) GlobalVariableSet("stBUY",1); } if(uptrend2 != old2 && uptrend2 == false) { valX2[i] = smin2; // åñëè óñëîâèÿ âûïîëíåíû òî ðèñóåì valX2 if(i == 0) GlobalVariableSet("stSELL",1); } //----------------------- old=uptrend; old2=uptrend2; //----------------------- BufferH[i]=smax; BufferL[i]=smin; BufferHS[i]=smax2; BufferLS[i]=smin2; } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: