استاذي .. الله يجزاك بالخير ..
هل يتم وضع هذا الجزء داخل دالة void OnStart
وهذا الجزء اخر الاكسبيرت ..كود:Line1.X1=Time [0];
Line1.Y1=ChartGetDouble(0,CHART_PRICE_MIN,0);
Line1.X2=Time [200];
Line1.Y2=ChartGetDouble(0,CHART_PRICE_MAX,0);
Line2.X1=Time [0];
Line2.Y1=ChartGetDouble(0,CHART_PRICE_MAX,0);
Line2.X2=Time [200];
Line2.Y2=ChartGetDouble(0,CHART_PRICE_MIN,0);
GetIntersectionPoint(Line1,Line2,iPoint);
Alert("X=",iPoint.X," Y=",iPoint.Y);
وحين اريد قيمة نقطة التقاطع ما هي الكلمة التي استخدمها ..كود:struct STR_POINT{
double X;//X
double Y;//Y
};
struct STR_LINE{
double X1;//Point1.X1
double X2;//Point1.X2
double Y1;//Point2.Y1
double Y2;//Point2.Y2
};
STR_LINE Line1;
STR_LINE Line2;
STR_POINT iPoint;
double iif(bool con,double tr,double fl){
if(con){return(tr);}else{return(fl);}
}
bool GetIntersectionPoint(STR_LINE &eLine1 , STR_LINE &eLine2 , STR_POINT &IntersectionPoint){
double M1,M2;
M1=(eLine1.Y2-eLine1.Y1)/iif((eLine1.X2-eLine1.X1)==0,1.0,(eLine1.X2-eLine1.X1));
M2=(eLine2.Y2-eLine2.Y1)/iif((eLine2.X2-eLine2.X1)==0,1.0,(eLine2.X2-eLine2.X1));
if(M1==M2)return false;//لا يوجد تقاطع
IntersectionPoint.X=((M1*eLine1.X1)-(M2*eLine2.X1) +eLine2.Y1-eLine1.Y1) / (M1-M2);
IntersectionPoint.Y=M1*IntersectionPoint.X -(M1*eLine1.X1) +eLine1.Y1;
return true;
}
وشكرا على ما تقدمه للجميع ^_^

