[MT4指标]FiboPiv指标
主图指标
mt4指标类型:震荡指标
是否能用在mt4手机版上:否
是否含有未来函数:无
//+------------------------------------------------------------------+
//| FiboPiv_v1.mq4 |
//| Kalenzo |
//| [email protected] |
//+------------------------------------------------------------------+
//
// FiboPivot_v4_mb - new version from mibl, based on v3 from Kalenzo
//
//
#property copyright \"Kalenzo\"
#property link \"[email protected]\"
extern color Resistance_3 = Green;
extern color Resistance_2 = Green;
extern color Resistance_1 = Green;
extern color Pivot = Blue;
extern color Support_1 = Red;
extern color Support_2 = Red;
extern color Support_3 = Red;
extern bool DrawPrice = true;
datetime todaysbegin;
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete(\"S1\");
ObjectDelete(\"S2\");
ObjectDelete(\"S3\");
ObjectDelete(\"R1\");
ObjectDelete(\"R2\");
ObjectDelete(\"R3\");
ObjectDelete(\"PIVOT\");
ObjectDelete(\"Support 1\");
ObjectDelete(\"Support 2\");
ObjectDelete(\"Support 3\");
ObjectDelete(\"Pivot level\");
ObjectDelete(\"Resistance 1\");
ObjectDelete(\"Resistance 2\");
ObjectDelete(\"Resistance 3\");
Comment(\" \");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
double rates[1][6],yesterday_close,yesterday_high,yesterday_low;
ArrayCopyRates(rates, Symbol(), PERIOD_D1);
todaysbegin = StrToTime(\"0:00\");
if(DayOfWeek() == 1)
{
if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,1)) == 5)
{
yesterday_close = rates[1][4];
yesterday_high = rates[1][3];
yesterday_low = rates[1][2];
}
else
{
for(int d = 5;d>=0;d--)
{
if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,d)) == 5)
{
yesterday_close = rates[d][4];
yesterday_high = rates[d][3];
yesterday_low = rates[d][2];
}
}
}
}
else
{
yesterday_close = rates[1][4];
yesterday_high = rates[1][3];
yesterday_low = rates[1][2];
}
//---- Calculate Pivots
Comment(\"\\nYesterday quotations:\\nH \",yesterday_high,\"\\nL \",yesterday_low, \"\\nC \",yesterday_close);
double R = yesterday_high - yesterday_low;//range
double p = (yesterday_high + yesterday_low + yesterday_close)/3;// Standard Pivot
double r3 = p + (R * 1.000);
double r2 = p + (R * 0.618);
double r1 = p + (R * 0.382);
double s1 = p - (R * 0.382);
double s2 = p - (R * 0.618);
double s3 = p - (R * 1.000);
drawLine(r3,\"R3\", Resistance_3,1);
drawLabel(\"Resistance 3\",r3,Resistance_3);
drawLine(r2,\"R2\", Resistance_2,2);
drawLabel(\"Resistance 2\",r2,Resistance_2);
drawLine(r1,\"R1\", Resistance_1,0);
drawLabel(\"Resistance 1\",r1,Resistance_1);
drawLine(p,\"PIVOT\",Pivot,1);
drawLabel(\"Pivot level\",p,Pivot);
drawLine(s1,\"S1\",Support_1,0);
drawLabel(\"Support 1\",s1,Support_1);
drawLine(s2,\"S2\",Support_2,2);
drawLabel(\"Support 2\",s2,Support_2);
drawLine(s3,\"S3\",Support_3,1);
drawLabel(\"Support 3\",s3,Support_3);
//----
return(0);
}
//+------------------------------------------------------------------+
void drawLabel(string name,double lvl,color Color)
{
if(ObjectFind(name) != 0)
{
ObjectCreate(name, OBJ_TEXT, 0, todaysbegin, lvl);
if (DrawPrice)
{
ObjectSetText(name, name + \" (\" + DoubleToStr(lvl, Digits) + \")\", 8, \"Arial\", EMPTY);
}
else
{
ObjectSetText(name, name, 8, \"Arial\", EMPTY);
}
ObjectSet(name, OBJPROP_COLOR, Color);
}
else
{
ObjectMove(name, 0, todaysbegin, lvl);
}
}
void drawLine(double lvl,string name, color Col,int type)
{
if(ObjectFind(name)!= 0)
{
ObjectCreate(name, OBJ_TREND, 0, todaysbegin, lvl,Time[0],lvl);
if(type == 1)
ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
else if(type == 2)
ObjectSet(name, OBJPROP_STYLE, STYLE_DASHDOTDOT);
else
ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
ObjectSet(name, OBJPROP_COLOR, Col);
ObjectSet(name,OBJPROP_WIDTH,1);
}
else
{
ObjectDelete(name);
ObjectCreate(name, OBJ_TREND, 0, todaysbegin, lvl,Time[0],lvl);
if(type == 1)
ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
else if(type == 2)
ObjectSet(name, OBJPROP_STYLE, STYLE_DASHDOTDOT);
else
ObjectSet(name, OBJPROP_STYLE, STYLE_DOT);
ObjectSet(name, OBJPROP_COLOR, Col);
ObjectSet(name,OBJPROP_WIDTH,1);
}
}
发表于:2017-08-11 08:09只看该作者
2楼
谢谢分享!!
韬客社区www.talkfx.co