Aero
Aero личный блог
12 января 2014, 20:18

Для тех кто знает язык Qpile

Ребята, есть небольшая просьба, имеется исходник файла для расчета уровней Pivot Point. Только расчет он производит по целым числам, цифер после запятой нет, поэтому не представляется возможным расчет цен с числами после запятой такие как евро\доллар втб и т.д
Прикладываю исходник
PORTFOLIO_EX VFPivot;
DESCRIPTION VFPivot;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
cSrc=«GR_RTS24»
cTrgt=«GR_RTS60»
FUNC Text2Date(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 LogData(Prm1,Prm2)
output = CREATE_MAP ()
output = SET_VALUE (output, «Param0», GET_INFO_PARAM(«SERVERTIME»))
output = SET_VALUE (output, «Param1», Prm1)
output = SET_VALUE (output, «Param2», Prm2)
ADD_ITEM (CurLogLine, output)
CurLogLine=CurLogLine+1
End Func
FUNC MyRound(pValue)
result=floor(pValue)
label_params=create_map()
label_params=set_value(label_params,«TEXT», result)
label_params=set_value(label_params,«IMAGE_PATH», «line.bmp»)
label_params=set_value(label_params,«ALIGNMENT», «RIGHT»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date)
label_params=set_value(label_params,«TIME», 0)
label_params=set_value(label_params,«R», 24)
label_params=set_value(label_params,«G», 107)
label_params=set_value(label_params,«B», 139)
label_params=set_value(label_params,«TRANSPARENCY», 0)
label_params=set_value(label_params,«FONT_FACE_NAME», «Tahoma»)
label_params=set_value(label_params,«FONT_HEIGHT», 14)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func

DELETE_ALL_ITEMS()
DELETE_ALL_LABELS(cTrgt)
CurLogLine=1
Year = "" & (0 + get_value(GET_DATETIME(), «YEAR»))
Month = "" & (0 + get_value(GET_DATETIME(), «MONTH»))
Day = "" & (0 + get_value(GET_DATETIME(), «DAY»))
Date = Text2Date(Year,Month,Day) & ""
LogData(«B», GET_INFO_PARAM(«SERVERTIME»))
for iDay from 1 to 2
Date=Date-1
if substr(Date & "",6,2)=«00»
Date=Date-68
end if
dCandles = Get_Candle_Ex (cSrc, Date, 0)
if dCandles<>""
dCandle=Get_Value (dCandles,«LINES»)
nO=Get_Value (dCandle,«OPEN»)+0
nH=Get_Value (dCandle,«HIGH»)+0
nL=Get_Value (dCandle,«LOW»)+0
nC=Get_Value (dCandle,«CLOSE»)+0
nDP=(nH+nL+nC)/3
nR1=2*nDP-nL
nS1=2*nDP-nH
nR2=nDP+(nR1-nS1)
nS2=nDP-(nR1-nS1)
LogData(«DP»,MyRound(nDP))
LogData(«R1»,MyRound(nR1))
LogData(«R2»,MyRound(nR2))
LogData(«S1»,MyRound(nS1))
LogData(«S2»,MyRound(nS2))
iDay=2
else
iDay=1
end if
end for
LogData(«E», GET_INFO_PARAM(«SERVERTIME»))

END_PROGRAM
PARAMETER Param1;
PARAMETER_TITLE Уровень;
PARAMETER_DESCRIPTION Уровень;
PARAMETER_TYPE STRING (200);
END
PARAMETER Param2;
PARAMETER_TITLE Знач;
PARAMETER_DESCRIPTION Знач;
PARAMETER_TYPE STRING (200);
END
END_PORTFOLIO_EX
 
Кстати  PARAMETER_TYPE NUMERIC(8,4); менял сам, но после запятой вместо чисел, нули.
Как его модифицировать?
правда есть другой исходник Пивотов, но он настраивается исключительно для каждого инструмента, что очень неудобно, если интерестно могу и его приложить.
20 Комментариев
  • SHCHUTUSHCHA
    12 января 2014, 20:31
    учи С#, там таких проблем не возникает
  • skatino
    12 января 2014, 20:59
    floor округляет… попробуй убрать… но там логику дальше смотреть надо, а то мало ли.

    сча времени мало, могу завтра посмотреть… если забуду в личку напомни
  • Dachnik
    12 января 2014, 21:27
    попробуй поменять floor(pValue)на функцию APPLY_SCALE(pValue,2)
  • Dachnik
    12 января 2014, 22:28
    SET_LABEL_PARAMS возможно надо
    Тут пример как в табличку вывести
    www.freeman.li/stati/programnoe-obespechenie/rasshirenija-dlja-quik/novyi-indikator-dlja-quik-urovni-pivot.html

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн