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
    учи С#, там таких проблем не возникает
      • SHCHUTUSHCHA
        12 января 2014, 20:58
        Андрей Ерохин, С# он не сложный. любой язык программирования реально выучить максимум за неделю
        • skatino
          12 января 2014, 21:01
          SHCHUTUSHCHA, сам выучил?
          • SHCHUTUSHCHA
            12 января 2014, 21:40
            skatino, да я знаю C#
          • SHCHUTUSHCHA
            12 января 2014, 21:41
            Андрей Ерохин, чтобы напрогать калькулятор нужно максимум пару часов но никак не неделя
    • Дмитрий Ворожцов
      12 января 2014, 21:13
      SHCHUTUSHCHA, ответ сколь простой, столь же, в данном случае, и совершенно бессмысленный.
  • skatino
    12 января 2014, 20:59
    floor округляет… попробуй убрать… но там логику дальше смотреть надо, а то мало ли.

    сча времени мало, могу завтра посмотреть… если забуду в личку напомни
  • Dachnik
    12 января 2014, 21:27
    попробуй поменять floor(pValue)на функцию APPLY_SCALE(pValue,2)
    • skatino
      12 января 2014, 21:33
      Dachnik, еще можно floor(pValue*100)/100
      • skatino
        12 января 2014, 21:34
        skatino, смысл один и тот же… результат тоже. разница небольшая. если не помогает, будем смотреть дальше
  • Dachnik
    12 января 2014, 22:28
    SET_LABEL_PARAMS возможно надо
    Тут пример как в табличку вывести
    www.freeman.li/stati/programnoe-obespechenie/rasshirenija-dlja-quik/novyi-indikator-dlja-quik-urovni-pivot.html
  • Dachnik
    12 января 2014, 22:48
    Это же метка Возможно из за параметра ALIGNMENT Расположение картинки относительно текста (возможно 4 варианта: LEFT, RIGHT, TOP, BOTTOM
  • Dachnik
    13 января 2014, 14:10
    Загрузил скрипт из ссылки выше в quik, привязал к моему существующему графику и у меня тоже не строилось пока я не создал новый график. Что то кривовато в quik с выводом меток. Я особо то в эту тему не вникаю)

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

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