找回密码
 注册
搜索
查看: 51172|回复: 942

周末送大礼,10个最顶级指标送上

[复制链接]
发表于 2008-12-14 01:55 PM | 显示全部楼层 |阅读模式
基于TS的原代码, 基于metastock, advanceget等我不帖了, 都是通的.有些有现成在AFL,如果有需求再说吧.
发表于 2008-12-14 01:56 PM | 显示全部楼层
赞老大。。。 :(131):
回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 01:58 PM | 显示全部楼层
在哪里啊?
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2008-12-14 01:58 PM | 显示全部楼层
游客,如果您要查看本帖隐藏内容请回复

[/hide] [ 本帖最后由 biorjin 于 2008-12-14 14:44 编辑 ]
回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 01:58 PM | 显示全部楼层
thank you very much where? hope have some AFL code. :P
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2008-12-14 01:59 PM | 显示全部楼层

这么着急?

饭要一口一口的吃,指标也要一个一个的贴

原帖由 xiaobailong 于 2008-12-14 13:58 发表 在哪里啊?

回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:00 PM | 显示全部楼层
原帖由 biorjin 于 2008-12-14 13:59 发表 这么着急? 饭要一口一口的吃,指标也要一个一个的贴


看到啦,多谢。
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2008-12-14 02:01 PM | 显示全部楼层

游客,如果您要查看本帖隐藏内容请回复

 

原帖由 oldfairy 于 2008-12-14 13:58 发表 thank you very much where? hope have some AFL code. :P
游客,如果您要查看本帖隐藏内容请回复

[ 本帖最后由 biorjin 于 2008-12-14 14:42 编辑 ]
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2008-12-14 02:02 PM | 显示全部楼层

不是最新的,你也将就用吧

原帖由 biorjin 于 2008-12-14 14:01 发表 TS都没有?给你一个 http://64.74.235.87/tscom_tool/release3//Build1683/Setup TradeStation 8.4 Build 1683.exe  

回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:03 PM | 显示全部楼层
宝马老大,如果您有AFLcode,能也贴一点么?谢谢
回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:03 PM | 显示全部楼层
好大的礼!
回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:03 PM | 显示全部楼层
哦。哈哈。谢谢
回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:03 PM | 显示全部楼层
 
原帖由 biorjin 于 2008-12-14 14:02 发表 不是最新的,你也将就用吧
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2008-12-14 02:06 PM | 显示全部楼层

呵呵,我还真有,不过记得paypal我

游客,如果您要查看本帖隐藏内容请回复

 

 

原帖由 oldfairy 于 2008-12-14 14:03 发表 宝马老大,如果您有AFLcode,能也贴一点么?谢谢

[ 本帖最后由 biorjin 于 2008-12-14 14:44 编辑 ]
回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:08 PM | 显示全部楼层

 

我这就去卖血去。

 

paypal 拿来

原帖由 biorjin 于 2008-12-14 14:06 发表 呵呵,我还真有,不过记得paypal我   /* MURREY MATH HORIZONTAL LINES Formula for Amibrokerbased on Excel spreadsheet by Jacek */ GraphXSpace=1; MaxGraph=12;Period=Param("MM_Perio ...

回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:14 PM | 显示全部楼层
谢宝马,收藏
回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:19 PM | 显示全部楼层
宝马你用的MetaStock是end of day, 还是real time的?
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2008-12-14 02:20 PM | 显示全部楼层

这么可怜?!好,我再送你一个AFL

以后发财了一些,记得给我提成。

BTW,如果机器太老,就别用了,可能会比较慢

游客,本帖隐藏的内容需要积分高于 200 才可浏览,您当前积分为 0

 

// Parameters
PeriodEMA = 13;
MACDIndicatorRange = 50;

// Volume filter
VolumeFilter = Param( "Volume MA filter", 100000, 50000, 500000, 100000 );
Timeframe = Interval(2);

// Adjust for weekly if necessary
if( Timeframe == "5-day" || Timeframe == "Weekly" ) {
  VolumeFilter  = VolumeFilter * 5;
}
else if( Timeframe == "Monthly") {
  VolumeFilter = VolumeFilter * 20;
}
else if( Timeframe != "Daily" ) {
  VolumeFilter = 0;
}

// Minimum number of bars required to form a divergence pattern. For a
// positive divergence, this is the number of falling bars in the context
// of a rising MACD or MACD-H pattern. Vice versa for negative divergence
MACDDivMinWidth = Param("Divergence min width", 4, 1, 10, 1 );

// Minimum width of negative projecting wave between two positive MACD-H waves,
// otherwise two positive waves will be considered as one single wave. This
// minimises invalid divergences, to ensure that "back of bears is broken".
// The same applies for a positive wave between two negative waves.
HistMinWidth = Param("Histogram min width", 4, 1, 10, 1 );


PeriodEMA = Optimize( "PeriodEMA ", 13, 5, 23, 1 );

// Other parameters
OpenPositions = 10;
ATRPeriod = 5;
InitialCapital = 100000;

PeriodFast = Param( "Fast EMA", 12, 2, 200, 1 );
PeriodSlow = Param( "Slow EMA", 26, 2, 200, 1 );
PeriodSignal = Param( "Signal EMA", 9, 2, 200, 1 );
MACDInd = MACD(PeriodFast, PeriodSlow );
SigInd = Signal(PeriodFast, PeriodSlow , PeriodSignal );
HistInd = MACDInd - SigInd ;
_N( macdStr = WriteVal( PeriodFast, 1.0 )+","+WriteVal( PeriodSlow , 1.0 ) );
_N( sigStr = macdStr + ","+WriteVal( PeriodSignal , 1.0 ) );

 

 

// Get displayed min and max value of MACD and MACD-H, to rescale it for better visibility
scMACDMax = LastValue(HHV(Max(MACDInd, sigInd),
                  BarsSince( Status("barvisible") AND NOT Ref(Status("barvisible"),-1) )));
scMACDMin = LastValue(LLV(Min(MACDInd, sigInd),
                  BarsSince( Status("barvisible") AND NOT Ref(Status("barvisible"),-1) )));
scaleMACD = Max( abs(scMACDMax), abs(scMACDMin) );

scHistMax = LastValue(HHV(HistInd,
            BarsSince( Status("barvisible") AND NOT Ref(Status("barvisible"),-1) )));
scHistMin = LastValue(LLV(HistInd,
            BarsSince( Status("barvisible") AND NOT Ref(Status("barvisible"),-1) )));
scaleHist = Max( abs(scHistMax), abs(scHistMin) );

 


_SECTION_BEGIN("Patterns Wave");    
Change = Param("Wave Period",7,0,100,1);
SupResA = Param("Sup-Res A Period",20,0,100,1);
SupResB = Param("Sup-Res B Period",25,0,100,1);

Res1 = ParamColor("Resistance High", colorRed );
Res2 = ParamColor("Resistance Low", colorDarkRed );
Sup1 = ParamColor("Support High", colorDarkGreen );
Sup2 = ParamColor("Support Low", colorBrightGreen );


procedure PlotShapeAt( x, y, shape, shift )
{
  PlotShapes( IIf( BarIndex() == x, shape, 0 ), colorWhite, 0, y, shift );
}

bi = BarIndex();
sbi = SelectedValue( bi );
GraphXSpace = 2;
Plot( Zig( C, Change ), "", colorWhite, styleThick );
upshift = 15;
if( SelectedValue( PeakBars( C, Change ) < TroughBars( C, Change ) ) )
{
   pt1 = PeakBars( C, Change, 1 ) == 0 ;
   pt2 = TroughBars( C, Change, 1 ) == 0 ;
}
else
{
   pt1 = TroughBars( C, Change, 1 ) == 0 ;
   pt2 = PeakBars( C, Change, 1 ) == 0 ;
   upshift = -upshift;
}
bpt1 = SelectedValue( ValueWhen( pt1, bi ) );
bpt2 = SelectedValue( ValueWhen( pt2, bi ) );
bpt3 = SelectedValue( ValueWhen( pt1, bi, 2 ) );
bpt4 = SelectedValue( ValueWhen( pt2, bi, 2 ) );
bpt5 = SelectedValue( ValueWhen( pt1, bi, 3 ) );
bpt6 = SelectedValue( ValueWhen( pt2, bi, 3 ) );
PlotShapeAt( bpt1, C, shapeDigit5, upshift );
PlotShapeAt( bpt2, C, shapeDigit4, -upshift  );
PlotShapeAt( bpt3, C, shapeDigit3, upshift );
PlotShapeAt( bpt4, C, shapeDigit2, -upshift );
PlotShapeAt( bpt5, C, shapeDigit1, upshift );
_SECTION_END();


_SECTION_BEGIN("Candle Detail");
Candletype=ParamList("Candle Type","Haikin|Candle",0);
if(Candletype=="Candle")
{
Candletype=barcolor =IIf(C>O, ParamColor("Up candlestick", colorBrightGreen ), ParamColor("Down candlestick", colorRed ));

Plot( C, "Close", barColor, styleNoTitle | ParamStyle("Style", styleCandle|styleThick, mask = maskAll) );
}
else if(Candletype=="Haikin")
{
HaClose = (O+H+L+C)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.3 );
HaHigh = Max( H, Max( HaClose, HaOpen ) );
HaLow = Min( L, Min( HaClose, HaOpen ) );
HaClose = (O+H+L+C)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.3 );
HaHigh = Max( H, Max( HaClose, HaOpen ) );
HaLow = Min( L, Min( HaClose, HaOpen ) );
xDiff = (HaHigh - Halow) * IIf(StrFind(Name(),"JPY"),100,10000);
barcolor = IIf(HaClose >= HaOpen,colorBrightGreen,colorRed);
SetBarFillColor( IIf(MACDInd >SigInd, colorDarkBlue,colorBlack) );
PlotOHLC( HaOpen, HaHigh, HaLow, HaClose, "", barcolor, styleCandle );
}
_SECTION_END();


_SECTION_BEGIN("Pivot");
nBars = Param("Number of bars", 12, 5, 40);
bShowTCZ = Param("Show TCZ", 1, 0, 1);
nExploreBarIdx = 0;
nExploreDate = 0;
nCurDateNum = 0;
DN = DateNum();
DT = DateTime();
bTCZLong = False;
bTCZShort = False;
nAnchorPivIdx = 0;
ADX8 = ADX(8);
if(Status("action")==1) {
 bDraw = True;
 bUseLastVis = 1;
} else {
 bDraw = False;
 bUseLastVis = False;
 bTrace = 1;
 nExploreDate = Status("rangetodate");
 for (i=LastValue(BarIndex());i>=0;i--) {
  nCurDateNum = DN;
  if (nCurDateNum == nExploreDate) {
   nExploreBarIdx = i;
  }
 }
}
GraphXSpace=7;
if (bDraw) {
}
aHPivs = H - H;
aLPivs = L - L;
aHPivHighs = H - H;
aLPivLows = L - L;
aHPivIdxs = H - H;
aLPivIdxs = L - L;
aAddedHPivs = H - H;
aAddedLPivs = L - L;
aLegVol = H - H;
aRetrcVol = H - H;
nHPivs = 0;
nLPivs = 0;
lastHPIdx = 0;
lastLPIdx = 0;
lastHPH = 0;
lastLPL = 0;
curPivBarIdx = 0;
aHHVBars = HHVBars(H, nBars);
aLLVBars = LLVBars(L, nBars);
aHHV = HHV(H, nBars);
aLLV = LLV(L, nBars);
nLastVisBar = LastValue(
 Highest(IIf(Status("barvisible"), BarIndex(), 0)));
curBar = IIf(nlastVisBar > 0 AND bUseLastVis, nlastVisBar,
 IIf(Status("action")==4 AND nExploreBarIdx > 0, nExploreBarIdx,
 LastValue(BarIndex())));
curTrend = "";
if (aLLVBars[curBar] < aHHVBars[curBar])
 curTrend = "D";
else
 curTrend = "U";
if (curBar >= 120) {
 for (i=0; i<120; i++) {
  curBar = IIf(nlastVisBar > 0 AND bUseLastVis,
   nlastVisBar-i,
   IIf(Status("action")==4 AND nExploreBarIdx > 0,
   nExploreBarIdx-i,
   LastValue(BarIndex())-i));
  if (aLLVBars[curBar] < aHHVBars[curBar]) {
   if (curTrend == "U") {
    curTrend = "D";
    curPivBarIdx = curBar - aLLVBars[curBar];
    aLPivs[curPivBarIdx] = 1;
    aLPivLows[nLPivs] = L[curPivBarIdx];
    aLPivIdxs[nLPivs] = curPivBarIdx;
    nLPivs++;
   }
  } else {
   if (curTrend == "D") {
    curTrend = "U";
    curPivBarIdx = curBar - aHHVBars[curBar];
    aHPivs[curPivBarIdx] = 1;
    aHPivHighs[nHPivs] = H[curPivBarIdx];
    aHPivIdxs[nHPivs] = curPivBarIdx;
    nHPivs++;
   }
  }  
 }
}
curBar =
 IIf(nlastVisBar > 0 AND bUseLastVis,
 nlastVisBar,
 IIf(Status("action")==4 AND nExploreBarIdx > 0,
 nExploreBarIdx,
 LastValue(BarIndex()))
 );
if (nHPivs >= 2 AND nLPivs >= 2) {
 lastLPIdx = aLPivIdxs[0];
 lastLPL = aLPivLows[0];
 lastHPIdx = aHPivIdxs[0];
 lastHPH = aHPivHighs[0];
 nLastHOrLPivIdx = Max(lastLPIdx, lastHPIdx);
 nAddPivsRng = curBar - nLastHOrLPivIdx;
 aLLVAfterLastPiv = LLV(L, nAddPivsRng); 
 nLLVAfterLastPiv = aLLVAfterLastPiv[curBar];
 aLLVIdxAfterLastPiv = LLVBars(L, nAddPivsRng); 
 nLLVIdxAfterLastPiv = curBar - aLLVIdxAfterLastPiv[curBar];
 aHHVAfterLastPiv = HHV(H, nAddPivsRng);
 nHHVAfterLastPiv = aHHVAfterLastPiv[curBar];
 aHHVIdxAfterLastPiv = HHVBars(H, nAddPivsRng);
 nHHVIdxAfterLastPiv = curBar - aHHVIdxAfterLastPiv[curBar];
 if (lastHPIdx > lastLPIdx) {
 
  /* There are at least two possibilities here. One is that
      the previous high was higher, indicating that this is a
      possible short retracement or one in the making.
      The other is that the previous high was lower, indicating
      that this is a possible long retracement in the working.
   However, both depend on opposing pivots. E.g., if I find
   higher highs, what if I have lower lows? 
  
   If the highs are descending, then I can consider:
       - a lower low, and leave it at that
       - a higher high and higher low
       - a lower low and another lower high
  */
  if (aHPivHighs[0] < aHPivHighs[1]) {
 
   if (nLLVAfterLastPiv < aLPivLows[0] AND
    (nLLVIdxAfterLastPiv - lastHPIdx - 1) >= 1
    AND nLLVIdxAfterLastPiv != curBar ) {
 
    // -- OK, we'll add this as a pivot.
    //    Mark it for plotting...
    aLPivs[nLLVIdxAfterLastPiv] = 1;
    aAddedLPivs[nLLVIdxAfterLastPiv] = 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] = nLLVAfterLastPiv;
    aLPivIdxs[0] = nLLVIdxAfterLastPiv;
    nLPivs++;
 
   // -- Test whether to add piv given last piv is high
   //    AND we have lower highs 
   }
 
  // -- Here, the last piv is a high piv, and we have
  //    higher-highs. The most likely addition is a
  //    Low piv that is a retracement.
  } else {
 
   if (nLLVAfterLastPiv > aLPivLows[0] AND
    (nLLVIdxAfterLastPiv - lastHPIdx - 1) >= 1
    AND nLLVIdxAfterLastPiv != curBar ) {
 
    // -- OK, we'll add this as a pivot.
    //    Mark it for plotting...
    aLPivs[nLLVIdxAfterLastPiv] = 1;
    aAddedLPivs[nLLVIdxAfterLastPiv] = 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] = nLLVAfterLastPiv;
    aLPivIdxs[0] = nLLVIdxAfterLastPiv;
    nLPivs++;
 
   // -- Test whether to add piv given last piv is high
   //    AND we have lower highs 
   } 
  // -- The last piv is a high and we have higher highs
  //    OR lower highs
  }
 
 /* ****************************************************************
  Still finding missed pivot(s). Here, the last piv is a low piv.
 **************************************************************** */
 } else {
 
  // -- First case, lower highs
  if (aHPivHighs[0] < aHPivHighs[1]) {
 
   if (nHHVAfterLastPiv < aHPivHighs[0] AND
    (nHHVIdxAfterLastPiv - lastLPIdx - 1) >= 1
    AND nHHVIdxAfterLastPiv != curBar ) {
 
    // -- OK, we'll add this as a pivot.
    //    Mark that for plotting
    aHPivs[nHHVIdxAfterLastPiv] = 1;
    aAddedHPivs[nHHVIdxAfterLastPiv] = 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] = nHHVAfterLastPiv;
    aHPivIdxs[0] = nHHVIdxAfterLastPiv;
    nHPivs++;
 
   // -- Test whether to add piv given last piv is high
   //    AND we have lower highs 
   }
 
  // -- Second case when last piv is a low piv, higher highs
  //    Most likely addition is high piv that is a retracement.
  //    Considering adding a high piv as long as it is higher
  } else {
 
   // -- Where I have higher highs,
   if (nHHVAfterLastPiv > aHPivHighs[0] AND
    (nHHVIdxAfterLastPiv - lastLPIdx - 1) >= 1
    AND nHHVIdxAfterLastPiv != curBar ) {
 
    // -- OK, we'll add this as a pivot.
    //    Mark it for plotting...
    aHPivs[nHHVIdxAfterLastPiv] = 1;
    aAddedHPivs[nHHVIdxAfterLastPiv] = 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] = nHHVAfterLastPiv;
    aHPivIdxs[0] = nHHVIdxAfterLastPiv;
    nHPivs++;
 
   // -- Test whether to add piv given last piv is high
   //    AND we have lower highs 
   }
 
  }
   
 }

// -- If there are at least two of each
}

/* ****************************************
// -- Done with finding pivots
***************************************** */

if (bDraw) {
PivotEntry = ParamColor( "Entry Color", colorBrightGreen );
PivotEntry2 = ParamColor( "Entry Color2", colorYellow );
PivotExit = ParamColor( "Exit Color", colorRed );
PivotExit2 = ParamColor( "Exit Color2", colorYellow );
 // -- OK, let's plot the pivots using arrows
 PlotShapes(
  IIf(aHPivs==1, shapeSquare, shapeNone),
   PivotExit, 0,  High, Offset=30);
 PlotShapes(
  IIf(aAddedHPivs==1, shapeSquare, shapeNone),
   PivotExit2, 0, High, Offset=30);
 PlotShapes(
  IIf(aLPivs==1, shapeSquare , shapeNone),  
   PivotEntry, 0, Low, Offset=-30);
 PlotShapes(
  IIf(aAddedLPivs==1, shapeSquare , shapeNone),
   PivotEntry2, 0, Low, Offset=-30);

 PlotShapes(
  IIf(aHPivs==1, shapeSquare, shapeNone),
   colorBlack, 0,  High, Offset=35);
 PlotShapes(
  IIf(aAddedHPivs==1, shapeSquare, shapeNone),
   colorBlack, 0, High, Offset=35);
 PlotShapes(
  IIf(aLPivs==1, shapeSquare , shapeNone),  
   colorBlack, 0, Low, Offset=-35);
 PlotShapes(
  IIf(aAddedLPivs==1, shapeSquare , shapeNone),
   colorBlack, 0, Low, Offset=-35);
}

/* ****************************************
// -- Done with discovering and plotting pivots
***************************************** */

// -- I'm going to want to look for possible retracement
risk = 0;
profInc = 0;
nLeg0Pts = 0;
nLeg0Bars = 0;
nLeg0Vol = 0;
nLeg1Pts = 0;
nLeg1Bars = 0;
nLeg1Vol = 0;
nLegBarsDiff = 0;
nRtrc0Pts = 0;
nRtrc0Bars = 0;
nRtrc0Vol = 0;
nRtrc1Pts = 0;
nRtrc1Bars = 0;
nRtrc1Vol = 0;

minRtrc = 0;
maxRtrc = 0;
minLine = 0;
maxLine = 0;
triggerLine = 0;
firstProfitLine = 0;
triggerInc = 0;
triggerPrc = 0;
firstProfitPrc = 0;
retrcPrc = 0;
retrcBar = 0;
retrcBarIdx = 0;
retrcRng = 0;
aRetrcPrc = H-H;
aRetrcPrcBars = H-H;
aRetrcClose = C;
retrcClose = 0;

// -- Do TCZ calcs. Arrangement of pivs very specific
//    for this setup.
if (nHPivs >= 2 AND
 nLPivs >=2 AND 
 aHPivHighs[0] > aHPivHighs[1] AND
 aLPivLows[0] > aLPivLows[1]) {

 tcz500 =
 (aHPivHighs[0] -
 (.5 * (aHPivHighs[0] - aLPivLows[1])));

 tcz618 =
 (aHPivHighs[0] -
 (.618 * (aHPivHighs[0] - aLPivLows[1])));

 tcz786 =
 (aHPivHighs[0] -
 (.786 * (aHPivHighs[0] - aLPivLows[0])));

 retrcRng = curBar  - aHPivIdxs[0];
 aRetrcPrc = LLV(L, retrcRng);
 aRetrcPrcBars  = LLVBars(L, retrcRng);
 
 retrcPrc = aRetrcPrc[curBar];
 retrcBarIdx = curBar - aRetrcPrcBars[curBar];
 retrcClose = aRetrcClose[retrcBarIdx];

 // -- bTCZLong setup?
 bTCZLong = (

  // -- Are retracement levels arranged in
  //    tcz order?

  // .500 is above .786 for long setups
  tcz500 >= (tcz786 * (1 - .005))
  AND
  // .681 is below .786 for long setups
  tcz618 <= (tcz786 * (1 + .005))
  AND

  // -- Is the low in the tcz range
  // -- Is the close >= low of tcz range
  //    and low <= high of tcz range
  retrcClose >= ((1 - .01) *  tcz618)
  AND
  retrcPrc <= ((1 + .01) *  tcz500)
  );
  
  // -- risk would be high of signal bar minus low of zone
  //risk = 0;

// -- lower highs and lower lows
} else if (nHPivs >= 2 AND nLPivs >=2
 AND aHPivHighs[0] < aHPivHighs[1]
 AND aLPivLows[0] < aLPivLows[1]) {

 tcz500 =
 (aHPivHighs[1] -
 (.5 * (aHPivHighs[1] - aLPivLows[0])));

 tcz618 =
 (aHPivHighs[0] -
 (.618 * (aHPivHighs[1] - aLPivLows[0])));

 tcz786 =
 (aHPivHighs[0] -
 (.786 * (aHPivHighs[0] - aLPivLows[0])));

 retrcRng = curBar  - aLPivIdxs[0];
 aRetrcPrc = HHV(H, retrcRng);
 retrcPrc = aRetrcPrc[curBar];
 aRetrcPrcBars  = HHVBars(H, retrcRng);
 retrcBarIdx = curBar - aRetrcPrcBars[curBar];
 retrcClose = aRetrcClose[retrcBarIdx];

 bTCZShort = (
  // -- Are retracement levels arranged in
  //    tcz order?

  // .500 is below .786 for short setups
  tcz500 <= (tcz786 * (1 + .005))
  AND 
  // .681 is above .786 for short setups
  tcz618 >= (tcz786 * (1 - .005))
  AND

  // -- Is the close <= high of tcz range
  //    and high >= low of tcz range
  retrcClose <= ((1 + .01) *  tcz618)
  AND
  retrcPrc >= ((1 - .01) *  tcz500)
  );
  
  // -- Risk would be top of zone - low of signal bar
  //risk = 0;
}

// -- Show zone if present
if (bTCZShort OR bTCZLong) {

 // -- Be prepared to see symmetry
 if (bTCZShort) {
  if (aLPivIdxs[0] > aHPivIdxs[0]) { 
   // -- Valuable, useful symmetry information
   nRtrc0Pts = aHPivHighs[0] - aLPivLows[1];
   nRtrc0Bars = aHPivIdxs[0] - aLPivIdxs[1] + 1;
   nRtrc1Pts = retrcPrc - aLPivLows[0];
   nRtrc1Bars = retrcBarIdx - aLPivIdxs[0] + 1;
  } else {
   nRtrc0Pts = aHPivHighs[1] - aLPivLows[1];
   nRtrc0Bars = aHPivIdxs[1] - aLPivIdxs[1] + 1;
   nRtrc1Pts = aHPivHighs[0] - aLPivLows[0];
   nRtrc1Bars = aHPivIdxs[0] - aLPivIdxs[0] + 1;
  }
 } else { // bLongSetup
  if (aLPivIdxs[0] > aHPivIdxs[0]) { 
   nRtrc0Pts = aHPivHighs[0] - aLPivLows[1];
   nRtrc0Bars = aHPivIdxs[0] - aLPivIdxs[1] + 1;
   nRtrc1Pts = retrcPrc - aLPivLows[0];
   nRtrc1Bars = retrcBarIdx - aLPivIdxs[0] + 1;
  } else {
   nRtrc0Pts = aHPivHighs[1] - aLPivLows[0];
   nRtrc0Bars = aLPivIdxs[0] - aHPivIdxs[1] + 1;
   nRtrc1Pts = aHPivHighs[0] - aLPivLows[0];
   nRtrc1Bars = aLPivIdxs[0] - aHPivIdxs[0] + 1;
  }
 }

 if (bShowTCZ) {
  Plot(
   LineArray( IIf(bTCZLong, aHPivIdxs[0], aLPivIdxs[0]),
   tcz500, curBar, tcz500 , 0),
   "tcz500", colorPaleBlue, styleLine|styleNoTitle|Stylehidden);
  Plot(
   LineArray( IIf(bTCZLong, aHPivIdxs[0], aLPivIdxs[0]),
   tcz618, curBar, tcz618, 0),
   "tcz618", colorPaleBlue, styleLine|styleNoTitle|styleHidden);
  Plot(
   LineArray( IIf(bTCZLong, aHPivIdxs[0], aLPivIdxs[0]),
   tcz786, curBar, tcz786, 0),
   "tcz786", colorTurquoise, styleLine|styleNoTitle|StyleHidden);
 }
 
// -- if (bShowTCZ)
}
 
if (bDraw) {
 Title = Name() + " (" + StrLeft(FullName(), 10) +
 ")  ATR: " + NumToStr(ATR(1), 4.2) + " ( " +
 NumToStr((C - Ref(C, -1)), 4.2) + " / " +
 NumToStr((((C - Ref(C, -1)) / Ref(C, -1)) * 100), 2.1) +  "% )  " +
 WriteVal( SelectedValue( DateTime() ), formatDateTime) +
 
// "Risk: " + WriteVal(risk, 2.1) + "%  \n" +

 WriteVal(nRtrc1Pts, 2.1) + "  \n" +

 WriteVal(nRtrc1Bars, 2.0);
}

// **************************
// END INDICATOR CODE
// **************************
_SECTION_END();

_SECTION_BEGIN("Support-Resistance");
//Plot( Close, "Close", colorWhite, styleCandle );
MaxGraph = 12;
BuyOffSet = SupResA;//Optimize("BuyOffSet",18,15,20,1);
SellOffset = BuyOffSet;//Optimize("SellOffset",2,2,14,2);
RegLength = 5;//Optimize("RegLength",5, 2,11,2);
BuyATRPeriod = 2;//Optimize("BuyATRPeriod",2,2,5,1);
SellATRPeriod = BuyATRPeriod;//Optimize("SellATRPeriod",4,2,11,2);
ATRMultiplier = 0.5;//Optimize("ATRMultiplier",1,0.7,1.25,.05);
Graph8 = HHV(H-ATRMultiplier*ATR(BuyATRPeriod),BuyOffset); /* RED */
Graph9 = LLV(L+ATRMultiplier*ATR(SellATRPeriod),SellOffset); /* GREEN */
ave=(Graph8+Graph9)/2;
Graph8Style=Graph9Style = styleNoTitle|styleDashed;
Graph9Color= Sup1; /* 5 is green */
Graph8Color = Res2; /* 4 is red */
nn=SupResB;
mmm=100;
TYP=(High + Low + 2*Close)/4;
CI=(TYP-MA(TYP,14))/(0.015*StDev(TYP,14));
CCCI=EMA(CI,5)+mmm;
Hh=HHV(H,nn);
Ll=LLV(L,nn);
MM=(Hh+Ll)/2;
CCCC=EMA(CCCI*(Hh-Ll)/(2*mmm)+Ll,5);
Plot(Hh,"High Reistance",Res1,styleLine|styleNoTitle);
Plot(Ll,"Low Suport",Sup2,styleLine|styleNoTitle);
_SECTION_END();

Title = StrFormat("\\c02'TOXIC PATTERN'..\\c02 {{NAME}}.....{{DATE}}.....Open @ %g.....High @ %g.....Low @ %g.....Close @ %g.....Change(%0.2f) {{VALUES}}",
O, H, L, C, SelectedValue( ROC( C, 1 )) );


原帖由 oldfairy 于 2008-12-14 14:08 发表   我这就去卖血去。   paypal 拿来

[ 本帖最后由 biorjin 于 2008-12-14 15:13 编辑 ]
Pivot MACD.png
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2008-12-14 02:20 PM | 显示全部楼层

RT

原帖由 google 于 2008-12-14 14:19 发表 宝马你用的MetaStock是end of day, 还是real time的?

回复 鲜花 鸡蛋

使用道具 举报

发表于 2008-12-14 02:27 PM | 显示全部楼层
is tradestation8.4 a free software? or need to buy license? thanks a lot!
回复 鲜花 鸡蛋

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|www.hutong9.net

GMT-5, 2024-4-29 10:06 AM , Processed in 0.115290 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表