Aero
Aero личный блог
27 января 2014, 10:15

Pivot Point для Quik part2

Добрый вечер, ранее я уже выкладывал немного доработанную версию пивотов 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
0 Комментариев

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

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