[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 187

 
NayTmeR:

Например когда линия val1[c] пересекает 0.45 вверх значение времени присваивается переменной TimeBegin

вопрос в чём? как при при пересечении запомнить время? сначала проверить есть ли пересечение, потом запомнить
 

А как присвоить переменной это время ?

 
eddy:
ну так а стрелки то на баре открытия. ты же им цвет задаёш только

Не совсем уверен, что понял. стрелки на баре открытия есть, но нарисованные соответствующей функцией - OrderSend(). Эти стрелки же не относятся к стрелкам, рисуемым OrderModify()? Я так понял, что с помощью OrderModify() я не только цвет задаю стрелкам, но и меняю уровень стоп-лосса, посредством замены значения переменной SL? В помощи написано, что:

 

bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)

Изменяет параметры ранее открытых позиций или отложенных ордеров.

То есть не только цвет стрелки меняет, но и "изменяет параметры ранее открытых" ордеров. Значит, должен по идее менять стопы И рисовать стрелки. А почему-то не делает.

 

слово "только" было про стрелку а не про то что вообще делает функция.

стрелки на баре открытия есть, но нарисованные соответствующей функцией - OrderSend(). Эти стрелки же не относятся к стрелкам, рисуемым OrderModify()?

о чёи я и говорю. ты ведь ОРДЕРУ задаёшь стоп и/или тейк, так его стрелки и меняются. с чего ты взял что должны создаваться ещё стрелки. в функции задаётся их цвет

 
NayTmeR:

А как присвоить переменной это время ?

есть такая функция в сборнике Кима
 
todem:
есть такая функция в сборнике Кима

А можно поподробнее ? Где её найти ? Где найти сборник Кима ?
 
eddy:

слово "только" было про стрелку а не про то что вообще делает функция.

о чёи я и говорю. ты ведь ОРДЕРУ задаёшь стоп и/или тейк, так его стрелки и меняются. с чего ты взял что должны создаваться ещё стрелки. в функции задаётся их цвет

В хелпе по OrderModify() написано:

arrow_color - Цвет стрелок модификации StopLoss и/или TakeProfit на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелки на графике не отображаются. 

То есть, насколько я понял,  OrderModify() вычерчивает палочки, поскольку тут написано "стрелок МОДИФИКАЦИИ", что значит, что есть не только стрелки открытия/закрытия, создаваемые OrderSend-ом, но и стрелки модификации, создаваемые OrderModify-ем. А отсутствовать эти стрелки МОДИФИКАЦИИ могут только если параметр отсутствует или равен CLR_NONE. А у меня параметр есть и равен "Green". Я так понял, что нет специального параметра, отвечающего за наличие или отсутствие стрелок модификации, это управляется отсутствием или равенством его CLR_NONE. Сужу по аналогии c OrderSend-ом в том же хелпе:

arrow_color - Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. 

 

Помогите, пожалуйста, с функцией isCloseLastPosByStop ().

Вставляю в MetaEditor функцию isCloseLastPosByStop () (но только то что написано на странице https://www.mql5.com/ru/forum/107476/page21).

После неудачной компиляции выводятся ошибки:

'(' - function definition unexpected

't' - variable not defined

't' - variable not defined

'}' - unbalanced parentheses

Дело именно в этой функции, т.к. я комментировал весь, остальной код.

 

Всем здрасте! Помогите пожалуйста объединить следующие вещи. В итоге должно получиться: две линии следующие за ценой одна ниже Ask на 20п.,

другая-выше, а так же подается звуковой сигнал при изменении цены на 20п. за 1 тик.

По отдельности все работает шикарно, а соединить воедино не могу. Заранее спасибо!

1) Линия ниже Ask на 20п.

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}

//+------------------------------------------------------------------+

2) Линия выше Ask на 20п.

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+

3) Скорость изменения цены во времени.

#property show_inputs

extern int pips=2; //изменение аск
extern double Time_=0.1; //c. ~ tick
extern bool все_из_обзора_рынка=true; // только текущий символ - false

int i, l, p, количество_символов;
string val[], на_экран;
int Ask_save[];

//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
void start(){
количество_символов=SymbolsList(val, true);//запись в массив val инструменты и их количество вызов функции SymbolsList
ArrayResize(Ask_save,количество_символов);
if(количество_символов == -1){ Alert("Ошибка открытия файла в SymbolsList(string &Symbols[], bool Selected)"); return;}
if(!все_из_обзора_рынка){
количество_символов=1;
ArrayResize(Ask_save,количество_символов);
ArrayResize(val,количество_символов);
val[0]=Symbol();
}

while(true&&!IsStopped()){ //если разрешить и не отанавливать скрипт продолжим

Alert("пересчитаем через "+Time_+" сек.");

for(i=0;i<количество_символов;i++){//посчитаем стоимость спреда для инструментов из обзора рынка
if((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT))>=pips){
Alert(val[i]+","+Period()+" изменился вниз на "+DoubleToStr((Ask_save[i]-MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)),0)+" pips");
PlaySound("timeout.wav");
}
if((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i])>=pips){
Alert(val[i]+","+Period()+" изменился вверх на "+DoubleToStr((MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT)-Ask_save[i]),0)+" pips");
PlaySound("email.wav");
}
Ask_save[i]=MarketInfo(val[i],MODE_ASK)/MarketInfo(val[i],MODE_POINT);
}
Sleep(Time_*1000);//пауза сек.
}

/*
количество_символов=SymbolsList(val, true);//запись в массив val инструменты и их количество вызов функции SymbolsList
if(количество_символов == -1){ Alert("Ошибка открытия файла в SymbolsList(string &Symbols[], bool Selected)"); return;}

while(true&&!IsStopped()){ //если разрешить и не отанавливать скрипт продолжим
на_экран="\r\n"; //отступ
for(i=0;i<количество_символов;i++)//посчитаем стоимость спреда для инструментов из обзора рынка
на_экран=на_экран+val[i]+" стоимость спреда = " + DoubleToStr(MarketInfo(val[i],MODE_SPREAD)*MarketInfo(val[i],MODE_TICKVALUE),0)+"\r\n";
Comment(на_экран);//выведем на экран
Alert("Пересчитаем");//сигнал
Sleep(3000);//пауза 3 сек.
}
*/
}
void deinit(){Comment("");}
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=


//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
// функция читает из обзора рынка все фин.инстр.
//+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
int SymbolsList(string &Symbols[], bool Selected){
int Offset, SymbolsNumber; string SymbolsFileName;
if(Selected) SymbolsFileName = "symbols.sel"; else SymbolsFileName = "symbols.raw";
int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN|FILE_READ);
if(hFile < 0) return(-1); if(Selected) { SymbolsNumber = (FileSize(hFile) - 4) / 128; Offset = 116; }
else { SymbolsNumber = FileSize(hFile) / 1936; Offset = 1924; }
ArrayResize(Symbols, SymbolsNumber);
if(Selected) FileSeek(hFile, 4, SEEK_SET);
for(int i = 0; i < SymbolsNumber; i++){Symbols[i] = FileReadString(hFile, 12); FileSeek(hFile, Offset, SEEK_CUR);}
FileClose(hFile);
return(SymbolsNumber);
}

 
globad:

Всем здрасте! Помогите пожалуйста объединить следующие вещи. В итоге должно получиться: две линии следующие за ценой одна ниже Ask на 20п.,....

Это неуважение к тем, кого просите. Научитась правильно выкладывать код -> SRC

Причина обращения: