void OnStart()
{
//---
string my_gann="OBJ_GANNFAN object";
if(ObjectFind(0,my_gann)<0)// 개체를 찾을 수 없습니다
{
//--- 오류에 대한 정보
Print("개체 ",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("시작 시간으로 배열을 복사할 수 없습니다!");
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,
//--- 우측에 있는 두 번째 고정점
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);
}
}
|