if(id==CHARTEVENT_MOUSE_MOVE)
{
// получ и преобраз координ мышиChartXYToTimePrice(0,lparam,dparam,huin,timeVline,priceVline);
// переместить нa них линию
ObjectSet(stockname+"timeVline",OBJPROP_TIME1,timeVline);
}
такой вот кусок. на реальном графике, где индикатор запущен с нуля работает как надо.
а если запустить индикатор в тестере, то линия не перемещается вслед за мышкой. только если держать нажатой левую кнопку, или если сделать клик. что не так ?
еще непонятно что делает переменная которую я обозвал huin
Ещё раз спасибо, теперь горы кода можно убрать и пользоваться этой строчкой!!! ))
Видимо было не важно, прошедшее время от открытия бара или время до завершения бара. Этот вариант будет давать именно прошедшее время от начала бара, а не до завершения его.
А что за число 290? Зачем проверка на больше 290???
Видимо было не важно, прошедшее время от открытия бара или время до завершения бара. Этот вариант будет давать именно прошедшее время от начала бара, а не до завершения его.
А что за число 290? Зачем проверка на больше 290???
В ДАННОМ ВАРИАНТЕ ЧИСЛО 290 ПОКАЗЫВАЕТ ЧТО С НАЧАЛА ОТКРЫТИЯ БАРА ПРОШЛО БОЛЬШЕ 290 СЕКУНД. ИЗВИНЯЮСЬ ЗА КАПС, ЗАКЛИНИЛО )))
Выручайте пожалуйста, не могу найти ответа на простой вопрос.
int TimeSeconds(,,,,,) Возвращает количество секунд, прошедших с начала минуты указанного времени.
Если я вставлю в функцию время открытия бара
TimeSeconds(iTime(NULL,PERIOD_M5,0))
то как мне определить что до закрытия бара осталось 10 секунд?
Никак. Бар может состоять из единственного тика, а может включать десятки и сотни. Может и вовсе не состояться из-за отсутствия тиков. Можно оценить время окончания интервала бара, но закрытие его состоится только в момент открытия следующего бара.
tara: Никак. Бар может состоять из единственного тика, а может включать десятки и сотни. Может и вовсе не состояться из-за отсутствия тиков. Можно оценить время окончания интервала бара, но закрытие его состоится только в момент открытия следующего бара.
скажем так, мне было важно определить время, за 10 секунд до закрытия каждых пяти минут, а так как в анализе 28 валютных пар, то уж по какой нибудь паре этот бар будет, и колличество тиков в моём случае не важно.
Ну так из количества секунд в периоде вычти прошедшее время...
Спасибо большое, уже пять лет кружусь в mql4, а что есть такая функция не знал, ещё раз спасибо большое ))
Увы , не помогло, на пятом эта проверка не работает...(((
еще непонятно что делает переменная которую я обозвал huinСпасибо большое, уже пять лет кружусь в mql4, а что есть такая функция не знал, ещё раз спасибо большое ))
Увы , не помогло, на пятом эта проверка не работает...(((
Ну так надо было уточнить... Принцип остаётся тем-же
Можно ещё через CopyTime()...
Нет... Немного не так.
ГУРУ ПОДСКАЖИТЕ!!!! Почему не открывается ордер Sell????
//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2012, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
input double L=0.01;
input int TakeProfit = 150;
input int StopLoss = 150;
input int Magic = 0;
//+------------------------------------------------------------------+
int b=0;
int s=0;
//+------------------------------------------------------------------+
int OnInit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//+------------------------------------------------------------------+
//| Открываем ордер Buy |
//+------------------------------------------------------------------+
if(b==0)
{
b=My_Fun_b();
}
//+------------------------------------------------------------------+
//| Открываем ордер Sell |
//+------------------------------------------------------------------+
if(s==0)
{
double priceb=My_Fun_p();
Comment("Цена ордера Buy",priceb);
if(priceb==Bid) /*НЕ ВЫПОЛНЯЕТСЯ, ПОЧЕМУ*/
{
s=My_Fun_s(priceb);/*НЕ ВЫПОЛНЯЕТСЯ, ПОЧЕМУ*/
}
}
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Пользовательская Функция открытия первого ордера (buy) |
//+------------------------------------------------------------------+
int My_Fun_b()
{
b=OrderSend(_Symbol,0,0.01,Ask,0,0,0,"",414,0,clrBlue);
return(b);
}
//+------------------------------------------------------------------+
//| Пользовательская функция определенияцены первого ордера (buy) |
//+------------------------------------------------------------------+
double My_Fun_p()
{
double pb=0;
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderMagicNumber()==414)
{
pb=OrderOpenPrice();
}
return(pb);
}
//+------------------------------------------------------------------+
//| Пользовательская Функция открытия первого ордера (sell) |
//+------------------------------------------------------------------+
int My_Fun_s(double priceb)
{
s=OrderSend(_Symbol,1,0.01,priceb,0,0,0,"",0,0,clrRed);
return(b);
}
//+------------------------------------------------------------------+
Ну так надо было уточнить... Принцип остаётся тем-же
Можно ещё через CopyTime()...
Нет... Немного не так.
Спасибо, получилось , работает. Правильный вариант :
(TimeCurrent() - (datetime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIES_LASTBAR_DATE))>290
Ещё раз спасибо, теперь горы кода можно убрать и пользоваться этой строчкой!!! ))
Спасибо, получилось , работает. Правильный вариант :
(TimeCurrent() - (datetime) SeriesInfoInteger (NULL , PERIOD_M5 , SERIES_LASTBAR_DATE))>290
Ещё раз спасибо, теперь горы кода можно убрать и пользоваться этой строчкой!!! ))
Видимо было не важно, прошедшее время от открытия бара или время до завершения бара. Этот вариант будет давать именно прошедшее время от начала бара, а не до завершения его.
А что за число 290? Зачем проверка на больше 290???
Видимо было не важно, прошедшее время от открытия бара или время до завершения бара. Этот вариант будет давать именно прошедшее время от начала бара, а не до завершения его.
А что за число 290? Зачем проверка на больше 290???
Ошибки (2) при компиляции: Magic - undeclared identifier
Помогите исправить
bool CheckExists(int Type)
{
bool Result = True;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS))
if(OrderType() == Type && OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
if(OrderOpenTime() >= Time[0])
Result = False;
for(i = 0; i < OrdersHistoryTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
if(OrderType() == Type && OrderOpenTime() >= Time[0]
&& OrderMagicNumber() == Magic && OrderSymbol() == Symbol())
Result = False;
}
return(Result);
}
Выручайте пожалуйста, не могу найти ответа на простой вопрос.
int TimeSeconds(,,,,,) Возвращает количество секунд, прошедших с начала минуты указанного времени.
Если я вставлю в функцию время открытия бара
TimeSeconds(iTime(NULL,PERIOD_M5,0))
то как мне определить что до закрытия бара осталось 10 секунд?
Никак. Бар может состоять из единственного тика, а может включать десятки и сотни. Может и вовсе не состояться из-за отсутствия тиков. Можно оценить время окончания интервала бара, но закрытие его состоится только в момент открытия следующего бара.