Дата: туда-сюда-обратно ...

 

Вроде простое преобразование а выдаёт с ошибкой... в данном случае в два дня.

//+--- Скрипт.
//+------------------------------------------------------------------+
int start()
{
datetime test=iTime(Symbol(),1440,iBarShift(Symbol(),1440,FirstOrderHistory()));
Alert("История: ",TimeToStr(FirstOrderHistory(),TIME_DATE|TIME_SECONDS),
" = Преобразование: ",TimeToStr(test,TIME_DATE|TIME_SECONDS) );
return(0);
}
//+------------------------------------------------------------------+
datetime FirstOrderHistory(){
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY); return(OrderOpenTime());}

История возвращаемая функцией FirstOrderHistory() верна,

а вот вычисляемое для переменной тест нет, хотя по логике дата подставляеся в iBarShift()

которая задаёт смещение для iTime() и которая в свою очередь должна бы вернуть правильную дату.

Ан нет... например:

2009.04.11 21:58:34 тест USDJPY,Daily: Alert: История: 2006.08.20 18:11:27 = Преобразование: 2006.08.18 00:00:00
*

ЗЫ: только сейсас заметил что раскраска кода на форуме не совпадает с едиторской.

В едиторе таймсерии зелёного цвета...

 

Видимо дыра в истоии.

iBarShift( string symbol, int timeframe, datetime time, bool exact=false)
Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости от параметра exact, -1 или смещение ближайшего бара.

 

Блин... точно!

20.08.2006г. было воскресенье и соответственно нет и бара...

Одно радует, что перескок даты взад неважен, а вот ели-б уперёд, тогды ой.

Спасибо!

 
kombat писал(а) >>

Блин... точно!

20.08.2006г. было воскресенье и соответственно нет и бара...

Одно радует, что перескок даты взад неважен, а вот ели-б уперёд, тогды ой.

Спасибо!

Интересно, как у Вас сделка открылась в воскресенье?

 
BabyBear >>:

Интересно, как у Вас сделка открылась в воскресенье?

Вполне возможно.

У некоторых брокеров такой большой сдвиг (задержка) времени, что когда у нас начинается понедельник, то у них ещё воскресение.

Америкосы.

 
BabyBear >>:

Интересно, как у Вас сделка открылась в воскресенье?

Это была не сделка а самый первый ордер, а он как правило один - пополнение депо.

А именно то, что пополнение автоматом и сбило с толку... ибо не сразу сообразил что это возможно и в выходные...

*

Функцией FirstOrderHistory() пользуюсь для определения самого первого в истории.

В данном случае понадобилось получить дату и\или смещение до этого самого ордера.

Кстати, тема в принципе куда более развёрнута нежели то, что уже спросил\решил...

*

Снова о "туда-сюда".

Задумал индикатор баланса. Да лехко! однако... вот...

//+--- учёбный: 1_линия.mq4 ---------------------+
#property  indicator_separate_window
#property  indicator_buffers 1   // количество буферов
#property  indicator_color1  Red // задаём цвет линии
#property  indicator_width1 1    // толщина линии
#property  indicator_style1 0    // стиль линии
double     Buffer1[]; // обьявление массива
//
int init()
  {
   SetIndexBuffer(0,Buffer1);
   SetIndexStyle(0,DRAW_LINE);
   return(0);
  }
//
int start()
{ 
int oht=OrdersHistoryTotal();
double chd, min, max;
for(int i=0; i<oht; i++) 
   {
   OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
   if(OrderType()==0||OrderType()==1) chd+=OrderProfit();
   Buffer1[i]=chd;
   if(chd>max) max=chd; if(chd<min) min=chd;
   }
return(0);
}
//-----------------------------------------------------------+

Линия то появилась, но задом-наперёд. Что в принципе так-же легко обьяснимо:

- счёт и отображение начинаются с нулевого бара в глубь истории

Посему тут-же возникает желание развернуть отсчёт начиная со смещения на количество ордеров в истории.

В общем таки мороки много... особенно для неопытных как я... ;)))

*

if(chd>max) max=chd; if(chd<min) min=chd;

две простых конструкции вычисляющие попутно максимум и минимум значений.

 
BabyBear >>:

Интересно, как у Вас сделка открылась в воскресенье?

есть брокеры у которых даже в субботу вечером открыться можно

не только в воскресенье под вечер

--

если быть точным то 24 часа 7 дней

рынок форекс на самом деле работает без выходных

и хорошие брокеры не тормозят котировки в выходные

 
YuraZ писал(а) >>

и хорошие брокеры не тормозят котировки в выходные

Тогда зачем они это делают?

 
Swetten >>:

Тогда зачем они это делают?

кто?

хорошие ? или те которые не очень?

--

мне кажется те которые не очень

просто не могут себе позволить работать 7 дней в неделю по 24 часа

---

кстати некоторые которые в 2008 и ранее давали котировки в выходные

и дилинг работал в субботу и воскресеньше

перестали давать их в 2009 и работать в выходные

видимо тоже перешли в разряд обычных

--

кризис - оптимизация расходов

не надо платить персоналу в выходные

не надо поддерживать работу дилинга

отсюда затрат меньше...

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