|
前几篇写了几个编程基础:变量、选择结构、逻辑运算等,那么这一篇就把这些都用上,理论与实践结合,写个实例,帮助理解。 先列出需求,创建一条垂直线,价格涨时,颜色为白色,跌时为红色。这样这个实例里会包括创建一条线、if语句、顺带用一下颜色数据类型。 新建一个自定义指标: 名称:Indicators\telihai-11 作者:Copyright 2012, telihai. 链接:http://www.telihai.com/ #property copyright "Copyright 2012, telihai." #property link "http://www.telihai.com/" #property version "1.00" #property indicator_chart_window // 声明一个全局变量。 double telihai_last_price = 0; int OnInit(){ ObjectCreate(0, "telihai_vline", OBJ_VLINE, 0, 0, 0); return(0); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]){ // 垂直线的时间坐标为当前时间。 ObjectSetInteger(0, "telihai_vline", OBJPROP_TIME, time[rates_total-1]); // 当前价是否大于等于“telihai_last_price”。 if(telihai_last_price <= close[rates_total-1]){ ObjectSetInteger(0, "telihai_vline", OBJPROP_COLOR, clrWhite); } else { ObjectSetInteger(0, "telihai_vline", OBJPROP_COLOR, clrRed); } // 将当前价赋于“telihai_last_price”。 telihai_last_price = close[rates_total-1]; return(rates_total); } 当“OnCalculate()”函数第一次运行的时候,“telihai_last_price”的值为0,所以物件的颜色一定是白色,然后会把“close[rates_total-1]”(当前价格)的值赋值给“telihai_last_price”,当下次运行“OnCalculate()”的时候,“close[rates_total-1]”的值已经更新,但是“telihai_last_price”还是前一次的值,所以可以比较出价格是在涨还是在跌。 “telihai_last_price”是一个全局变量,如果给它放到“OnCalculate()”里声明,那么每次运行“OnCalculate()”的时候都会声明一个,当函数返回的时候这个变量就被释放了,无法保留上一次的价格。前面讲过了。 |
E&K Studio