да складывать и делить на пополам, округлять до единицы в меньшую сторону, они-то для генерации тиков нужны, так с ними особо делать нечего (как по мне)
Дмитрий, а могли бы Вы набросать код скрипта?
Пробовал такое дело, отказался от него. Open и Close можно расчитать, а вот High и Low - это задачка. Если умножать High на High, Low на Low - понятно. Если делить надо, High на High а Low на Low - не факт, что получится High и Low, Тогда High делить на Low, а Low на High, то слишком лохмато получается, а если еще взять котировки из хистори центра, то вообще... Может кто придумает.
хм.. странно, чего вас так смущают хаи и лоу?
вот взял для примера AUDUSD & AUDJPY & USDJPY, минутки, прикинул хаи на калькуляторе - один в один сходятся... может из-за того смущают, что мыслите делать тоже самое и на старших ТФ? так незачем это делать, старшие ТФ генерировать из минуток нужно, нормальные графики будут получаться, абсолютно нормальныеНаваял (переделал) я тут черновой вариант скрипта, работает, выгружает нужные котировки, но работает не красиво/не рационально (в цикле):
extern datetime BeginDate = D'2008.09.11'; extern datetime EndDate = D'2008.09.12'; extern string Separator = ","; extern string Symbol_2 = "AUDUSD"; extern string OutSymbol = "AUDJPY"; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ void start() { int i, j, b=0, bb=0, eb; string comm, st; string fn=OutSymbol+Period()+" "+ TimeToStr(BeginDate, TIME_DATE)+"-"+ TimeToStr(EndDate, TIME_DATE)+".csv"; double OutSymbolOpen, OutSymbolHigh, OutSymbolLow, OutSymbolClose, OutSymbolVolume; for (i=Bars; i>0; i--) { if (Time[i]>=BeginDate && Time[i]<=EndDate) { for (j=iBars(Symbol_2,PERIOD_M1); j>0; j--) { if (iTime(Symbol_2,PERIOD_M1,j)>=BeginDate && iTime(Symbol_2,PERIOD_M1,j)<=EndDate) { if (iTime(Symbol_2,PERIOD_M1,j)==Time[i]) { if (bb==0) bb=j; // фиксируем номер первого бара //здесь будут реальные вычисления выгружаемых котировок OutSymbolOpen = Open[i]*iOpen(Symbol_2,PERIOD_M1,j); OutSymbolHigh = High[i]*iHigh(Symbol_2,PERIOD_M1,j); OutSymbolLow = Low[i]*iLow(Symbol_2,PERIOD_M1,j); OutSymbolClose = Close[i]*iClose(Symbol_2,PERIOD_M1,j); OutSymbolVolume = (Volume[i]+iVolume(Symbol_2,PERIOD_M1,j))/2; st=TimeToStr(Time[i], TIME_DATE)+Separator+ TimeToStr(Time[i], TIME_MINUTES)+Separator+ DoubleToStr(OutSymbolOpen, 2)+Separator+ DoubleToStr(OutSymbolHigh, 2)+Separator+ DoubleToStr(OutSymbolLow, 2)+Separator+ DoubleToStr(OutSymbolClose, 2)+Separator+ DoubleToStr(OutSymbolVolume, 0); WritingLineInFile(fn, st); b++; eb=j; // фиксируем номер последнего бара } } } } } comm="Начало: "+TimeToStr(Time[bb], TIME_DATE|TIME_MINUTES)+"\n"; comm=comm+"Конец: "+TimeToStr(Time[eb], TIME_DATE|TIME_MINUTES)+"\n"; comm=comm+"Выгружено баров: "+DoubleToStr(b, 0); Comment(comm); } //+------------------------------------------------------------------+ //| Запись строки в файл | //+------------------------------------------------------------------+ void WritingLineInFile(string FileName, string text) { int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " "); if (file_handle>0) { FileSeek(file_handle, 0, SEEK_END); FileWrite(file_handle, text); FileClose(file_handle); } } //+------------------------------------------------------------------+
т.е. скрипт во вложенном цикле, перебирая бары со второго графика, каждый раз перебирает бары от начала и до конца, а надо от уже проверенного бара
как поправить, подскажите
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
что имеем: есть Хистори Центр с архивом котировок, минуток, с 1999 года, но далеко не по всем валютным парам, по основным есть
что хотелось бы: иметь все возможные котировки, минутки, с 1999 года по всем возможным валютным парам
мысль: сделать из имеющихся котировок через доллар, к примеру, все пары, которые можно сделать (отклонения в пару пунктов ерунда)
решение: экспорт котировок по основным парам в *.csv файлы и дальше "клеить"
вопрос в том - как это делать и с помошью чего?
может у кого есть опыт/мысли, поделитесь, будьте любезны