樞軸點(Pivot Points)是一個非常單純的阻力支撐體系,是一種經典的日內交易策略。
大概10年前由某個期貨高手所發明,至今已廣泛應用在股票、期貨、國債、指數等高成交量的金融商品上。
經典的Pivot Point是7點系統,由7個價格組成。
計算原理:
軸心: Pivot Point = (High + Close + Low) / 3
阻力一: R1 = 2 * Pivot - Low
支撐一: S1 = 2 * Pivot - High
阻力二: R2 = Pivot + (R1 - S1)
支撐二: S2 = Pivot - (R1 - S1)
阻力三: R3 = High + 2 * (Pivot - Low)
支撐三: S3 = Low - 2 * (High - Pivot)
其中High爲最高價,Low爲最低價,Close是成交價。
樞軸點解釋:
1. pivot是所謂的軸心,就是阻力系統的中心,R、S是阻力和支撐;
2. pivot有吸引作用,在沒有大多頭和大空頭進場的情況下,價格是在R1和S1之間圍繞軸心運動,但運動可能是沒有規律的。有人專門做這個範圍內的交易,稱之爲Floor Trader;
3. 在強烈的多頭或空頭的推動下,價格會突破S1-R1區域,此時形成趨勢。但還是在正常的價格運動範圍之內,伴隨着強烈的方向感,多數時間是靠近R1、R2或者S1、S2運動,中間區域停留的時間不長;
4. R3、S3極端價格,在沒有特殊利空或利好消息的情況下一般不會達到。
如果整個交易日內價格都在R1-S1的區域內移動,說明主要交易者爲短線交易者,包括個人投資人,小基金等;
如果到了R2、S2區域,說明大的炒家出現了,此時也許已經在行情中,也許是行情的開始;
如果到了R3、S3區域,說明是強烈的趨勢,這時候的參與者就遠遠不是幾個基金,幾個投資人能做到了。
EA的實現:
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
//ePivotPoint.mq4
//eShining
//http://www.eshining.xyz
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
#property copyright "eShining"
#property link "http://www.eshining.xyz"
#property version "1.00"
#property strict
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
enum eTimeFrame{M1=1,M5=5,M15=15,M30=30,H1=60,H4=240,D1=1440};
extern eTimeFrame pTimeFrame=1440;//時間週期
extern int pCount=1;//要計算的週期數
extern int pShift=0;//偏移量
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
int OnInit(){
ChartInit();
return(INIT_SUCCEEDED);
}
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
void OnDeinit(const int reason){
}
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
void OnTick(){
double xR3,xR2,xR1,xP,xS1,xS2,xS3;
GetPivotPoint(Symbol(),xR3,xR2,xR1,xP,xS1,xS2,xS3,pTimeFrame,pCount,pShift);
CreateLine("PivotPoint",xP,Red);
CreateLine("R3",xR3,White);
CreateLine("R2",xR2,Yellow);
CreateLine("R1",xR1,Aqua);
CreateLine("S1",xS1,Aqua);
CreateLine("S2",xS2,Yellow);
CreateLine("S3",xS3,White);
}
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
void GetPivotPoint(string xSymbol,double &xR3,double &xR2,double &xR1,double &xP,double &xS1,double &xS2,double &xS3,int xTimeFrame=1440,int xCount=1,int xShift=0){/*樞軸點*/
double xH=iHigh(xSymbol,xTimeFrame,iHighest(xSymbol,xTimeFrame,MODE_HIGH,xCount,xShift+1));
double xL=iLow(xSymbol,xTimeFrame,iLowest(xSymbol,xTimeFrame,MODE_LOW,xCount,xShift+1));
double xC=iClose(xSymbol,xTimeFrame,xShift+1);
xP=(xH+xL+xC)/3;
xR1=2*xP-xL;
xS1=2*xP-xH;
xR2=xP+(xR1-xS1);
xS2=xP-(xR1-xS1);
xR3=xH+2*(xP-xL);
xS3=xL-2*(xH-xP);
}
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
void CreateLine(string xObjectName,double xPrice,color xColor=Red,string xFont="微軟雅黑",int xFontSize=10){
ObjectDelete(0,xObjectName);
ObjectCreate(0,xObjectName,OBJ_HLINE,0,0,xPrice);
ObjectSetInteger(0, xObjectName, OBJPROP_COLOR, xColor);
string xLabelName=xObjectName+"_Text";
ObjectDelete(0,xLabelName);
ObjectCreate(0,xLabelName,OBJ_TEXT,0,iTime(Symbol(),Period(),10),xPrice);
int xDigits=StrToInteger(DoubleToStr(MarketInfo(Symbol(),MODE_DIGITS),0));
ObjectSetString(0,xLabelName,OBJPROP_TEXT,xObjectName+"("+DoubleToStr(xPrice,xDigits)+")");
ObjectSetString(0,xLabelName,OBJPROP_FONT,xFont);
ObjectSetInteger(0,xLabelName,OBJPROP_FONTSIZE,xFontSize);
ObjectSetInteger(0,xLabelName,OBJPROP_COLOR,xColor);
}
//--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---+--+-----+--+------+---------+-+---+-+---
void ChartInit(){
ObjectsDeleteAll(0,0,-1);
ChartSetInteger(0,CHART_MODE,CHART_LINE);
ChartSetInteger(0,CHART_SHOW_GRID,false);
}
指標的實現:
傳送門:ePivotPoints指標下載(10月娛樂版)(每月不定時更新)
樞軸點的應用:
應用1:判斷市場趨勢
若樞軸點向上突破,則判斷市場上漲; 若樞軸點向下突破,則判斷市場下跌。 需注意的是,這是一個短期的趨勢判斷方法,只對當前週期交易有效,下一週期樞軸點需重新計算。
應用2:入場出場信號
若突破阻力位,則入場買多,設支撐位爲出場點,突破支撐位則止損; 若跌破支撐位,則入場買空,設阻力位爲出場點,突破阻力位則止損。
樞軸點的延伸:
Woodie's樞軸點
Woodie's樞軸點與傳統樞軸點類似,但計算方式略有不同,更注重先前時段的收盤價。計算規則如下:P = (H+L+2×C)/4
R1 = (2×P)−L
R2 = P+H−L
S1 = (2×P)−H
S2 = P−H+L
Camarilla樞軸點
Camarilla樞軸點的支撐和阻力共包含八個水平。計算規則如下:R4 = (H−L)×1.1/2+C
R3 = (H−L)×1.1/4+C
R2 = (H−L)×1.1/6+C
R1 = (H−L)×1.1/12+C
S1 = C−(H−L)×1.1/12
S2 = C−(H−L)×1.1/6
S3 = C−(H−L)×1.1/4
S4 = C−(H−L)×1.1/2
DeMark's樞軸點
Tom DeMark's樞軸點是一種流行的預測未來趨勢的方法。DeMark's樞軸點不能算嚴格意義上的樞軸點,而是預測時段高低位的方法。計算規則如下:如果收盤價 < 開盤價,那麼 X = H+2×L+C
如果收盤價 > 開盤價,那麼 X = 2×H+L+C
如果收盤價 = 開盤價,那麼 X = H+L+2×C
新高位= X/2-L
新低位= X/2-H
樞軸點在EA程序化交易中的應用:
策略編號:OABg
策略描述:一個基於樞軸點和馬丁格爾的簡單策略
策略概況:傳送門