И так вчера создавал тему по поводу пивотов, добавил еще по одному уровню расчета, убрал округление, добавил возможность расчета по недельным графикам
Вот собственно код
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 не рублю, а камариллу переделать нужно было.