Автор |
Сообщение |
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
I did not express clearly , I beg your pardon,
SetBarsRequired(sbrAll, 0);
//if(H[i] > PA1[i-1])
When the conditions are met , LL = Ref (Low, 1);
//if(L[i] < PS1[i-1])
When the conditions are met , HH = Ref (High, 1);
See Figure , when the HH line through PA1 line , LL lines moving position. |
_________________ Beginner
Последний раз редактировалось: Kreangast (Чт Авг 08, 2013 10:27 am), всего редактировалось 2 раз(а) |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ref (Low, 1)
looking to the future.
may need to use -1 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
000 писал(а): |
Ref (Low, 1)
looking to the future.
may need to use -1 |
I can not think of any other way .
Because H [i]> PA1 condition after the establishment . Lowest LL BAR from the next one begins recalculated.
OR Because L [i]< PS1 condition after the establishment . Hightest HH BAR from the next one begins recalculated.
See Figure
Would you please help me , thank you very much |
_________________ Beginner |
|
Посмотреть профиль Отправить личное сообщение |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
Kreangast писал(а): |
000 писал(а): |
Ref (Low, 1)
looking to the future.
may need to use -1 |
I can not think of any other way .
Because H [i]> PA1 condition after the establishment . Lowest LL BAR from the next one begins recalculated.
OR Because L [i]< PS1 condition after the establishment . Hightest HH BAR from the next one begins recalculated.
See Figure
Would you please help me , thank you very much |
box1=0;
box2=0;
SetBarsRequired(10000,10000);
procedure fillDarvas(start,end,swap,top, bottom )
{
for ( j = start; j < end; j++)
{
if( box1[j] == swap)
box1[j]= top ;
else
box1[j]= bottom;
if(box2[j] == swap)
box2[j]= bottom ;
else
box2[j]= top;
}
}
BoxArr1 = 0;
BoxArr2 = 0;
StateArray = 0;
DBuy = 0;
DSell = 0;
TopArray = 0;
BotArray = 0;
tick=0;
BoxTop = High[0];
BoxBot = Low[0];
swap=0;
state = 0;
BoxStart = 0;
for (i=0; i<BarCount; i++)
{
if (state==5)
{
TopArray[i]=BoxTop;
BotArray[i]=BoxBot;
if (Low[i]<(BoxBot*(1-tick/100)) || High[i]>(BoxTop*(1+tick/100)))
{
fillDarvas(BoxStart,i,swap,BoxTop,BoxBot);
state = 1;
swap = !swap;
BoxTop = High[i];
BoxStart = i;
}
}
else
{
if (High[i]<BoxTop)
{
if ((state<3) || (Low[i]>BoxBot))
{
state++;
}
else
{
state=3;
}
if (state==3)
BoxBot=Low[i];
}
else
{
state=1;
BoxTop=High[i];
}
}
StateArray[i] = state;
}
fillDarvas(BoxStart,BarCount,swap,BoxTop,BoxBot);
Buy=Cover=H>Ref(box1,-1) AND H>Ref(box2,-1) AND Ref(statearray,-1)==5;
Short=Sell=L<Ref(box1,-1) AND L<Ref(box2,-1) AND Ref(statearray,-1)==5;
Plot( box1, "" , 1 + statearray, styleLine );
Plot( box2, "" , 1 + statearray , styleLine );
_SECTION_END();
_SECTION_BEGIN("14 Line HHLL by: Isfandi");
//****** sahamlq45.blogspot.com ******
of=1;
n=100;
Hh=HHV(H,n);
Ll=LLV(L,n);
p1=ll+(hh-ll)*0.5;
p2=ll+(hh-ll)*0.382;
p3=ll+(hh-ll)*0.618;
p4=ll+(hh-ll)*0.236;
p5=ll+(hh-ll)*0.786;
Plot(p1, "p1:",9,styleDashed);
Plot(p2, "p1:",24,styleDashed);
Plot(p3, "p1:",24,styleDashed);
Plot(p4, "p1:",24,styleDashed);
Plot(p5, "p1:",24,styleDashed);
Plot(Hh, "p1:",8,styleDashed);
Plot(Ll, "p1:",13,styleDashed);
_SECTION_END();
_SECTION_END();
/* **********************************
Code to automatically identify pivots
********************************** */
// -- what will be our lookback range for the hh and ll?
farback=Param("How Far back to go",100,50,5000,10);
nBars = Param("Number of bars", 12, 5, 40);
// -- Title.
Title = Name() + " (" + StrLeft(FullName(), 15) + ") O: " + Open + ",
H: " + High + ", L: " + Low + ", C: " + Close;
// -- Plot basic candle chart
PlotOHLC(Open, High, Low, Close,
"BIdx = " + BarIndex() +
"\n" + "O = " + O + "\n"+"H = "+ H + "\n"+"L = " + L
+ "\n"+"C ",
colorBlack, styleCandle);
GraphXSpace=7;
// -- Create 0-initialized arrays the size of barcount
aHPivs = H - H;
aLPivs = L - L;
// -- More for future use, not necessary for basic plotting
aHPivHighs = H - H;
aLPivLows = L - L;
aHPivIdxs = H - H;
aLPivIdxs = L - L;
nHPivs = 0;
nLPivs = 0;
lastHPIdx = 0;
lastLPIdx = 0;
lastHPH = 0;
lastLPL = 0;
curPivBarIdx = 0;
// -- looking back from the current bar, how many bars
// back were the hhv and llv values of the previous
// n bars, etc.?
aHHVBars = HHVBars(H, nBars);
aLLVBars = LLVBars(L, nBars);
aHHV = HHV(H, nBars);
aLLV = LLV(L, nBars);
// -- Would like to set this up so pivots are calculated back from
// last visible bar to make it easy to "go back" and see the pivots
// this code would find. However, the first instance of
// _Trace output will show a value of 0
aVisBars = Status("barvisible");
nLastVisBar = LastValue(Highest(IIf(aVisBars, BarIndex(), 0)));
_TRACE("Last visible bar: " + nLastVisBar);
// -- Initialize value of curTrend
curBar = (BarCount-1);
curTrend = "";
if (aLLVBars[curBar] <
aHHVBars[curBar]) {
curTrend = "D";
}
else {
curTrend = "U";
}
// -- Loop through bars. Search for
// entirely array-based approach
// in future version
for (i=0; i<farback; i++) {
curBar = (BarCount - 1) - i;
// -- Have we identified a pivot? If trend is down...
if (aLLVBars[curBar] < aHHVBars[curBar]) {
// ... and had been up, this is a trend change
if (curTrend == "U") {
curTrend = "D";
// -- Capture pivot information
curPivBarIdx = curBar - aLLVBars[curBar];
aLPivs[curPivBarIdx] = 1;
aLPivLows[nLPivs] = L[curPivBarIdx];
aLPivIdxs[nLPivs] = curPivBarIdx;
nLPivs++;
}
// -- or current trend is up
} else {
if (curTrend == "D") {
curTrend = "U";
curPivBarIdx = curBar - aHHVBars[curBar];
aHPivs[curPivBarIdx] = 1;
aHPivHighs[nHPivs] = H[curPivBarIdx];
aHPivIdxs[nHPivs] = curPivBarIdx;
nHPivs++;
}
// -- If curTrend is up...else...
}
// -- loop through bars
}
// -- Basic attempt to add a pivot this logic may have missed
// -- OK, now I want to look at last two pivots. If the most
// recent low pivot is after the last high, I could
// still have a high pivot that I didn't catch
// -- Start at last bar
curBar = (BarCount-1);
candIdx = 0;
candPrc = 0;
lastLPIdx = aLPivIdxs[0];
lastLPL = aLPivLows[0];
lastHPIdx = aHPivIdxs[0];
lastHPH = aHPivHighs[0];
if (lastLPIdx > lastHPIdx) {
// -- Bar and price info for candidate pivot
candIdx = curBar - aHHVBars[curBar];
candPrc = aHHV[curBar];
if (
lastHPH < candPrc AND
candIdx > lastLPIdx AND
candIdx < curBar) {
// -- OK, we'll add this as a pivot...
aHPivs[candIdx] = 1;
// ...and then rearrange elements in the
// pivot information arrays
for (j=0; j<nHPivs; j++) {
aHPivHighs[nHPivs-j] = aHPivHighs[nHPivs-
(j+1)];
aHPivIdxs[nHPivs-j] = aHPivIdxs[nHPivs-(j+1)];
}
aHPivHighs[0] = candPrc ;
aHPivIdxs[0] = candIdx;
nHPivs++;
}
} else {
// -- Bar and price info for candidate pivot
candIdx = curBar - aLLVBars[curBar];
candPrc = aLLV[curBar];
if (
lastLPL > candPrc AND
candIdx > lastHPIdx AND
candIdx < curBar) {
// -- OK, we'll add this as a pivot...
aLPivs[candIdx] = 1;
// ...and then rearrange elements in the
// pivot information arrays
for (j=0; j<nLPivs; j++) {
aLPivLows[nLPivs-j] = aLPivLows[nLPivs-(j+1)];
aLPivIdxs[nLPivs-j] = aLPivIdxs[nLPivs-(j+1)];
}
aLPivLows[0] = candPrc;
aLPivIdxs[0] = candIdx;
nLPivs++;
}
}
// -- Dump inventory of high pivots for debugging
/*
for (k=0; k<nHPivs; k++) {
_TRACE("High pivot no. " + k
+ " at barindex: " + aHPivIdxs[k] + ", "
+ WriteVal(ValueWhen(BarIndex()==aHPivIdxs[k],
DateTime(), 1), formatDateTime)
+ ", " + aHPivHighs[k]);
}
*/
// -- OK, let's plot the pivots using arrows
PlotShapes(IIf(aHPivs==1, shapeDownArrow, shapeNone), colorRed, 0, High,
Offset=-15);
PlotShapes(IIf(aLPivs==1, shapeUpArrow , shapeNone), colorBlue, 0, Low,
Offset=-15);
//Please refer to |
_________________ Beginner |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Пацаны. Кто силен по не русски. Помогите мне понять. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Я тоже не могу понять - он говорит на ломаном аглицком, слова ставит рандомно, смысл весь теряется. Пусть изъясняется картинками) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
if(H[i] > PA1[i-1])
PA1[i] = PA[i];
PS1[i] = PS[i];
else if(L[i] < PS1[i-1]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
I need to recalculate the next one BAR TR values(Like with the first recalculated).
Who can help me thank you very much.
[url][IMG]http://p13.freep.cn/p.aspx?u=v20_p13_photo_1308082102046980_0.jpg[/IMG][/url] |
_________________ Beginner
Последний раз редактировалось: Kreangast (Чт Авг 08, 2013 4:02 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Kreangast писал(а): |
if(H[i] > PA1[i-1])
PA1[i] = PA[i];
PS1[i] = PS[i];
else if(L[i] < PS1[i-1]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
I need to recalculate the next one BAR TR values(Like with the first recalculated).
Who can help me thank you very much. |
NEXT??
Код: |
for(i = 2; i < BarCount - 1; i++) {
if(H[i-1] > PA1[i-2]) {
PA1[i] = PA[i];
PS1[i] = PS[i];
}
else if(L[i-1] < PS1[i-2]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
}
else {
PA1[i] = PA1[i - 1];
PS1[i] = PS1[i - 1];
}
}
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
Hi 000
See Figure
My skills is poor, please forgive me.
for(i = 2; i < BarCount; i++) {
if(H[i] > PA1[i-1]) {
PA1[i] = PA[i];
PS1[i] = PS[i];
}
else if(L[i] < PS1[i-1]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
}
The above work is completed .
Next Steps
Next Bar L[i] ,In this price to calculate the new values of TR.
or
Next Bar H[i] ,In this price to calculate the new values of TR. |
_________________ Beginner |
|
Посмотреть профиль Отправить личное сообщение |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
Kreangast писал(а): |
Hi 000
See Figure
My skills is poor, please forgive me.
for(i = 2; i < BarCount; i++) {
if(H[i] > PA1[i-1]) {
PA1[i] = PA[i];
PS1[i] = PS[i];
}
else if(L[i] < PS1[i-1]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
}
The above work is completed .
Next Steps
Next Bar L[i] ,In this price to calculate the new values of TR.
or
Next Bar H[i] ,In this price to calculate the new values of TR. |
After crossing the PA1 highest price , lowest price from under a Bar recalculation TR
After crossing the PS1 or the lowest price from the highest price under a Bar recalculation TR
Please think of a good way
Thank you very much
http://p13.freep.cn/p.aspx?u=v20_p13_photo_1308082102046980_0.jpg&click=1 |
_________________ Beginner |
|
Посмотреть профиль Отправить личное сообщение |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
Kreangast писал(а): |
Kreangast писал(а): |
Hi 000
See Figure
My skills is poor, please forgive me.
for(i = 2; i < BarCount; i++) {
if(H[i] > PA1[i-1]) {
PA1[i] = PA[i];
PS1[i] = PS[i];
}
else if(L[i] < PS1[i-1]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
}
The above work is completed .
Next Steps
Next Bar L[i] ,In this price to calculate the new values of TR.
or
Next Bar H[i] ,In this price to calculate the new values of TR. |
After crossing the PA1 highest price , lowest price from under a Bar recalculation TR
After crossing the PS1 or the lowest price from the highest price under a Bar recalculation TR
Please think of a good way
Thank you very much
http://p13.freep.cn/p.aspx?u=v20_p13_photo_1308082102046980_0.jpg&click=1 |
[IMG]http://p13.freep.cn/p.aspx?u=v20_p13_photo_1308082212067697_0.jpg[/IMG] |
_________________ Beginner |
|
Посмотреть профиль Отправить личное сообщение |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
NEXT??
Код: |
for(i = 2; i < BarCount - 1; i++) {
if(H[i-1] > PA1[i-2]) {
PA1[i] = PA[i];
PS1[i] = PS[i];
}
else if(L[i-1] < PS1[i-2]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
}
else {
PA1[i] = PA1[i - 1];
PS1[i] = PS1[i - 1];
}
}
|
[/quote]
Is not it can be understood as the end of the calculation after the establishment of the current condition of PA1.
Initialization calculate the next BAR Lowest Low + TR * 8. ( Prior to the Low value jumps the BAR) |
_________________ Beginner |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
there
Код: |
TR = Max(Max(High - Low), abs(Ref(Close, -1) - High)), abs(Ref(Close, -1) - Low)); |
calculated TR for each bar.
there
calculated PA for each bar
there
PA for this bar |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Kreangast
Зарегистрирован: 28.07.2013
Сообщения: 79
|
000 писал(а): |
there
Код: |
TR = Max(Max(High - Low), abs(Ref(Close, -1) - High)), abs(Ref(Close, -1) - Low)); |
calculated TR for each bar.
there
calculated PA for each bar
there
PA for this bar |
//
SetBarsRequired(sbrAll, 0);
TR = Max(Max((High - Low), abs(Ref(Close, -1) - High)), abs(Ref(Close, -1) - Low));
PA = L + TR * 8;
PA1[1] = PA[1];
PS = H - TR * 8;
PS1[1] = PS[1];
for(i = 2; i < BarCount; i++) {
if(H[i] > PA1[i-1]) {
PA1[i] = PA[i];
PS1[i] = PS[i];
}
else if(L[i] < PS1[i-1]) {
PS1[i] = PS[i];
PA1[i] = PA[i];
}
else {
PA1[i] = PA1[i - 1];
PS1[i] = PS1[i - 1];
}
}
Plot(C, "", colorBlack, styleCandle);
Plot(PA1, "", colorRed);
Plot(PS1, "", colorBlue);
//
After completion of the above work , then judge the following conditions are recalculated for the next BAR
if (H [I]> PA1 OR L [i] <PS1)
I hope that next BAR re looking for the highest price and the lowest price calculation.
Thank you for your reply |
_________________ Beginner |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Yes |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|