//+------------------------------------------------------------------+
//| Copyright © 2010, Ivan Kornilov|
//| GannLevels.mq4|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Ivan Kornilov. All rights reserved."
#property link "excelf@gmail.com"
#property indicator_buffers 0
#property indicator_chart_window
extern int drowDays = 5;
extern bool showText = false;
extern double order = 0.001;
double level1 = 1.25;
double level2 = 2.50;
double level3 = 3.33;
double level4 = 5;
double level5 = 6.66;
double level6 = 7.5;
double level7 = 10;
int init() {
level1 = level1 * order;
level2 = level2 * order;
level3 = level3 * order;
level4 = level4 * order;
level5 = level5 * order;
level6 = level6 * order;
level7 = level7 * order;
}
int deinit() {
ObjectsDeleteAll(0,OBJ_TREND);
ObjectsDeleteAll(0,OBJ_TEXT);
}
int start() {
int indicatorCounted = IndicatorCounted();
if (indicatorCounted < 0) {
return (-1);
}
if(indicatorCounted > 0) {
indicatorCounted--;
}
int limit = Bars - indicatorCounted;
int days = 0;
for(int i = 0; i < limit; i++) {
if(TimeDay(Time[i]) != TimeDay(Time[i+1])) {
//if(TimeDayOfWeek(Time[i]) == 1 && TimeDayOfWeek(Time[i+1]) != 1){
double openDay = Open[i];
datetime openTime = Time[i];
datetime closeTime = Time[i] + 60 * 60 * 24;
double level = openDay;
string levelName = "level0" + TimeDay(Time[i]);
ObjectCreate(levelName, OBJ_TREND, 0, openTime, level, closeTime, level);
ObjectSet(levelName, OBJPROP_COLOR, BlueViolet);
ObjectSet(levelName, OBJPROP_WIDTH, 0);
ObjectSet(levelName, OBJPROP_BACK, true);
ObjectSet(levelName, OBJPROP_RAY, false);
ObjectSet(levelName, OBJPROP_STYLE, STYLE_DASH);
//1é óðîâåíü - (êîðåíü îò îòêðûòèÿ äíÿ + 0.125)â êâàäðàòå çåëåíûé öâåò ïîëóæèðíûé óðîâåíü àíàëîãè÷íî è ñ ïîääåðæêîé òîëüêî îòíÿòü 0.125
double level1Up = MathPow((MathSqrt(openDay) + level1), 2);
string level1UpName = "level1Up" + TimeDay(Time[i]);
ObjectCreate(level1UpName, OBJ_TREND, 0, openTime, level1Up, closeTime, level1Up);
ObjectSet(level1UpName, OBJPROP_COLOR, Green);
ObjectSet(level1UpName, OBJPROP_WIDTH, 2);
ObjectSet(level1UpName, OBJPROP_BACK, true);
ObjectSet(level1UpName, OBJPROP_RAY, false);
double level1Down = MathPow((MathSqrt(openDay) - level1), 2);
string level1DownName = "level1Down" + TimeDay(Time[i]);
ObjectCreate(level1DownName, OBJ_TREND, 0, openTime, level1Down, closeTime, level1Down);
ObjectSet(level1DownName, OBJPROP_COLOR, Green);
ObjectSet(level1DownName, OBJPROP_WIDTH, 2);
ObjectSet(level1DownName, OBJPROP_BACK, true);
ObjectSet(level1DownName, OBJPROP_RAY, false);
//2é) êîðåíü îò îòêðûòèÿ äíÿ + 0.25)â êâàäðàòå ñèíèé ïîëóæèðíûé è àíàëîãè÷íî äëÿ ïîääåðæêè òîëüêî ìèíóñ 0.25
double level2Up = MathPow((MathSqrt(openDay) + level2), 2);
string level2UpName = "level2Up" + TimeDay(Time[i]);
ObjectCreate(level2UpName, OBJ_TREND, 0, openTime, level2Up, closeTime, level2Up);
ObjectSet(level2UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level2UpName, OBJPROP_WIDTH, 0);
ObjectSet(level2UpName, OBJPROP_BACK, true);
ObjectSet(level2UpName, OBJPROP_RAY, false);
double level2Down = MathPow((MathSqrt(openDay) - level2), 2);
string level2DownName = "level2Down" + TimeDay(Time[i]);
ObjectCreate(level2DownName, OBJ_TREND, 0, openTime, level2Down, closeTime, level2Down);
ObjectSet(level2DownName, OBJPROP_COLOR, Orange);
ObjectSet(level2DownName, OBJPROP_WIDTH, 0);
ObjectSet(level2DownName, OBJPROP_BACK, true);
ObjectSet(level2DownName, OBJPROP_RAY, false);
//3éêîðåíü îò îòêðûòèÿ äíÿ + 0.333)â êâàäðàòå òîíêèé ñèíèé àíàëîãè÷íî äëÿ ïîääåðæêè òîëüêî -0.333
double level3Up = MathPow((MathSqrt(openDay) + level3), 2);
string level3UpName = "level3Up" + TimeDay(Time[i]);
ObjectCreate(level3UpName, OBJ_TREND, 0, openTime, level3Up, closeTime, level3Up);
ObjectSet(level3UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level3UpName, OBJPROP_WIDTH, 0);
ObjectSet(level3UpName, OBJPROP_BACK, true);
ObjectSet(level3UpName, OBJPROP_RAY, false);
double level3Down = MathPow((MathSqrt(openDay) - level3), 2);
string level3DownName = "level3Down" + TimeDay(Time[i]);
ObjectCreate(level3DownName, OBJ_TREND, 0, openTime, level3Down, closeTime, level3Down);
ObjectSet(level3DownName, OBJPROP_COLOR, Orange);
ObjectSet(level3DownName, OBJPROP_WIDTH, 0);
ObjectSet(level3DownName, OBJPROP_BACK, true);
ObjectSet(level3DownName, OBJPROP_RAY, false);
//4é óðîâåíü êîðåíü îò îòêðûòèÿ äíÿ + 0.5)â êâàäðàòå ïîëóæèðíûé ñèíèé öâåò.... àíàëîãè÷íî äëÿ ïîääåðæêè òîëüêî ìèíóñ 0.5
double level4Up = MathPow((MathSqrt(openDay) + level4), 2);
string level4UpName = "level4Up" + TimeDay(Time[i]);
ObjectCreate(level4UpName, OBJ_TREND, 0, openTime, level4Up, closeTime, level4Up);
ObjectSet(level4UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level4UpName, OBJPROP_WIDTH, 2);
ObjectSet(level4UpName, OBJPROP_BACK, true);
ObjectSet(level4UpName, OBJPROP_RAY, false);
double level4Down = MathPow((MathSqrt(openDay) - level4), 2);
string level4DownName = "level4Down" + TimeDay(Time[i]);
ObjectCreate(level4DownName, OBJ_TREND, 0, openTime, level4Down, closeTime, level4Down);
ObjectSet(level4DownName, OBJPROP_COLOR, Orange);
ObjectSet(level4DownName, OBJPROP_WIDTH, 2);
ObjectSet(level4DownName, OBJPROP_BACK, true);
ObjectSet(level4DownName, OBJPROP_RAY, false);
//5é óðîâåíü êîðåíü îò îòêðûòèÿ äíÿ + 0.0.666)â êâàäðàòå òîíêèé
double level5Up = MathPow((MathSqrt(openDay) + level5), 2);
string level5UpName = "level5Up" + TimeDay(Time[i]);
ObjectCreate(level5UpName, OBJ_TREND, 0, openTime, level5Up, closeTime, level5Up);
ObjectSet(level5UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level5UpName, OBJPROP_WIDTH, 0);
ObjectSet(level5UpName, OBJPROP_BACK, true);
ObjectSet(level5UpName, OBJPROP_RAY, false);
double level5Down = MathPow((MathSqrt(openDay) - level5), 2);
string level5DownName = "level5Down" + TimeDay(Time[i]);
ObjectCreate(level5DownName, OBJ_TREND, 0, openTime, level5Down, closeTime, level5Down);
ObjectSet(level5DownName, OBJPROP_COLOR, Orange);
ObjectSet(level5DownName, OBJPROP_WIDTH, 0);
ObjectSet(level5DownName, OBJPROP_BACK, true);
ObjectSet(level5DownName, OBJPROP_RAY, false);
//6é êîðåíü îò îòêðûòèÿ äíÿ + 0.75)â êâàäðàòå òîíêèé âñå àíàëîãè÷íî è äëÿ ïîääåðæêè
double level6Up = MathPow((MathSqrt(openDay) + level6), 2);
string level6UpName = "level6Up" + TimeDay(Time[i]);
ObjectCreate(level6UpName, OBJ_TREND, 0, openTime, level6Up, closeTime, level6Up);
ObjectSet(level6UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level6UpName, OBJPROP_WIDTH, 0);
ObjectSet(level6UpName, OBJPROP_BACK, true);
ObjectSet(level6UpName, OBJPROP_RAY, false);
double level6Down = MathPow((MathSqrt(openDay) - level6), 2);
string level6DownName = "level6Down" + TimeDay(Time[i]);
ObjectCreate(level6DownName, OBJ_TREND, 0, openTime, level6Down, closeTime, level6Down);
ObjectSet(level6DownName, OBJPROP_COLOR, Orange);
ObjectSet(level6DownName, OBJPROP_WIDTH, 0);
ObjectSet(level6DownName, OBJPROP_BACK, true);
ObjectSet(level6DownName, OBJPROP_RAY, false);
//7é êîðåíü îò îòêðûòèÿ äíÿ + 1)â êâàäðàòå ïîëóæèðíûé
double level7Up = MathPow((MathSqrt(openDay) + level7), 2);
string level7UpName = "level7Up" + TimeDay(Time[i]);
ObjectCreate(level7UpName, OBJ_TREND, 0, openTime, level7Up, closeTime, level7Up);
ObjectSet(level7UpName, OBJPROP_COLOR, SkyBlue);
ObjectSet(level7UpName, OBJPROP_WIDTH, 3);
ObjectSet(level7UpName, OBJPROP_BACK, true);
ObjectSet(level7UpName, OBJPROP_RAY, false);
double level7Down = MathPow((MathSqrt(openDay) - level7), 2);
string level7DownName = "level7Down" + TimeDay(Time[i]);
ObjectCreate(level7DownName, OBJ_TREND, 0, openTime, level7Down, closeTime, level7Down);
ObjectSet(level7DownName, OBJPROP_COLOR, Orange);
ObjectSet(level7DownName, OBJPROP_WIDTH, 3);
ObjectSet(level7DownName, OBJPROP_BACK, true);
ObjectSet(level7DownName, OBJPROP_RAY, false);
if(showText) {
string label = "level0label" + TimeDay(Time[i]);
string text = "Îòêðûòèå äíÿ";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level1UpLabel" + TimeDay(Time[i]);
text = "Óðîâåíü 1";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level1Up);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level1DownLabel" + TimeDay(Time[i]);
text = "Óðîâåíü -1";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level1Down);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level2UpLabel" + TimeDay(Time[i]);
text = "Óðîâåíü 2";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level2Up);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level2DownLabel" + TimeDay(Time[i]);
text = "Óðîâåíü -2";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level2Down);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level3UpLabel" + TimeDay(Time[i]);
text = "Óðîâåíü 3";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level3Up);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level3DownLabel" + TimeDay(Time[i]);
text = "Óðîâåíü -3";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level3Down);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level4UpLabel" + TimeDay(Time[i]);
text = "Óðîâåíü 4";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level4Up);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level4DownLabel" + TimeDay(Time[i]);
text = "Óðîâåíü -4";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level4Down);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level5UpLabel" + TimeDay(Time[i]);
text = "Óðîâåíü 5";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level5Up);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level5DownLabel" + TimeDay(Time[i]);
text = "Óðîâåíü -5";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level5Down);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level6UpLabel" + TimeDay(Time[i]);
text = "Óðîâåíü 6";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level6Up);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level6DownLabel" + TimeDay(Time[i]);
text = "Óðîâåíü -6";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level6Down);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level7UpLabel" + TimeDay(Time[i]);
text = "Óðîâåíü 7";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level7Up);
ObjectSetText(label, text, 8, "Tahoma", Black);
label = "level7DownLabel" + TimeDay(Time[i]);
text = "Óðîâåíü -7";
ObjectCreate(label, OBJ_TEXT, 0, openTime + StringLen(text), level7Down);
ObjectSetText(label, text, 8, "Tahoma", Black);
}
days++;
}
if(days >= drowDays) {
break;
}
}
return(0);
}
Comments