//+------------------------------------------------------------------+ //| //| サイコロジカルライン //| //| 指定期間の陽線の本数とローソク足の本数の割合を計算するインジケータです //| //+------------------------------------------------------------------+ //#property indicator_chart_window //チャートウィンドウに表示 #property indicator_separate_window //別ウィンドウに表示 #property indicator_buffers 1 //指標バッファの数 #property indicator_plots 1 //表示させる指標バッファの数 #property indicator_type1 DRAW_LINE //指標の種類 #property indicator_width1 1 //ラインの太さ #property indicator_style1 STYLE_SOLID //ラインの種類 #property indicator_color1 clrCornflowerBlue //ラインの色 #property indicator_level1 50 //指標のレベル #property indicator_level2 70 //指標のレベル #property indicator_level3 30 //指標のレベル #property indicator_levelcolor clrGray //レベルの色 #property indicator_levelwidth 1 //レベルの太さ #property indicator_levelstyle STYLE_DOT //レベルの種類 input int period = 12; // 期間 double Buf0[]; //指標バッファ用の配列の宣言 int OnInit() { //配列を指標バッファに関連付ける if( !SetIndexBuffer(0, Buf0)|| !ArraySetAsSeries(Buf0,true)){ Print("エラーコード:",GetLastError()); return(INIT_FAILED); } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| メイン | //+------------------------------------------------------------------+ 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[]) { int limit = rates_total - prev_calculated; //プロットするバーの数 int count = 0; for(int i=0; i