عرض مشاركة واحدة
قديم 02-10-2011, 08:31 AM   #16
ابـوغيـداء
محلل فني
 
تاريخ التسجيل: Sep 2011
المشاركات: 93
افتراضي رد: مشاكل وحلول ومعادلات الايمي بروكر AmiBroker

معادلة البولنجر



كود PHP:
_SECTION_BEGIN("Pivot Finder");
//------------------------------------------------------------------------------
//
//  Formula Name:    Pivot Finder
//  Author/Uploader: Mark 
//  E-mail:          
//  Date/Time Added: 2004-07-19 01:06:36
//  Origin:          This has got to be one of the best pivot finders I have found yet.  Nobody knows the author who wrote it.... Whoever you are thanks a bunch!!
//  Keywords:        
//  Level:           semi-advanced
//  Flags:           indicator
//  Formula URL:     http://www.amibroker.com/library/formula.php?id=359
//  Details URL:     http://www.amibroker.com/library/detail.php?id=359
//
//------------------------------------------------------------------------------
//
//  
//
//  // -- 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
//
//  
//
//  // -- 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), colorGreen, 0,
//
//  Low, Offset=-15);
//
//------------------------------------------------------------------------------

  

// -- 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"12540);

// -- Title.

Title Name() + " (" StrLeft(FullName(), 15) + ") O: " Open ", 

H: " 
High ", L: " Low ", C: " Close;

// -- Plot basic candle chart

PlotOHLC(OpenHighLowClose

"BIdx = " BarIndex() + 

"\n" "O = " "\n"+"H = ""\n"+"L = " 

"\n"+"C ",

colorBlackstyleCandle); 

GraphXSpace=7;

// -- Create 0-initialized arrays the size of barcount

aHPivs H;

aLPivs L;

// -- More for future use, not necessary for basic plotting

aHPivHighs H;

aLPivLows L;

aHPivIdxs H;

aLPivIdxs 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(HnBars);

aLLVBars LLVBars(LnBars);

aHHV HHV(HnBars);

aLLV LLV(LnBars);

// -- 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(aVisBarsBarIndex(), 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=0i<farbacki++) {

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=0j<nHPivsj++) {

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=0j<nLPivsj++) {

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



// -- OK, let's plot the pivots using arrows

PlotShapes(

IIf(aHPivs==1shapeDownArrowshapeNone), colorRed0,

HighOffset=-15);

PlotShapes(

IIf(aLPivs==1shapeUpArrow shapeNone), colorGreen0

LowOffset=-15);
 
_SECTION_END();

_SECTION_BEGIN("Bollinger Bands");
ParamField("Price field",-1);
Periods Param("Periods"152300);
Width Param("Width"20100.05 );
Color ParamColor("Color"colorCycle );
Style ParamStyle("Style");
PlotBBandTopPPeriodsWidth ), "BBTop" _PARAM_VALUES(), ColorStyle ); 
PlotBBandBotPPeriodsWidth ), "BBBot" _PARAM_VALUES(), ColorStyle ); 
_SECTION_END();

_SECTION_BEGIN("MA");
ParamField("Price field",-1);
Periods Param("Periods"152300110 );
PlotMAPPeriods ), _DEFAULT_NAME(), ParamColor"Color"colorCycle ), ParamStyle("Style") ); 
_SECTION_END(); 
ابـوغيـداء غير متواجد حالياً   رد مع اقتباس
  #16  
قديم 02-10-2011 , 08:31 AM
ابـوغيـداء ابـوغيـداء غير متواجد حالياً
محلل فني
تاريخ التسجيل: Sep 2011
المشاركات: 93
افتراضي رد: مشاكل وحلول ومعادلات الايمي بروكر AmiBroker

معادلة البولنجر



كود PHP:
_SECTION_BEGIN("Pivot Finder");
//------------------------------------------------------------------------------
//
//  Formula Name:    Pivot Finder
//  Author/Uploader: Mark 
//  E-mail:          
//  Date/Time Added: 2004-07-19 01:06:36
//  Origin:          This has got to be one of the best pivot finders I have found yet.  Nobody knows the author who wrote it.... Whoever you are thanks a bunch!!
//  Keywords:        
//  Level:           semi-advanced
//  Flags:           indicator
//  Formula URL:     http://www.amibroker.com/library/formula.php?id=359
//  Details URL:     http://www.amibroker.com/library/detail.php?id=359
//
//------------------------------------------------------------------------------
//
//  
//
//  // -- 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
//
//  
//
//  // -- 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), colorGreen, 0,
//
//  Low, Offset=-15);
//
//------------------------------------------------------------------------------

  

// -- 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"12540);

// -- Title.

Title Name() + " (" StrLeft(FullName(), 15) + ") O: " Open ", 

H: " 
High ", L: " Low ", C: " Close;

// -- Plot basic candle chart

PlotOHLC(OpenHighLowClose

"BIdx = " BarIndex() + 

"\n" "O = " "\n"+"H = ""\n"+"L = " 

"\n"+"C ",

colorBlackstyleCandle); 

GraphXSpace=7;

// -- Create 0-initialized arrays the size of barcount

aHPivs H;

aLPivs L;

// -- More for future use, not necessary for basic plotting

aHPivHighs H;

aLPivLows L;

aHPivIdxs H;

aLPivIdxs 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(HnBars);

aLLVBars LLVBars(LnBars);

aHHV HHV(HnBars);

aLLV LLV(LnBars);

// -- 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(aVisBarsBarIndex(), 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=0i<farbacki++) {

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=0j<nHPivsj++) {

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=0j<nLPivsj++) {

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



// -- OK, let's plot the pivots using arrows

PlotShapes(

IIf(aHPivs==1shapeDownArrowshapeNone), colorRed0,

HighOffset=-15);

PlotShapes(

IIf(aLPivs==1shapeUpArrow shapeNone), colorGreen0

LowOffset=-15);
 
_SECTION_END();

_SECTION_BEGIN("Bollinger Bands");
ParamField("Price field",-1);
Periods Param("Periods"152300);
Width Param("Width"20100.05 );
Color ParamColor("Color"colorCycle );
Style ParamStyle("Style");
PlotBBandTopPPeriodsWidth ), "BBTop" _PARAM_VALUES(), ColorStyle ); 
PlotBBandBotPPeriodsWidth ), "BBBot" _PARAM_VALUES(), ColorStyle ); 
_SECTION_END();

_SECTION_BEGIN("MA");
ParamField("Price field",-1);
Periods Param("Periods"152300110 );
PlotMAPPeriods ), _DEFAULT_NAME(), ParamColor"Color"colorCycle ), ParamStyle("Style") ); 
_SECTION_END(); 
رد مع اقتباس