Здравствуйте, хочу попросить Вас написать индикатор.
Построение линий по прошлому дню. самый высокий хай на Н1 и самый низкий лоу на Н1 прошлого дня.
Линии должны наносится на график 23.59.
Индикаторы которые есть в иннете не настраиваются по хай и лоу на Н1, линии ставятся ниже.
прошу вас помочь с этим вопросом)
Комментарии (14)
35 AM2 Сообщений: 16266 - Андрей
//+------------------------------------------------------------------+
//| Igrok.mq4 |
//| Andrei Andreev |
//| www.andand.ru |
//+------------------------------------------------------------------+
// BASED ON:
//+------------------------------------------------------------------+
//| ^X_Sensors.mq4 |
//| Version 2.0.1 |
//|------------------------------------------------------------------|
//| Copyright © 2007, Mr.WT, Senior Linux Hacker |
//| w-tiger.narod.ru/wk2/ |
//+------------------------------------------------------------------+
#property copyright «Andrei Andreev»
#property link «www.andand.ru»
#property indicator_chart_window
extern int ForDays=10;
extern int _Shift = 20;
extern color _R_Color = Crimson;
extern color _S_Color = Gold;
int _N_Time, _My_Period, ObjectId;
string OBJECT_PREFIX = «LEVELS»;
//-------------------------------------------------------------------------------------------
int init() {
_My_Period=PERIOD_D1;
_N_Time = 0;
ObjectCreate(«S1 line», OBJ_TREND, 0, Time[_Shift], 0, Time[0], 0);
ObjectCreate(«R1 line», OBJ_TREND, 0, Time[_Shift], 0, Time[0], 0);
ObjectCreate(«R2 line», OBJ_TREND, 0, Time[_Shift], 0, Time[0], 0);
ObjectSet(«S1 line», OBJPROP_RAY, 1);
ObjectSet(«S1 line», OBJPROP_STYLE, STYLE_DASH);
ObjectSet(«S1 line», OBJPROP_COLOR, _S_Color);
ObjectSet(«R1 line», OBJPROP_RAY, 1);
ObjectSet(«R1 line», OBJPROP_STYLE, STYLE_DASH);
ObjectSet(«R1 line», OBJPROP_COLOR, _R_Color);
ObjectSet(«R2 line», OBJPROP_RAY, 1);
ObjectSet(«R2 line», OBJPROP_STYLE, STYLE_DASH);
ObjectSet(«R2 line», OBJPROP_COLOR, _R_Color);
ObjectCreate(«R1 label», OBJ_TEXT, 0, Time[0], 0);
ObjectCreate(«R2 label», OBJ_TEXT, 0, Time[0], 0);
ObjectCreate(«S1 label», OBJ_TEXT, 0, Time[0], 0);
ObjectId = 0;
return(0);
}
//-------------------------------------------------------------------------------------------
int deinit() {
ObjectDelete(«R1 label»);
ObjectDelete(«R1 line»);
ObjectDelete(«R2 label»);
ObjectDelete(«R2 line»);
ObjectDelete(«S1 label»);
ObjectDelete(«S1 line»);
ObDeleteObjectsByPrefix(OBJECT_PREFIX);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
if ( _N_Time == Time[0] ) return(0);
double open,close, high, low, koeff1, koeff2,P, R1, R2, S1;
double _rates[][6];
double AverageRange;
ArrayCopyRates(_rates, NULL, _My_Period);
int err = GetLastError();
if(err == 4066) {
Sleep(1000);
if(iClose(NULL, _My_Period, 0) != Close[0]) {
Sleep(1000);
return(0);
}
}
close = _rates[1][4];
high = _rates[0][3];
low = _rates[0][2];
open = _rates[0][1];
AverageRange=0;
for (int i=1;i<ForDays+1;i++)
{
AverageRange=AverageRange+(_rates[i][3]-_rates[i][2])/Point;
}
AverageRange=NormalizeDouble(AverageRange/ForDays,0);
Comment("\nДиапазон:",
"\nСегодня: ",(high-low)/Point,
"\nВчера: ",(_rates[1][3]-_rates[1][2])/Point,
"\nСредний: ",AverageRange," за ",ForDays," дней");
S1 =open;
R1 =low;
R2 =high;
string s1,r1,r2;
s1 = DoubleToStr(S1, Digits);
r1 = DoubleToStr(R1, Digits);
r2 = DoubleToStr(R2, Digits);
//---- Pivot Lines
ObjectSetText(«R1 label», " Min "+r1+"", 8, «Fixedsys», _R_Color);
ObjectSetText(«R2 label», " Max "+r2+"", 8, «Fixedsys», _R_Color);
ObjectSetText(«S1 label», " Open "+s1+"", 8, «Fixedsys», _S_Color);
ObjectMove(«R1 label», 0, Time[0], R1);
ObjectMove(«R2 label», 0, Time[0], R2);
ObjectMove(«S1 label», 0, Time[0], S1);
ObjectMove(«S1 line», 0, Time[_Shift], S1);
ObjectMove(«S1 line», 1, Time[0], S1);
ObjectMove(«R1 line», 0, Time[_Shift], R1);
ObjectMove(«R1 line», 1, Time[0], R1);
ObjectMove(«R2 line», 0, Time[_Shift], R2);
ObjectMove(«R2 line», 1, Time[0], R2);
//====
_N_Time = Time[0];
//---- End Of Program
return(0);
}
//+------------------------------------------------------------------+
void ObDeleteObjectsByPrefix(string Prefix)
{
int L = StringLen(Prefix);
int i = 0;
while(i < ObjectsTotal())
{
string ObjName = ObjectName(i);
if(StringSubstr(ObjName, 0, L) != Prefix)
{
i++;
continue;
}
ObjectDelete(ObjName);
}
}
//-------------------------------------------------------------------------------------------
Редактирован: 28 октября 2017, 08:45
12 sledopyt Сообщений: 151
9 maksGruv Автор Сообщений: 340
35 AM2 Сообщений: 16266 - Андрей
9 maksGruv Автор Сообщений: 340
По каким телам? В ТЗ об этом ни слова.
35 AM2 Сообщений: 16266 - Андрей
тут получается часть движения не захватываем(
9 maksGruv Автор Сообщений: 340
35 AM2 Сообщений: 16266 - Андрей
9 maksGruv Автор Сообщений: 340
35 AM2 Сообщений: 16266 - Андрей
9 maksGruv Автор Сообщений: 340
А должно быть так:
можно поправить?)
9 maksGruv Автор Сообщений: 340
Он в 23:59 только нормально состряпает. Все по ТЗ.
35 AM2 Сообщений: 16266 - Андрей
Очень помогли!)
9 maksGruv Автор Сообщений: 340
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий