Блог им. Doopler

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

    • 12 января 2014, 20:18
    • |
    • Aero
  • Еще
Ребята, есть небольшая просьба, имеется исходник файла для расчета уровней 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); менял сам, но после запятой вместо чисел, нули.
Как его модифицировать?
правда есть другой исходник Пивотов, но он настраивается исключительно для каждого инструмента, что очень неудобно, если интерестно могу и его приложить.
★4
20 комментариев
учи С#, там таких проблем не возникает
avatar
SHCHUTUSHCHA, ради одного калькулятора, с простейшей формулой расчета, учить C#, не)
avatar
Андрей Ерохин, С# он не сложный. любой язык программирования реально выучить максимум за неделю
avatar
SHCHUTUSHCHA, сам выучил?
avatar
skatino, да я знаю C#
avatar
SHCHUTUSHCHA, что бы написать простейший калькулятор для детского сада, может и хватит недели и то с гайдами)
avatar
Андрей Ерохин, чтобы напрогать калькулятор нужно максимум пару часов но никак не неделя
avatar
SHCHUTUSHCHA, ответ сколь простой, столь же, в данном случае, и совершенно бессмысленный.
floor округляет… попробуй убрать… но там логику дальше смотреть надо, а то мало ли.

сча времени мало, могу завтра посмотреть… если забуду в личку напомни
avatar
skatino, да похоже что округляет, но если убрать этот параметр, то число в таблице не будет отображаться.
Если смотреть по графику, то он вроде бы как счиает, а в таблице не показывает числа после запятой. Заранее спасибо
avatar
попробуй поменять floor(pValue)на функцию APPLY_SCALE(pValue,2)
avatar
Dachnik, еще можно floor(pValue*100)/100
avatar
skatino, смысл один и тот же… результат тоже. разница небольшая. если не помогает, будем смотреть дальше
avatar
Dachnik, Спасибо)все помогло)Кстати есть небольшая проблема с отображением уровней пивота, там должны быть числа но они отображаются не там где нужно, вот скрин cs14101.vk.me/c613422/v613422980/751b/lXCZ6tpi_s0.jpg
может знаешь в чем дело?
avatar
SET_LABEL_PARAMS возможно надо
Тут пример как в табличку вывести
www.freeman.li/stati/programnoe-obespechenie/rasshirenija-dlja-quik/novyi-indikator-dlja-quik-urovni-pivot.html
avatar
Dachnik, ну смотри, уровни то отображаются, но отображаются не там где надо. У меня все сделано по гайду, добавил еще пару уровней в расчет только, на форуме почитал, на старых версиях квиках все отображалось хорошо, а тут…
avatar
Это же метка Возможно из за параметра ALIGNMENT Расположение картинки относительно текста (возможно 4 варианта: LEFT, RIGHT, TOP, BOTTOM
avatar
Dachnik, я понимаю, у меня есть другой скрипт пивота, там подобный способ вывода на график, только уровни там пишуться не напротив их числовой шкалы измерения цены эмитента, а просто в правом уголке, вверху, но меня это не интерисует, интерисует как тут www.freeman.li/images/pivot2.png
avatar
Dachnik, Я нашел в чем проблема, у меня была привязка RSI к левой стороне графика, почему то скрипт кстати брал числовые значения графика именно с левой стороны, как исправить не знаешь?
avatar
Загрузил скрипт из ссылки выше в quik, привязал к моему существующему графику и у меня тоже не строилось пока я не создал новый график. Что то кривовато в quik с выводом меток. Я особо то в эту тему не вникаю)
avatar

теги блога Aero

....все тэги



UPDONW
Новый дизайн