← 戻る

Экспорт исторических событий

Можно ли использую S# выгружать по запросу из квика исторические данные, например история свечек? Если можно то как?

このトピックは参考になりましたか?

トピックを共有

コメント (8)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

artemox
artemox

Стандартно не поддерживается (т.к. таблицы Квик содержать только значения за текущий день) На форуме говорили, что можно сделать купайл таблицу со свечами и экспортировать её как произвольную таблицу с помошью S#

skuvv
skuvv 著者

Гори в аду этот купайл 🤬

Mikhail Sukhov
Mikhail Sukhov

skuvv: Гори в аду этот купайл 🤬

Да ладно. Я на купели такой портфель накатал за день. Это был мой первый день знакомства с купелью. Могу выслать.

А название топика рулит.😂

skuvv
skuvv 著者

Давайте, погляжу 😎 . Просто не хочется связываться с qpile...

Mikhail Sukhov
Mikhail Sukhov

skuvv: Давайте, погляжу 😎 . Просто не хочется связываться с qpile...


PORTFOLIO_EX SampleCandleExport;
DESCRIPTION Пример экспорта графиков со свечками по DDE;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;

PROGRAM

secClass = "QJSIM"
secCode = "LKOH"
timeFrame = 5
candleMaxCount = 50

DELETE_ALL_ITEMS()

dateTime = GET_DATETIME()
yearPart = GET_VALUE(dateTime, "YEAR")
monthPart = GET_VALUE(dateTime, "MONTH")
dayPart = GET_VALUE(dateTime, "DAY")
hourPart = GET_VALUE(dateTime, "Hour")
minutePart = GET_VALUE(dateTime, "Min")

minutePart = timeFrame * FLOOR(minutePart / timeFrame)

for i from 1 to candleMaxCount
    dateString = GetDataString(yearPart, monthPart, dayPart)
    timeString = GetTimeString(hourPart, minutePart)
  
    candle = GET_CANDLE(secClass, secCode, "", timeFrame, "PRICE", dateString, timeString)
    open = GET_VALUE (candle, "Open") + 0
    
    if (open>0)
      high=GET_VALUE (Candle, "High")
      low=GET_VALUE (Candle, "Low")
      close=GET_VALUE (Candle, "Close")
      volume = GET_VALUE(candle, "Volume")
      
      output = CREATE_MAP()
      output = SET_VALUE(output, "Date", dateString)
      output = SET_VALUE(output, "Time", timeString)
      output = SET_VALUE(output, "OpenPrice", open)
      output = SET_VALUE(output, "HighPrice", high)
      output = SET_VALUE(output, "LowPrice", low)
      output = SET_VALUE(output, "ClosePrice", close)
      output = SET_VALUE(output, "Volume", volume)
      
      ADD_ITEM(i, output)
    end if
    
    minutePart = minutePart - timeFrame
    
    if minutePart < 0
        minutePart = 60 - timeFrame
        hourPart = hourPart - 1
        
        if hourPart < 0
            hourPart = 23
            dayPart = dayPart - 1
            
            if dayPart < 1
                dayPart = 31
                monthPart = monthPart - 1
                
                if monthPart < 1
                    monthPart = 12
                    yearPart = yearPart - 1
                end if
            end if
        end if
    end if
end for

func GetDataString(year, month, day)
  if (LEN(month) < 2)
    month = "0" & month
  end if
  if (LEN(day) < 2)
    day = "0" & day
  end if
  result = year & month & day
end func

func GetTimeString(hour, min, sec)
  if (LEN(hour) < 2)
    hour = "0" & hour
  end if
    if (LEN(min) < 2)
    Min = "0" & min
  end if
  result = Hour & min & "00"
end func

END_PROGRAM

PARAMETER Date;
PARAMETER_TITLE Дата;
PARAMETER_DESCRIPTION Дата cвечки;
PARAMETER_TYPE STRING(30);
END

PARAMETER Time;
PARAMETER_TITLE Время;
PARAMETER_DESCRIPTION Время cвечки;
PARAMETER_TYPE STRING(30);
END

PARAMETER OpenPrice;
PARAMETER_TITLE Цена открытия;
PARAMETER_DESCRIPTION Цена открытия свечки;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER HighPrice;
PARAMETER_TITLE Максимальная цена;
PARAMETER_DESCRIPTION Максимальная цена свечки;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER LowPrice;
PARAMETER_TITLE Минимальная цена;
PARAMETER_DESCRIPTION Минимальная цена свечки;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER ClosePrice;
PARAMETER_TITLE Цена закрытия;
PARAMETER_DESCRIPTION Цена закрытия свечки;
PARAMETER_TYPE NUMERIC(10,2);
END

PARAMETER Volume;
PARAMETER_TITLE Объем;
PARAMETER_DESCRIPTION Объем сделок в свечке;
PARAMETER_TYPE NUMERIC(10,0);
END

END_PORTFOLIO_EX

skuvv
skuvv 著者

Спасибо. А как переделать чобы обновлялись/считались только последние 10 свечек, а не вся история?

Mikhail Sukhov
Mikhail Sukhov

skuvv: Спасибо. А как переделать чобы обновлялись/считались только последние 10 свечек, а не вся история?

candleMaxCount

skuvv
skuvv 著者

Я имел ввиду чтобы при первом расчете просчиталась вся история, а потом обновлялось например последние 10 свечек, а не всё.