<code>
//|------------------------------------------------------------------|
//| Indicator Arrow.mq4|
//| Copyright © 2013, Mr.SilverKZ |
//| SilverKZ@mail.kz |
//| |
//|
//| |
//| |
//| свечи в коде идут 3-2-1-0 |
//| |
//+------------------------------------------------------------------+
#property copyright "SilverKZ"
#property description " * * * * * * "
#property description " Ищет разворотный бар по Вильямсу "
#property description " "
#property description " * poruchik * 27.11.16"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 clrRed
#property indicator_color2 clrBlue
#property indicator_color3 clrRed
#property indicator_color4 clrBlue
double buf_1[];
double buf_2[];
double buf_3[];
double buf_4[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,buf_1);
SetIndexBuffer(1,buf_2);
SetIndexBuffer(2,buf_3);
SetIndexBuffer(3,buf_4);
SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 1);
SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 1);
SetIndexArrow (0,233);
SetIndexArrow (1,234);
SetIndexStyle (2,DRAW_ARROW, STYLE_SOLID, 2);
SetIndexStyle (3,DRAW_ARROW, STYLE_SOLID, 2);
SetIndexArrow (2,171);
SetIndexArrow (3,171);
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexEmptyValue(2,0.0);
SetIndexEmptyValue(3,0.0);
return(0);
}
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике |
//+------------------------------------------------------------------+
int start()
{
if (Bars <= 100) return(0);
int ExtCountedBars = IndicatorCounted();
if (ExtCountedBars < 0) return(-1);
if (ExtCountedBars > 0) ExtCountedBars--;
for (int i=Bars-ExtCountedBars-1; i>=0; i--)
{
bool DOWN = Close[i+0] < Open[i+0] && Close[i+1] > Open[i+1] && High[i+0]> High[i+1]&& Close[i+0] < ((High[i+0]+Low[i+0])/2);
bool UP = Close[i+0] > Open[i+0] && Close[i+1] < Open[i+1] && Low[i+0]< Low[i+1] && Close[i+0] > ((High[i+0]+Low[i+0])/2);
if (UP) buf_1[i+0] = Low[i+0]-3*Point;
if (UP) buf_3[i+1] = Low[i+1]-2*Point ;
//if (UP) buf_3[i+3] = High[i+3]+2*Point;
if (DOWN) buf_2[i+0] = High[i+0]+3*Point;
if (DOWN) buf_4[i+1] = High[i+1]+2*Point ;
// if (DOWN) buf_4[i+3] = High[i+3]+2*Point;
}
return(0);
}
// ---- end
//Бар бычьего разворота показывает более низкий минимум относительно предыдущего бара и закрывается выше своей середины. Это говорит о том, что в начале формирования бара силы были на стороне медведей, но затем власть перешла к быкам.
//В противоположность бычьему бару, также существует бар медвежьего разворота. Данный бар показывает новый максимум и закрывается в своей нижней половине. То есть, вначале правили быки, но под конец медведи одержали победу
//http://tradelikeapro.ru/torgovyiy-haos-profitunity/</code>
<code>
//+------------------------------------------------------------------+
//| Two_Fractals.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern bool ShowSignal = true;
extern bool DrawRecs=true;
extern string note0="Минимальное тело свечи в пп";
extern int min_candle = 3;
extern string note1="Разница между длиной теней в пп";
extern int Razn = 3;
extern string note2="Цвет и толщина прямоугольника";
extern color BuyColor = Red;
extern color SellColor = PowderBlue;
extern color NoSignalColor = Orange;
extern int RectangleWidth = 2;
extern string note3=" =0 для просмотра всей истории";
extern int Bars_Count = 600;
extern string SoundFile = "Trumpet";
extern string sep0 = "";
extern string note4 = "Следить за:";
extern string pair00 = "EURUSD";
extern string pair01 = "GBPUSD";
extern string pair02 = "NZDUSD";
extern string pair03 = "USDCHF";
extern string pair04 = "USDJPY";
extern string pair05 = "USDCAD";
extern string pair06 = "AUDUSD";
extern string pair07 = "EURGBP";
extern string pair08 = "EURCHF";
extern string pair09 = "EURJPY";
extern string pair10 = "GBPCHF";
extern string pair11 = "GBPJPY";
extern string pair12 = "";
extern string pair13 = "";
extern string pair14 = "";
extern string pair15 = "";
extern string pair16 = "";
extern string pair17 = "";
extern string pair18 = "";
extern string pair19 = "";
extern string pair20 = "";
extern string sep1= "";
extern string note5 = "Проверять ТФ:";
extern string TF1 = "1";
extern string TF2 = "5";
extern string TF3 = "15";
extern string TF4 = "30";
extern string TF5 = "60";
extern string TF6 = "240";
extern string TF7 = "1440";
extern string TF8 = "10080";
extern string TF9 = "43200";
string pairs[21], TFr[9];
int keys[20][9];
int delta, uf, lf;
double l_shadow, u_shadow;
bool HistoryViewer, draw, Play;
double high5, high4, high3, high2, high1, low5, low4, low3, low2, low1, open3, close3;
string signal, symbol;
color BS_color;
//+------------------------------------------------------------------+
int init() {
delta=Razn*Point;
if(Bars_Count==0) Bars_Count=Bars;
pairs[0]=pair00;
pairs[1]=pair01;
pairs[2]=pair02;
pairs[3]=pair03;
pairs[4]=pair04;
pairs[5]=pair05;
pairs[6]=pair06;
pairs[7]=pair07;
pairs[8]=pair08;
pairs[9]=pair09;
pairs[10]=pair10;
pairs[11]=pair11;
pairs[12]=pair12;
pairs[13]=pair13;
pairs[14]=pair14;
pairs[15]=pair15;
pairs[16]=pair16;
pairs[17]=pair17;
pairs[18]=pair18;
pairs[19]=pair19;
pairs[20]=pair20;
TFr[0]=TF1;
TFr[1]=TF2;
TFr[2]=TF3;
TFr[3]=TF4;
TFr[4]=TF5;
TFr[5]=TF6;
TFr[6]=TF7;
TFr[7]=TF8;
TFr[8]=TF9;
return(0);
}
//+------------------------------------------------------------------+
int deinit() { for(int a=0; a<Bars; a++) ObjectDelete("DF_" + a); return(0); }
//+------------------------------------------------------------------+
int start() {
int tf, time, key;
if(!HistoryViewer) DrawHistory();
if(Play) { PlaySound(SoundFile); Play=false; }
for(int i=0;i<ArraySize(pairs);i++) {
if(pairs[i]=="") continue;
symbol=pairs[i];
for(int p=0;p<ArraySize(TFr);p++) {
if(TFr[p]=="") continue;
tf=StrToInteger(TFr[p]);
key=keys[i][p];
time =iTime(symbol, tf, 0);
if(keys[i][p]!=time) {
InitialData(symbol, tf);
if(high3>MathMax(MathMax(high4,high5), MathMax(high1,high2)) &&
low3<MathMin(MathMin(low4,low5),MathMin(low1,low2)) &&
MathAbs(open3-close3)>min_candle*Point) {
l_shadow=MathMin(open3, close3)-low3;
u_shadow=high3-MathMax(open3, close3);
if(l_shadow-u_shadow>delta) { signal="продажа по 2-F"; BS_color=BuyColor; }
if(u_shadow-l_shadow>delta) { signal="покупка по 2-F"; BS_color= SellColor; }
if(MathAbs(l_shadow-u_shadow)<=delta) { BS_color= NoSignalColor; }
if(ShowSignal) { Alert(symbol," ",tf," мин ", signal); Play = true; }
int time1=iTime(symbol, tf, 4);
double price1=iHigh(symbol, tf, 3);
int time2=iTime(symbol, tf, 2);
double price2=iLow(symbol, tf, 3);
if(DrawRecs) DrawRec(StringConcatenate("DF_",i), time1,price1,time2,price2, BS_color);
}
keys[i][p]=time;
} } }
return(0);
}
//+------------------------------------------------------------------+
void DrawRec(string name, int time1, double price1, int time2, double price2, color color1) {
ObjectCreate(name, OBJ_RECTANGLE, 0, time1, price1, time2, price2, 0, 0);
ObjectSet(name, OBJPROP_WIDTH, RectangleWidth);
ObjectSet(name, OBJPROP_BACK, false);
ObjectSet(name, OBJPROP_COLOR, color1);
}
//+------------------------------------------------------------------+
void DrawHistory() {
for(int i=0; i<Bars_Count-3; i++) {
if(High[i+3]>MathMax(MathMax(High[i+4],High[i+5]), MathMax(High[i+1],High[i+2])) &&
Low[i+3]<MathMin(MathMin(Low[i+4],Low[i+5]),MathMin(Low[i+1],Low[i+2])) &&
MathAbs(Open[i+3]-Close[i+3])>min_candle*Point) {
l_shadow=NormalizeDouble(MathMin(Open[i+3], Close[i+3])-Low[i+3],Digits);
u_shadow=NormalizeDouble(High[i+3]-MathMax(Open[i+3], Close[i+3]),Digits);
if(l_shadow-u_shadow>delta) { signal="продажа"; color BS_colors=BuyColor; }
if(u_shadow-l_shadow>delta) { signal="покупка"; BS_colors= SellColor; }
if(MathAbs(l_shadow-u_shadow)<=delta) { BS_colors= NoSignalColor; }
int time1=Time[i+4];
double price1=High[i+3]+5*Point;
int time2=Time[i+2];
double price2=Low[i+3]-5*Point;
if(DrawRecs) DrawRec(StringConcatenate("DF_",i), time1,price1,time2,price2, BS_colors);
} }
HistoryViewer=true;
return;
}
//+------------------------------------------------------------------+
void InitialData(string para, int per) {
high5=iHigh(para, per, 5);
high4=iHigh(para, per, 4);
high3=iHigh(para, per, 3);
high2=iHigh(para, per, 2);
high1=iHigh(para, per, 1);
low5=iLow(para, per, 5);
low4=iLow(para, per, 4);
low3=iLow(para, per, 3);
low2=iLow(para, per, 2);
low1=iLow(para, per, 1);
open3= iOpen(para, per, 3);
close3=iClose(para, per, 3);
uf=0; lf=0;
draw=false;
}
//+------------------------------------------------------------------+
</code>
<code> //+------------------------------------------------------------------+ //| DT_ZZ.mq4 + //| + //| 20.03.16 добавил звук поручик + //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, klot." #property link "klot@mail.ru" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 clrMagenta #property indicator_color2 clrDeepPink #property indicator_color3 clrDodgerBlue #property indicator_width2 1 #property indicator_width3 1 //---- indicator parameters extern int ExtDepth = 12; extern bool alertsOn = true; extern bool alertsOnCurrent = true; extern bool alertsMessage = true; extern bool alertsSound = true; extern bool alertsEmail = false; extern bool use_sound = true; extern string up_sound = "Пробой_вверх"; extern string down_sound = "Пробой_вниз"; double zzL[]; double zzH[]; double zz[]; int init() { SetIndexBuffer(0,zz); SetIndexStyle(0,DRAW_SECTION); SetIndexBuffer(1,zzH); SetIndexStyle(1,DRAW_ARROW); SetIndexBuffer(2,zzL); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(1,236); SetIndexArrow(2,238); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); SetIndexEmptyValue(2,0.0); IndicatorShortName("DT_ZZ("+ExtDepth+")"); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos; double curlow,curhigh,lasthigh,lastlow; double min, max; ArrayInitialize(zz,0.0); ArrayInitialize(zzL,0.0); ArrayInitialize(zzH,0.0); lasthighpos=Bars; lastlowpos=Bars; lastlow=Low[Bars];lasthigh=High[Bars]; for(shift=Bars-ExtDepth; shift>=0; shift--) { curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift); curlow=Low[curlowpos]; curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift); curhigh=High[curhighpos]; //------------------------------------------------ if( curlow>=lastlow ) { lastlow=curlow; } else { //идем вниз if( lasthighpos>curlowpos ) { zzL[curlowpos]=curlow; ///* min=100000; pos=lasthighpos; for(i=lasthighpos; i>=curlowpos; i--) { if (zzL[i]==0.0) continue; if (zzL[i]<min) { min=zzL[i]; pos=i; } zz[i]=0.0; } zz[pos]=min; //*/ } lastlowpos=curlowpos; lastlow=curlow; } //--- high if( curhigh<=lasthigh ) { lasthigh=curhigh;} else { // идем вверх if( lastlowpos>curhighpos ) { zzH[curhighpos]=curhigh; ///* max=-100000; pos=lastlowpos; for(i=lastlowpos; i>=curhighpos; i--) { if (zzH[i]==0.0) continue; if (zzH[i]>max) { max=zzH[i]; pos=i; } zz[i]=0.0; } zz[pos]=max; //*/ } lasthighpos=curhighpos; lasthigh=curhigh; } } //--------------------------------------------------------------------- if (alertsOn) { if (alertsOnCurrent) int whichBar = 0; else whichBar = 1; if (zzH[whichBar] > 0) PlaySound("Пробой_вверх.wav"); if (zzL[whichBar] > 0) PlaySound("Пробой_вниз.wav"); } return(0); } //+------------------------------------------------------------------+ // // // // // void doAlert(string doWhat) { static string previousAlert="nothing"; static datetime previousTime; string message; if (previousAlert != doWhat || previousTime != Time[0]) { previousAlert = doWhat; previousTime = Time[0]; // message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," DT_ZZ ",doWhat); if (alertsMessage) Alert(message); if (alertsEmail) SendMail(StringConcatenate(Symbol()," DT_ZZ "),message); if (alertsSound) PlaySound("alert2.wav"); } } </code>poruchik