void OnStart()
{
//---
string my_gann="OBJ_GANNFAN object";
if(ObjectFind(0,my_gann)<0)// オブジェクトが見つからない
{
//--- 失敗を通知する
Print("Object ",my_gann," not found. Error code = ",GetLastError());
//--- チャートの最高値を取得する
double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
//--- チャートの最安値を取得する
double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0);
//--- チャート上のバーの数
int bars_on_chart=ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- 各足のオープン時間を書き込むための配列を作成する
datetime Time[];
//--- 配列へのアクセスを時系列としてアレンジ
ArraySetAsSeries(Time,true);
//--- チャートで表示されているバーのデータをこの配列にコピー
int times=CopyTime(NULL,0,0,bars_on_chart,Time);
if(times<=0)
{
Print("Could not copy the array with the open time!");
return;
}
//--- 予備の準備完了
//--- チャートの中央のバーのインデックス
int center_bar=bars_on_chart/2;
//--- チャートの赤道 - 最大値と最小値の間
double mean=(chart_max_price+chart_min_price)/2.0;
//--- 最初のアンカーポイントの座標を中央に設定
ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Time[center_bar],mean,
//--- 2 番目のアンカーポイントを右に設定
Time[center_bar/2],(mean+chart_min_price)/2.0);
Print("Time[center_bar] = "+(string)Time[center_bar]+" Time[center_bar/2] = "+(string)Time[center_bar/2]);
//Print("Time[center_bar]/="+Time[center_bar]+" Time[center_bar/2]="+Time[center_bar/2]);
//--- スケールを Pips / Bar 単位で設定
ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10);
//--- 線のトレンドを設定
ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND);
//--- 線の幅を設定
ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1);
//--- 線のスタイルを定義
ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT);
//--- 線の色を設定
ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen);
//--- ユーザのオブジェクト選択を許可
ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true);
//--- 自分で選ぶ
ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true);
//--- チャートに描画する
ChartRedraw(0);
}
}
|