Блог им. 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); менял сам, но после запятой вместо чисел, нули.
Как его модифицировать?
правда есть другой исходник Пивотов, но он настраивается исключительно для каждого инструмента, что очень неудобно, если интерестно могу и его приложить.
124 | ★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

Читайте на SMART-LAB:
Фото
Снижение ключевой ставки на 50 б.п. может быть разумным компромиссом
Базовый прогноз Банка России по итогам октябрьского заседания предполагает возможность как сохранения ключевой ставки на текущем уровне...
Расширяя технические возможности: нестандартный подход к торговле с БКС Trade API
Торговый терминал — это готовое решение со своим набором функций и возможностей. Но что, если ваша стратегия требует нестандартного подхода или...
Анонсируем Big Day
Друзья, привет!   ⚡️ Анонсируем долгожданное и ставшее уже доброй традицией – ежегодное мероприятие для инвестиционного сообщества Big Day или...

теги блога Aero

....все тэги



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