Miscellaneous
0
Views
0
Downloads
0
Favorites
arrows&curves lucas1
//+------------------------------------------------------------------+
//| lukas1 arrows & curves.mq4 |
//| Èäåÿ from Silver, Ramdass åùå è Lukas1 ðóêó ïðèëîæèë |
//| ..... v3e |
//| Ãëîáàëüûå ïåðåìåííûå åñòü. ïî íèì òîðãóåò ñîâåòíèê Rosa |
//+------------------------------------------------------------------+
#property copyright "Lukas1+Silver+CrazyChart"
#property link "http://viac.ru/"
//----
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 RoyalBlue
#property indicator_color2 OrangeRed
#property indicator_color3 Green
#property indicator_color4 Green
//---- input parameters
extern int SSP = 19; //ïåðèîä ëèíåéíîãî ðàçâîðîòà èíäèêàòîðà
extern int RISK = 3;
extern int CountBars = 18250; //ðàñ÷åòíûé ïåðèîä - äëÿ 30 ìèí áîëüøå ãîäà
extern double SkyCh = 23.6;
//----
int Shift = 0;
int TSP = 9;
int PrevAlertTime;
double smin, smax;
//---- buffers
double val1[]; // áóôåð äëÿ áàé
double val2[]; // áóôåð äëÿ ñåëë
double Sky_BufferH[];
double Sky_BufferL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 233); // arrowbuy
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 234); // arrowsell
SetIndexBuffer(0, val1); // èíäåêñ áóôåðà äëÿ buy
SetIndexBuffer(1, val2); // èíäåêñ áóôåðà äëÿ sell
//----
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(2, Sky_BufferH);
SetIndexShift(2, Shift);
SetIndexLabel(2, "Sky-channel High");
//----
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(3, Sky_BufferL);
SetIndexShift(3, Shift);
SetIndexLabel(3, "Sky-channel Low");
//----
if(CountBars >= Bars)
CountBars=Bars; // CountBars ðàâíî êîëè÷åñòâó áàðîâ íà ãðàôèêå
// äëÿ êðèâîé "0"- ñàìî ðèñîâàíèå; íå ðàñ÷èòûâàòü ïåðâûå SSP áàðîâ (ñíà÷àëà SSP=9)
SetIndexDrawBegin(0, Bars - CountBars + SSP);
// äëÿ êðèâîé "1"- ñàìî ðèñîâàíèå; íå ðàñ÷èòûâàòü ïåðâûå SSP áàðîâ (ñíà÷àëà SSP=9)
SetIndexDrawBegin(1, Bars - CountBars + SSP);
SetIndexDrawBegin(2, SSP + Shift - 1);
SetIndexDrawBegin(3, SSP + Shift - 1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| SilverTrend_Signal |
//+------------------------------------------------------------------+
int start()
{
int i;
int shift; // ðàñ÷åòíîå ñìåùåíèå
int counted_bars = IndicatorCounted(); // òåêóùèé áàð äëÿ ðàñ÷åòà èíäèêàòîðà
int i1;
int i2;
int K, k;
double Range, AvgRange, SsMax, SsMin, price;
bool uptrend, old;
double high, low;
//----
if(Bars <= SSP + 1)
return(0);
//---- initial zero
if(counted_bars < SSP + 1)
{
for(i = 1; i <= SSP; i++)
val1[CountBars-i] = 0.0; // îáíóëèëè ìàññèâ val1
//----
for(i = 1; i <= SSP; i++)
val2[CountBars-i]=0.0; // îáíóëèëè ìàññèâ val2
//----
for(i = 1; i <= SSP; i++)
{
Sky_BufferH[Bars-i] = 0;
Sky_BufferL[Bars-i] = 0;
}
}
GlobalVariableSet("xSELL", 0); // çàäàëè ñóùåñòâîâàíèå è îáíóëèëè xSELL=0
GlobalVariableSet("xBUY", 0); // çàäàëè ñóùåñòâîâàíèå è îáíóëèëè xBUY =0
// ñòàíäàðòíûå âû÷èñëåíèÿ äî 0-ãî áàðà
i = Bars - SSP;
//----
if(counted_bars > SSP)
i = Bars - counted_bars - 1;
//----
while(i >= 0)
{
high = High[i];
low = Low[i];
k = i - 1 + SSP;
//----
while(k >= i)
{
price = High[k];
//----
if(high < price)
high = price;
price = Low[k];
//----
if(low > price)
low = price;
k--;
} // âñå ïîñ÷èòàëè - çàïèñûâàåì çíà÷åíèÿ òî÷êè â ìàññèâ èíäèêàòîðà
Sky_BufferL[i+Shift] = low + (high - low)*SkyCh / 100;
Sky_BufferH[i+Shift] = high - (high - low)*SkyCh / 100;
i--; // äâèãàåì ñ÷åò÷èê
}
i = Shift - 1; // Ñ÷èòàåì òî÷êè ñäâèãà - ñïðàâà îò íóëåâîãî i=Shift-1;
//----
while(i >= 0)
{
high = High[0];
low = Low[0];
k = SSP - Shift - 1 + i; // êàæäûé ñëåäóþùèé óìåíüøàåò ïåðèîä k=SSP-Shift+i;
//----
while(k >= 0)
{
price = High[k];
//----
if(high < price)
high = price;
price = Low[k];
//----
if(low > price)
low = price;
k--;
} // çàïèñûâàåì çíà÷åíèÿ â ìàññèâ
Sky_BufferL[i] = low + (high - low)*SkyCh / 100;
Sky_BufferH[i] = high - (high - low)*SkyCh / 100;
i--;
}
K = 33 - RISK;
//----
for(shift = CountBars - SSP; shift >= 0; shift--) // óìåíüø çíà÷åíèå shift íà 1 çà ïðîõîä;
{
Range = 0;
AvgRange = 0;
//----
for(i1 = shift; i1 <= shift + SSP; i1++) // óâåëè÷ "i1" îò shift äî (shift+SSP)
// ñðåäíèå êîëåáàíèÿ òåêóùèõ öåí
AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]);
Range = AvgRange / (SSP + 1); // äèàïàçîí êîëåáàíèÿ òåêóùèõ öåí
SsMax = High[shift]; // çàäàòü SsMax
SsMin = Low[shift]; // çàäàòü SsMin
//----
for(i2 = shift; i2 <= shift + SSP - 1; i2++) // óâåëè÷ "i2" îò shift äî (shift+SSP)
{
price = High[i2]; // çàäàòü price
//----
if(SsMax < price)
SsMax = price; // ïîäòÿíóëè SsMax äî óðîâíÿ High[i2]
price = Low[i2];
//----
if(SsMin >= price)
SsMin = price; // ïîíèçèëè SsMin äî óðîâíÿ Low[i2]
}
smin = SsMin + (SsMax - SsMin)*K / 100; // smin âûøå SsMin ñ ó÷åòîì êîýôô.ðèñêà
smax = SsMax - (SsMax - SsMin)*K / 100; // smax íèæå SsMax ñ ó÷åòîì êîýôô.ðèñêà
val1[shift] = 0; // áóôåð äëÿ áàé
val2[shift] = 0; // áóôåð äëÿ ñåëë
//----
if(Close[shift] < smin)
uptrend = false;
//----
if(Close[shift] > smax)
uptrend = true;
//----
if(uptrend != old && uptrend == true)
{
val1[shift] = Low[shift] - Range*0.5; // åñëè óñëîâèÿ âûïîëíåíû òî âû÷èñëÿåì val1
//----
if(shift == 0)
GlobalVariableSet("xBUY",1);
}
//----
if(uptrend != old && uptrend == false)
{
val2[shift] = High[shift] + Range*0.5; // åñëè óñëîâèÿ âûïîëíåíû òî âû÷èñëÿåì val2
//----
if(shift == 0)
GlobalVariableSet("xSELL",1);
}
old=uptrend;
}
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
---