Aero
Aero личный блог
13 января 2014, 19:25

Кому нужно Pivot point для Quik

И так вчера создавал тему по поводу пивотов, добавил еще по одному уровню расчета, убрал округление, добавил возможность расчета по недельным графикам
Вот собственно код 
PORTFOLIO_EX VFPivot;
DESCRIPTION VFPivot;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
cSrc=«Graph1»
cTrgt=«Graph2»
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=APPLY_SCALE(pValue,4)
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(«C», 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)
nR3=nH+2*(nDP-nL)
nS3=nL-2*(nH-nDP)
LogData(«R3»,MyRound(nR3))
LogData(«R2»,MyRound(nR2))
LogData(«R1»,MyRound(nR1))
LogData(«PP»,MyRound(nDP))
LogData(«S1»,MyRound(nS1))
LogData(«S2»,MyRound(nS2))
LogData(«S3»,MyRound(nS3))
iDay=2
else
iDay=1
end if
end for
LogData(«D», 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
 
И так настройка
Копируем этот код в текстовый файл, обзываем его Pivotday.qpl 
засовываем в папку с квиком. Далее
cSrc=«Graph1»
cTrgt=«Graph2»

Параметр Gaph1 это тот график откуда мы будем брать информацию о свечке
Параметр Graph2  тот график где будет обозначаться соответственный ценовой уровень поддержки или сопротивления.
Далее куда эти параметры запихивать, жмем на график откуда мы будем брать информацию правой кнопкой>параметры графика> price> вкладка Дополнительно, строка Индетификатор в это окошко вводим параметр Graph1 анологично с графиком на котором мы будем рисовать эти самые ценовые уровни. Для расчета уровней по недельным графикам
в строке for
iDay from 1 to 2
Date=Date-1 нужно вместо Date-1 поставить Date-5
Что бы использовать два скрипта одновременно необходимо в первой строчке
PORTFOLIO_EX VFPivot;  поменять VFPivot, допустим на VFPivot1 или VFPivotweek так же рекомендую поменять праметры Graph1 и Graph2 просто другие циферки можете написать или вообще слово от балды, главное в идентификатор написать такое же слово как и в скрипте 
Если возникли вопросы обращайтесь в личку помогу настроить интрфейс в квике что бы оптимизировать работу этого скрипта. 
Так же нужно нажать в меню Таблица> Портфели>задать портфель, выбираем наш файлик, далее снова Таблица> Портфели>Простомтр портфеля

Так же благодарю Dachnik и skatino за помощь  
Тут оригинал данной примочки>
http://freeman.li/stati/programnoe-obespechenie/rasshirenija-dlja-quik/novyi-indikator-dlja-quik-urovni-pivot.html 

P.S если числа из таблиц пропадают или не расчитывает, тыкаем правой кнопки мышки  на табличку «Начать расчет заного»
17 Комментариев
  • laki
    13 января 2014, 20:01
    Спасибо +
  • Александр М
    14 января 2014, 01:45
    про файлик с картинкой забыли сказать
  • Dachnik
    14 января 2014, 14:53
    Кстати стандартаная болезнь, кавычки при вставки поменялись на руские, так возможно не пойдет.
    LogData(«R3»,MyRound(nR3)) поменять на """" english ))
  • Dachnik
    14 января 2014, 20:11
    не получиться просто 5 свечек назад? не вникал особо в код, но есть проверка на выходные и праздничные? Иначе уровни не верны будут(
  • Dachnik
    14 января 2014, 20:25
    Date=Date-68 Это какая дата?
  • oktb
    15 января 2014, 10:29
    Добрый день.
    С прошедшими праздниками!
    загрузил скрипт, все в таблице расчитывается, но проблема:
    не отрисовываются уровни на графике D1 (в оригинале отрисовывается).

    Не подскажите в чём проблема?
  • oktb
    15 января 2014, 10:39
    Извините, написал не правильно.
    уровни не выводятся на график с меньшем чем d1 ТФ.
    Т.о. графически уровни вообще не вижу, хотя таблица считается.

    P.S.загружен D1 и 10мин.
  • oktb
    15 января 2014, 11:03
    Все спасибо.
    Запоказывало -)
  • ЧС
    21 апреля 2015, 11:20
    не нашел где там скачать, подскажите кто скачивал
  • Wanderer
    04 сентября 2015, 02:12
    Спасибо добрый человек!
    Взял из Вашего скрипта функцию округления до 4го знака после запятой. А то в QPILE не рублю, а камариллу переделать нужно было.
  • Никак не настрою. Помоги. Как написать в личку? С уважением, Александр.

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

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