И так вчера создавал тему по поводу пивотов, добавил еще по одному уровню расчета, убрал округление, добавил возможность расчета по недельным графикам
Вот собственно код
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 если числа из таблиц пропадают или не расчитывает, тыкаем правой кнопки мышки на табличку «Начать расчет заного»
LogData(«R3»,MyRound(nR3)) поменять на """" english ))
С прошедшими праздниками!
загрузил скрипт, все в таблице расчитывается, но проблема:
не отрисовываются уровни на графике D1 (в оригинале отрисовывается).
Не подскажите в чём проблема?
уровни не выводятся на график с меньшем чем d1 ТФ.
Т.о. графически уровни вообще не вижу, хотя таблица считается.
P.S.загружен D1 и 10мин.
Запоказывало -)
Взял из Вашего скрипта функцию округления до 4го знака после запятой. А то в QPILE не рублю, а камариллу переделать нужно было.