Блог им. Doopler

Pivot Point для Quik part2

    • 27 января 2014, 10:15
    • |
    • Aero
  • Еще
Добрый вечер, ранее я уже выкладывал немного доработанную версию пивотов smart-lab.ru/blog/159422.php Сегодня вот, что то мне моча в голову ударила, и я решил, что мне не нравится данное отображение пивот уровней.
Придя домой сразу же сел и начал изменять отображение этих самых уровней.

Вот что собственно и получилось:
 Pivot Point для Quik part2 

Есть два кода, один ведет расчет для недельных свечек (движение цены внутри недели), и код для дневных графиков (для интрадея)

 Для дневных свечек.
PORTFOLIO_EX VFPivot1;
DESCRIPTION VFPivot;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
cSrc=«GR21»
cTrgt=«GR100»
LinkR="####\###\####\###.bmp"
LinkPP="####\###\####\###.bmp"
LinkS="####\###\####\###.bmp"
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 MyRound1(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «R3»)
label_params=set_value(label_params,«IMAGE_PATH», LinkR)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound2(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «R2»)
label_params=set_value(label_params,«IMAGE_PATH», LinkR)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound3(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «R1»)
label_params=set_value(label_params,«IMAGE_PATH», LinkR)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound4(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «PP»)
label_params=set_value(label_params,«IMAGE_PATH», LinkPP)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound5(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «S1»)
label_params=set_value(label_params,«IMAGE_PATH», LinkS)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound6(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «S2»)
label_params=set_value(label_params,«IMAGE_PATH», LinkS)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound7(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «S3»)
label_params=set_value(label_params,«IMAGE_PATH», LinkS)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
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) & ""
Date1 = Text2Date(Year,Month,Day) & ""
LogData(«C», GET_INFO_PARAM(«SERVERTIME»))

for iDay from 1 to 2
Date1=Date1+0
Date=Date-1
if substr(Date & "",6,2)=«00»
Date=Date-10
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»,MyRound1(nR3))
LogData(«R2»,MyRound2(nR2))
LogData(«R1»,MyRound3(nR1))
LogData(«PP»,MyRound4(nDP))
LogData(«S1»,MyRound5(nS1))
LogData(«S2»,MyRound6(nS2))
LogData(«S3»,MyRound7(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
 
 

Для недельных свечек

PORTFOLIO_EX VFPivot;
DESCRIPTION VFPivot;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
cSrc=«GR_RTS24»
cTrgt=«GR_RTS60»
LinkR="####\###\####\###.bmp"
LinkPP="####\###\####\###.bmp"
LinkS="####\###\####\###.bmp"
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 Text1Date(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 MyRound1(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «R3»)
label_params=set_value(label_params,«IMAGE_PATH», LinkR)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound2(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «R2»)
label_params=set_value(label_params,«IMAGE_PATH», LinkR)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound3(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «R1»)
label_params=set_value(label_params,«IMAGE_PATH», LinkR)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound4(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «PP»)
label_params=set_value(label_params,«IMAGE_PATH», LinkPP)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound5(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «S1»)
label_params=set_value(label_params,«IMAGE_PATH», LinkS)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound6(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «S2»)
label_params=set_value(label_params,«IMAGE_PATH», LinkS)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
label_params=set_value(label_params,«HINT», result)
id=ADD_LABEL(cTrgt, label_params)
end func
FUNC MyRound7(pValue)
result=APPLY_SCALE(pValue,4)
label_params=create_map()
label_params=set_value(label_params,«TEXT», «S3»)
label_params=set_value(label_params,«IMAGE_PATH», LinkS)
label_params=set_value(label_params,«ALIGNMENT», «TOP»)
label_params=set_value(label_params,«YVALUE», result)
label_params=set_value(label_params,«DATE», Date1)
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», 17)
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) & ""
Date1 = Text1Date(Year,Month,Day) & ""
LogData(«C», GET_INFO_PARAM(«SERVERTIME»))

for iDay from 1 to 2
Date1=Date1+0
Date=Date-6
if substr(Date & "",6,2)=«00»
Date=Date-10
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»,MyRound1(nR3))
LogData(«R2»,MyRound2(nR2))
LogData(«R1»,MyRound3(nR1))
LogData(«PP»,MyRound4(nDP))
LogData(«S1»,MyRound5(nS1))
LogData(«S2»,MyRound6(nS2))
LogData(«S3»,MyRound7(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

И так настройка
1.Копируем этот код в текстовый файл, обзываем его Pivot.qpl 
засовываем в папку с квиком. Далее
cSrc=«#####» * График откуда мы берем информацию, #####- вместо решетки может быть любое ваше слово или цифра
cTrgt=«####»* График куда мы рисуем Пивот уровни, #####- вместо решетки может быть любое ваше слово или цифра
Важно! 
Два этих параметра не могут быть одинаковые!!!
Далее куда эти параметры запихивать, жмем на график откуда мы будем брать информацию правой кнопкой>параметры графика> price> вкладка Дополнительно, строка Индетификатор в это окошко вводим параметр ##### аналогично с графиком на котором мы будем рисовать эти самые ценовые уровни. Что бы использовать два скрипта одновременно необходимо в первой строчке
PORTFOLIO_EX VFPivot;  поменять VFPivot, допустим на VFPivot1 или VFPivotweek так же рекомендую поменять праметры cSrc и cTrgt просто другие циферки можете написать или вообще слово от балды, главное в идентификаторе написать такое же слово как и в скрипте.
2. Для отображения линий в окне графика вам нужно создать графический файл с расширением .bmp  в данном случае полосочку(у меня она шириной в два пикселя, и у меня их три штуки разного цвета).
После создания графических файлов в начале скрипта 
LinkR="####\###\####\###.bmp" ссылка на расположение файла для сопротивления
LinkPP="#\####\####\###.bmp" ссылка на расположение файла для разворотной точки
LinkS="#\###\###\#####.bmp" ссылка на расположение файла для поддержки
3. Так же нужно нажать в меню Таблица> Портфели>задать портфель, выбираем наш файлик, далее снова Таблица> Портфели>Простомтр портфеля

Исправлены баги с уезжанием пивот уровней далеко далеко за пределы видимых свечек.
Если числа из таблиц пропадают или не расчитываются, тыкаем правой кнопки мышки  на табличку «Начать расчет заного» 
Тут оригинал данной примочки>
http://freeman.li/stati/programnoe-obespechenie/rasshirenija-dlja-quik/novyi-indikator-dlja-quik-urovni-pivot.html
349 | ★11

Читайте на SMART-LAB:
Фото
GBP/USD: «Старый джентльмен» поймал попутный ветер
«Кабель» оттолкнулся от пробитого нисходящего канала, сформировав при этом свечную модель «Бычье поглощение» (хотя, учитывая вторую свечу в виде...
Фото
Всё выше. Или как изменились средние доходности облигаций (по рейтингам) за неделю
Всё выше и выше, и выше. Средние доходности облигаций в зависимости от рейтинга (бледные столбцы — доходности без сглаживания). И как они...
Фото
Mozgovik Weekly. Комментарий по ключевым новостям недели.
Здравствуйте! Комментарий по ключевым событиям недели.  Сбербанк показал сильные результаты за январь 2026 года: рост прибыли обеспечен...
Фото
Интер РАО. Неужели дивиденды будут минимальными за 3 года? Обзор производственных результатов и отчета РСБУ за Q4 2025г.
Вышел отчет по РСБУ за Q4 2025г. от компании Интер РАО: 👉Выручка — 15,49 млрд руб.(-14,0% г/г) 👉Себестоимость — 12,79 млрд руб.(-10,8%...

теги блога Aero

....все тэги



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