Добрый день! Задача указывать стрелками бар на котором все условия выполняются, и эти стрелки необходимо видеть на истории. Вот код чего-то сделано не так, кто может подскажите.
//+------------------------------------------------------------------+
//| arrow.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
учитесь оформлять свои посты ... так как вы вставили свой код его никто не будет смотреть ...
во вторых стрелки на истории рисуют не советники а индикаторы ...
ну а в третьих - удалите метатрейдер и забудьте про форекс
//+------------------------------------------------------------------+ //| arrow.mq4 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern ENUM_TIMEFRAMES timeframe1 = PERIOD_CURRENT; extern ENUM_TIMEFRAMES timeframe2 = PERIOD_CURRENT; extern ENUM_TIMEFRAMES timeframe3 = PERIOD_CURRENT; extern ENUM_TIMEFRAMES timeframe4 = PERIOD_CURRENT; extern ENUM_TIMEFRAMES timeframe5 = PERIOD_CURRENT; double high[]; extern int count = 1000; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- setMoreArrow(); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- /*double iMACD( string symbol, // имя символа int timeframe, // таймфрейм int fast_ema_period, // период быстрой средней int slow_ema_period, // период медленной средней int signal_period, // период сигнальной линии int applied_price, // тип цены int mode, // индекс линии индикатора int shift // сдвиг );*/ /*double iStochastic( string symbol, // имя символа int timeframe, // таймфрейм int Kperiod, // период линии K int Dperiod, // период линии D int slowing, // замедление int method, // метод усреднения int price_field, // тип цены int mode, // индекс линии int shift // сдвиг );*/ if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) { if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) { if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) { if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) { if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) { Alert("Красные! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0); SetArrow(242, clrRed); } } } } } } } } } } else { if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) { if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) { if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) { if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) { if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) { Alert("Зеленые! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0); SetArrow(241, clrGreen); } } } } } } } } } } } //+------------------------------------------------------------------+ //| Описание : Установка значка на графике, объект OBJ_ARROW. | //+----------------------------------------------------------------------------+ //| Параметры: | //| cd - код значка | //| cl - цвет значка | //| nm - наименование ("" - время открытия текущего бара) | //| t1 - время открытия бара (0 - текущий бар) | //| p1 - ценовой уровень (0 - Bid) | //| sz - размер значка (0 - по умолчанию) | //+----------------------------------------------------------------------------+ void setMoreArrow() { int i; for(i=count; i>0; i--) { if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) { if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) { if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) { if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) { if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) { if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) { SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1); } } } } } } } } } } else { if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) { if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) { if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) { if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) { if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) { if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) { SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1); } } } } } } } } } } } } void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=1) { if (nm=="") nm=DoubleToStr(Time[0], 0); if (t1<=0) t1=Time[0]; if (p1<=0) p1=Bid; if (p1==1) { ArraySetAsSeries(high,true); CopyHigh(_Symbol,PERIOD_CURRENT,t1,1,high); p1=high[0]; } if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0); ObjectSet(nm, OBJPROP_TIME1 , t1); ObjectSet(nm, OBJPROP_PRICE1 , p1); ObjectSet(nm, OBJPROP_ARROWCODE, cd); ObjectSet(nm, OBJPROP_COLOR , cl); ObjectSet(nm, OBJPROP_WIDTH , sz); }
ответ тот же - стрелки на истории рисуют индикаторы а не советники - учите мат часть ...
ответ тот же - стрелки на истории рисуют индикаторы а не советники - учите мат часть ...
ну этот же алгоритм ставит стрелки,но только при условии того что переменных не более 2х
ну этот же алгоритм ставит стрелки,но только при условии того что переменных не более 2х
как Вам объяснить - алгоритм такой же - исполнение разное - не смотрит Ваш советник на историю ...
нужен индикатор с буферами истории с буферами стрелок которые он расставит по истории - но это так сказать в двух словах ...
как Вам объяснить - алгоритм такой же - исполнение разное - не смотрит Ваш советник на историю ...
нужен индикатор с буферами истории с буферами стрелок которые он расставит по истории - но это так сказать в двух словах ...
но если кто-то может подправить в скрипте чего именно не правильно сделал буду благодарен
сейчас скачаю, на следующей неделе посмотрю. Стрелки вводят в заблуждение. Предпочитаю ставить на истории цветные вертикальные линии. У меня это делает и скрипт и советник. Первое замечание - функция OnDeinit пустая - есть смысл ее удалить.
с беглого просмотра трудно понять замысел. У меня скрипт и аналогичный советник ставят метки (вертикальные линии или у Вас стрелки). Потом появляются кнопки. Двигать плавно вперед, перейти к ближайшей спереди или сзади метке ... Использую для анализа стратегии. Меняю условия входа, смотрю... А у Вас какой замысел? Там еще Alert(). Так на истории могут оказаться сотни стрелок и будут при запуске сотни алертов?
NormalizeDouble(... , 0)>80 - кажется, хватило бы ...>80
во входных параметрах много timeframe, хотя все имеют одинаковое значение?
for(double x=79.4; x<=80.6; x+=0.3) { double xn=NormalizeDouble(x,0); string s="x="+DoubleToStr(x,1)+" xn="+DoubleToStr(xn,1); Alert(s); }
Каждую часть программы надо проверять скриптом.
Вот разница NormalizeDouble и без NormalizeDouble. Что лучше - надо еще подумать
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день! Задача указывать стрелками бар на котором все условия выполняются, и эти стрелки необходимо видеть на истории. Вот код чего-то сделано не так, кто может подскажите.
//+------------------------------------------------------------------+
//| arrow.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern ENUM_TIMEFRAMES timeframe1 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe2 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe3 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe4 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe5 = PERIOD_CURRENT;
double high[];
extern int count = 1000;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
setMoreArrow();
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
/*double iMACD(
string symbol, // имя символа
int timeframe, // таймфрейм
int fast_ema_period, // период быстрой средней
int slow_ema_period, // период медленной средней
int signal_period, // период сигнальной линии
int applied_price, // тип цены
int mode, // индекс линии индикатора
int shift // сдвиг
);*/
/*double iStochastic(
string symbol, // имя символа
int timeframe, // таймфрейм
int Kperiod, // период линии K
int Dperiod, // период линии D
int slowing, // замедление
int method, // метод усреднения
int price_field, // тип цены
int mode, // индекс линии
int shift // сдвиг
);*/
if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
Alert("Красные! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0);
SetArrow(242, clrRed);
}
}
}
}
}
}
}
}
}
} else {
if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
Alert("Зеленые! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0);
SetArrow(241, clrGreen);
}
}
}
}
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Описание : Установка значка на графике, объект OBJ_ARROW. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| cd - код значка |
//| cl - цвет значка |
//| nm - наименование ("" - время открытия текущего бара) |
//| t1 - время открытия бара (0 - текущий бар) |
//| p1 - ценовой уровень (0 - Bid) |
//| sz - размер значка (0 - по умолчанию) |
//+----------------------------------------------------------------------------+
void setMoreArrow() {
int i;
for(i=count; i>0; i--) {
if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1);
}
}
}
}
}
}
}
}
}
} else {
if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1);
}
}
}
}
}
}
}
}
}
}
}
}
void SetArrow(int cd, color cl,
string nm="", datetime t1=0, double p1=0, int sz=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[0];
if (p1<=0) p1=Bid;
if (p1==1) {
ArraySetAsSeries(high,true);
CopyHigh(_Symbol,PERIOD_CURRENT,t1,1,high);
p1=high[0];
}
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
ObjectSet(nm, OBJPROP_TIME1 , t1);
ObjectSet(nm, OBJPROP_PRICE1 , p1);
ObjectSet(nm, OBJPROP_ARROWCODE, cd);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_WIDTH , sz);
}