Автор |
Сообщение |
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Отлично. Н счет моды или максимума - подумаю. |
Забыл.
Забыл сказать Спасибо ,
за то, что вот так, простым скриптом, Ами превратился в MarketDelta |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Rybak писал(а): |
Может я не прав (поправь), но я всё ж использую
Sum(V/100, BarsInRange) вместо MA(V, BarsInRange).
|
В принципе можно. Только поставь там LastValue(Sum(V/100, BarsInRange)) ибо я выводил линию Sum(V/100, BarsInRange) на чарт и она мне не понравилась... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Амиброкеровец
Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия
|
Олег, я попробовал тот код, который ты написал на странице 2, на всякий случай продублирую тут
Код: |
// для выбранного участка
//Market Profile
GraphXSpace = 5;
SetChartOptions(0, chartShowDates);
//===========================
Den = Param("Density", 40, 10, 100, 10);
ShowMP = ParamToggle("Show MP", "No|Yes");
ShowVP = ParamToggle("Show VP", "No|Yes");
StyleMP = ParamStyle("style MP", styleLine, maskAll);
StyleVP = ParamStyle("style VP", styleLine, maskAll);
//===========================
startBar = BeginValue(BarIndex());
endBar = EndValue(BarIndex());
BarsInRange = endBar -startBar;
if(BarsInRange < 1000)
{
BarsInRange = BarsSince(startBar == BarIndex()) + 1;
//===========================
//===========================
Bot = LastValue(ValueWhen(endBar == BarIndex(), LLV(L, BarsInRange), 1));
Top = LastValue(ValueWhen(endBar == BarIndex(), HHV(H, BarsInRange), 1));
Vol = LastValue(ValueWhen(endBar == BarIndex(), LastValue(Sum(V/100, BarsInRange)), 1));
//===========================
Range = Top-Bot;
Box = Range/Den;
VolumeUnit = Vol;
for (k = 0; k < Den; k++) // loop through each line (price) starting at the Lowest price
{
Line = Bot + k*Box;
detect = Line >= L & Line <= H;
if(ShowMP == True)
{
CountMPString = LastValue(ValueWhen(endBar == BarIndex(), Sum(detect, BarsInRange), 1));
MpLine = IIf(CountMPString >= BarsInRange, Line, Null);
Plot(MPLine, "", colorRed, styleMP);
}
if(ShowVP == True)
{
CountVPString = LastValue(ValueWhen(endBar == BarIndex(), Sum(detect*V, BarsInRange), 1));
VpLine = IIf(CountVPString >= BarsInRange*VolumeUnit, Line + Box/4, Null);
Plot(VPLine, "", colorBlue, styleVP);
}
}
}
Title = "{{NAME}} - {{INTERVAL}} {{DATE}} {{VALUES}} - \\c04 Market Profile \\c06 Volume Profile";
_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
|
Все работает классно, однако возникает такая аномалия, которая хорошо видна на скриншоте. С чем это может быть связано? |
_________________ Антон |
|
Посмотреть профиль Отправить личное сообщение |
|
Амиброкеровец
Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия
|
Кажется разобрался. Моя ошибка была связана с тем, что левая граница данных для профиля была далеко за "экраном" и соответственно Профили строились на ней, а правая часть графика масштабировалась с учетом данных Профилей на левой части. |
_________________ Антон |
|
Посмотреть профиль Отправить личное сообщение |
|
Karlitos
Зарегистрирован: 22.03.2009
Сообщения: 32
|
В просторах интернета нашел вот такой вот код. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
PROtest
Зарегистрирован: 16.08.2009
Сообщения: 13
|
Karlitos писал(а): |
В просторах интернета нашел вот такой вот код. |
Круто! Большое спасибо! Жаль только, что подтормаживает жутко. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Karlitos
Зарегистрирован: 22.03.2009
Сообщения: 32
|
PROtest писал(а): |
Круто! Большое спасибо! Жаль только, что подтормаживает жутко. |
Попробуй этот, он вроде не тормозит. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Karlitos
Зарегистрирован: 22.03.2009
Сообщения: 32
|
|
Посмотреть профиль Отправить личное сообщение |
|
PROtest
Зарегистрирован: 16.08.2009
Сообщения: 13
|
Karlitos писал(а): |
PROtest писал(а): |
Круто! Большое спасибо! Жаль только, что подтормаживает жутко. |
Попробуй этот, он вроде не тормозит. |
wow...супер! Теперь всё пучком. Ещё раз СПАСИБО! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
hardcam
Зарегистрирован: 12.11.2010
Сообщения: 124
|
Доброе утро!
скачал вот такую формулу
Код: |
_SECTION_BEGIN("MarketProfile");
//------------------------------------------------------------------------------
//
// Formula Name: Market Profile
//
// Use with 5/15min chart
// Originial - From AFL library
// Edited by - Milind / KAKA
//Market Profile 9/12/2009
PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);
EnMP2= ParamList("MarketProfile","Solid|Lines|Letters");
styleLines = ParamStyle("Style", styleLine, maskAll);
Type=ParamList("Type","Price Profile|Volume Profile");
Period= ParamList("Base","Hourly|Daily|Weekly|Monthly",1);
Den = Param("Density", 1, 0.25, 100, 0.25); // Resolution in terms of $
percent=Param("Value Area", 70, 1, 100, 1);
ViewTPOCount= ParamToggle("Show TPO Count", "No|Yes",1);
ViewPOC = ParamToggle("Show POC", "No|Yes",1);
ViewVALVAH = ParamToggle("Show VAL VAH Line", "No|Yes",1);
Viewfill = ParamToggle("Show VA Fill", "No|Yes",1);
Colorpoc=ParamColor("Color POC", colorYellow);
Colorfill=ParamColor("Color Fill", ColorRGB(20,40,60));
EnIB = ParamToggle("Show Initial Balance", "Yes|No");
IBBars = Param("Initial Balance Bars", 2, 0, 10, 1);
if(Period=="Daily"){
BarsInDay = BarsSince(Day() != Ref(Day(), -1));
Bot = TimeFrameGetPrice("L", inDaily, 0);
Top = TimeFrameGetPrice("H", inDaily, 0);
Vol = TimeFrameGetPrice("V", inDaily, 0);
}
if(Period=="Hourly"){
BarsInDay = BarsSince(Minute() != Ref(Minute(), -1));
Bot = TimeFrameGetPrice("L", in5Minute, 0);
Top = TimeFrameGetPrice("H", in5Minute, 0);
Vol = TimeFrameGetPrice("V", in5Minute, 0);
}
if(Period=="Weekly"){
BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
Bot = TimeFrameGetPrice("L", inWeekly, 0);
Top = TimeFrameGetPrice("H", inWeekly, 0);
Vol = TimeFrameGetPrice("V", inWeekly, 0);
}
if(Period=="Monthly" ){
BarsInDay = BarsSince(Month() != Ref(Month(), -1));
Bot = TimeFrameGetPrice("L", inMonthly, 0);
Top = TimeFrameGetPrice("H", inMonthly, 0);
Vol = TimeFrameGetPrice("V", inMonthly, 0);
}
CurTop = HHV(H,BarsInDay+1);
Curbot = LLV(L,BarsInDay+1);
Range = Highest(Top-Bot);
TodayRange = Top - Bot;
AveRange = Sum(Top-Bot,30)/30;
LAveRange = AveRange[BarCount-1];
// Initialization
baseX = 0;
baseY = floor(Bot[0]/Den)*Den;
relTodayRange = 0;
firstVisBar = Status("firstvisiblebar");
lastVisBar = Status("lastvisiblebar");
D=.0005;
total=0;
totaldn=0;
totalup=0;
shiftup=0;
shiftdn=0;
startr=0;
for (j=0; j <= 100; j++) {
x[j] = 0;
}
i0 = 0;
i1 = 0;
for (i=0; i<BarCount; i++) {
if (BarsInDay[i] == 0 AND i < firstVisBar) {
i0 = i;
}
if (BarsInDay[i] == 0 AND i >= lastVisBar) {
i1 = i;
}
}
i1 = BarCount-1;
for (i=i0; i<=i1; i++) {
if (BarsInDay[i] == 0) {
baseX = i;
baseY = floor(Bot[i]/Den)*Den;
maxY = floor(Top[i]/Den)*Den;
relTodayRange = (maxY-baseY)/Den;
for (j=0; j <= relTodayRange; j++) {
x[j] = 0;
}
}
range_x=lastVisBar-firstVisBar;
spread = Param("X Space", 80, 1, 200, 1);
tpl = Param("Time Per Letter (mins)", 30, 1, 360, 1);
Intervalmin=Interval()/60;
flt =Param("First Letter (Bars)", 1, 1, 60, 1);
teb=ParamToggle("To Each Bar","No|Yes");
Color=Param("Color Threshold",20,1,50,1);
stopg=0;
stopr=0;
new=0;
Voloumeunit=Vol[i]/LastValue(BarsInDay);
if (EnMP2 == "Letters") {
for (j=0; j<= relTodayRange; j++) {
if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
PlotText(StrExtract(" A , B , C , D , E , F , G , H , I , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z, a , b , c , d , e , f , g , h , i , j , k , L , m , n ,o , p , q , r , s , t , u , v , w , x , y , z ",
IIf(BarsInDay[i]<flt,0,ceil(BarsInDay[i]/(tpl/Intervalmin))-0)), baseX+IIf(teb==1,BarsInDay[i],x[j]*(range_x/spread)), baseY+j*Den,
colorWhite,ColorHSB(10+((ceil(BarsInDay[i]/(tpl/Intervalmin)))*Color),160,140));
x[j]++;
}
}
}
else if (EnMP2 == "Lines" OR EnMP2 == "Solid") {
for (j=0; j<= relTodayRange; j++) {
if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
if(Type=="Price Profile"){x[j]=x[j]+1;}
else if(Type=="Volume Profile"){x[j]=x[j]+round(V[i]/Voloumeunit);}
}
}
}
// Draw Initial Balance after 11am bar is complete
if (BarsInDay[i] == IBBars+1 AND EnIB == 0) {
Line1 = LineArray(i-2, curtop[i-1],i+7, curtop[i-1],0,True);
Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
Line1 = LineArray(i-2, curbot[i-1],i+7, curbot[i-1],0,True);
Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
}
// Examine x[j]
if ((i < BarCount - 1 AND BarsInDay[i+1] == 0) OR i == BarCount-1) {
maxXj = 0;
maxj = 0;
for (j=0; j<= relTodayRange; j++) {
if (maxXj < x[j]) {maxXj = x[j]; maxj = j; StaticVarSet("Maxj",j); new=j;
}
}
for ( n = 1; n <= relTodayRange; n++ ) {
total[n]=x[n]+total[n-1];
}
Value_area=(total[relTodayRange]*percent)/100;
for ( a = 1; a <= relTodayRange; a++ )
{
if(Maxj-a>0 AND Maxj+a<relTodayRange)
{
if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)]>=Value_area) {shiftup=a; shiftdn=a; break;}
}
else if(Maxj-a<1 )
{
if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]>=Value_area){shiftup=a; shiftdn=maxj-1; break;}
}
else if(Maxj+a>relTodayRange )
{
if(MaxXj+total[relTodayRange]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)] >=Value_area){shiftup=relTodayRange-maxj; shiftdn=a; break;}
}
}
Vah = LineArray(baseX, baseY+(maxj+shiftup)*Den, i, baseY+(maxj+shiftup)*Den,0,True);
Val = LineArray(baseX, baseY+(maxj-shiftdn)*Den, i, baseY+(maxj-shiftdn)*Den,0,True);
poc = LineArray(baseX, baseY+maxj*Den, i, baseY+maxj*Den,0,True);
if(ViewVALVAH==1){Plot(Vah,"",ParamColor("Color_VA", colorLightBlue),styleLine|styleNoRescale);
Plot(Val,"",ParamColor("Color_VA", colorLightBlue),styleLine|styleNoRescale);}
if(ViewPOC==1){Plot(poc,"",Colorpoc,styleLine|styleNoRescale);}
PlotText(""+(baseY+(maxj+shiftup)*Den),i-5,baseY+(maxj+shiftup)*Den,colorWhite);
PlotText(""+(baseY+(maxj-shiftdn)*Den),i-5,baseY+(maxj-shiftdn)*Den,colorWhite);
if(ViewTPOCount==1){PlotText(""+total[maxj-1],basex,bot[i]-(Top[i]-bot[i])*0.05,ParamColor("Color_VAL", colorLavender));
PlotText(""+(total[relTodayRange]-total[maxj]),basex,Top[i],ParamColor("Color_VAH", colorLavender));}
if(ViewPOC==1){PlotText(""+(baseY+maxj*Den),i-5,baseY+maxj*Den,Colorpoc);}
}
if (i < BarCount - 1 AND BarsInDay[i+1] == 0 OR i == BarCount-1) {
for (p = 1; p < relTodayRange+1; p++){
line = LineArray(baseX, baseY+p*Den, baseX+x[p], baseY+p*Den);
line2 = LineArray(baseX, baseY+(p-1)*Den, baseX+x[p-1], baseY+(p-1)*Den);
if (EnMP2 == "Solid")
{
PlotOHLC( Line, Line, Line2, Line2, "",IIf(p>(maxj+shiftup),ParamColor("Color_VAH", colorLavender),IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorLightBlue),ParamColor("Color_VAL", colorLavender))) ,styleCloud|styleNoRescale|styleNoLabel);
}
if (EnMP2 == "Lines")
{
Plot(line,"",IIf(p>(maxj+shiftup),ParamColor("Color_VAH", colorLavender),IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorLightBlue),ParamColor("Color_VAL", colorLavender))) , styleLines|styleNoLabel);
}
}
if(Viewfill==1){PlotOHLC(Vah,Vah,Val,Val,"",Colorfill,styleCloud|styleNoRescale|styleNoLabel);}
}
}
_SECTION_END(); |
выдает ошибку
качал тут
http://day-trader.ucoz.ru/load/programmy/programmy_market_profile/nabor_indikatorov_market_volume_profile_dlja_amibroker/20-1-0-630#comments
вторая формула оказалась с этого сайта) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
hardcam
Зарегистрирован: 12.11.2010
Сообщения: 124
|
сделал график по формуле с сайта
выглядит так( |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
У меня тоже не работает. Разбираться почему не стану. Очень там много кода... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
hardcam писал(а): |
сделал график по формуле с сайта
выглядит так( |
Очень большая цена индекса по сравнению с TickSize. Поставь TickSize 10 или даже 30 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
hardcam
Зарегистрирован: 12.11.2010
Сообщения: 124
|
Karlitos писал(а): |
PROtest писал(а): |
Круто! Большое спасибо! Жаль только, что подтормаживает жутко. |
Попробуй этот, он вроде не тормозит. |
отлично работает!
что значат цвета профиля? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
hardcam
Зарегистрирован: 12.11.2010
Сообщения: 124
|
000 писал(а): |
hardcam писал(а): |
сделал график по формуле с сайта
выглядит так( |
Очень большая цена индекса по сравнению с TickSize. Поставь TickSize 10 или даже 30 |
спасибо!
отлично все.
опять же вопрос)
а цвета что значат?
и на истории не работает как я понимаю?
И то что рисуется в риал тайме оно идет как вчерашний день с датой и временем вчерашнего числа.
а поле сегодняшнего дня пустое |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|