صفحة 2 من 3 الأولىالأولى 123 الأخيرةالأخيرة
النتائج 16 إلى 30 من 43
  1. #16
    الصورة الرمزية Knight_Forex
    Knight_Forex غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    51

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة remon78eg مشاهدة المشاركة
    [PHP]

    //================================================== ======================================
    //================================================== ======================================



    تحتاج ادخال 4 نقاط هي احداثيات الخطين وكل نقطة لها س،ص أي ستحتاج ادخال 8 ارقام
    كما في المثال السابق
    استاذي .. الله يجزاك بالخير ..

    هل يتم وضع هذا الجزء داخل دالة 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;
    }
    وحين اريد قيمة نقطة التقاطع ما هي الكلمة التي استخدمها ..

    وشكرا على ما تقدمه للجميع ^_^

  2. #17
    الصورة الرمزية remon78eg
    remon78eg غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2010
    العمر
    46
    المشاركات
    1,484

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Knight_Forex مشاهدة المشاركة
    استاذي .. الله يجزاك بالخير ..

    هل يتم وضع هذا الجزء داخل دالة 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;
    }
    وحين اريد قيمة نقطة التقاطع ما هي الكلمة التي استخدمها ..

    وشكرا على ما تقدمه للجميع ^_^
    الكود الثاني يتم وضعه في أي مكان في بداية الإكسبيرت قبل أي شيئ
    والكود الأول يتم وضعه في المكان الذي تريد ان تعرف نقطة التقاطع واستخدم الامر التالي
    GetIntersectionPoint
    وهو الامر المستخدم لمعرفة احداثيات نقطة التقاطع
    ولكن قم بملئ المتغيرات Line1 و Line2 بإحداثيات الخطين الذي تريد إيجاد تقاطعهم قبل استدعاء امر إيجاد نقطة التقاطع.

    واستخدم نقطة التقاطع كما هو موضح في الامر Alert الذي يعرض احداثيات نقطة التقاطع ولكن يمكن استخدام الاحداثيات مباشرة بدلا من عرضها أولا.

  3. #18
    الصورة الرمزية Knight_Forex
    Knight_Forex غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    51

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة remon78eg مشاهدة المشاركة
    الكود الثاني يتم وضعه في أي مكان في بداية الإكسبيرت قبل أي شيئ
    والكود الأول يتم وضعه في المكان الذي تريد ان تعرف نقطة التقاطع واستخدم الامر التالي
    GetIntersectionPoint
    وهو الامر المستخدم لمعرفة احداثيات نقطة التقاطع
    ولكن قم بملئ المتغيرات Line1 و Line2 بإحداثيات الخطين الذي تريد إيجاد تقاطعهم قبل استدعاء امر إيجاد نقطة التقاطع.

    واستخدم نقطة التقاطع كما هو موضح في الامر Alert الذي يعرض احداثيات نقطة التقاطع ولكن يمكن استخدام الاحداثيات مباشرة بدلا من عرضها أولا.
    الله يسعدك .. زي ما حليت لي الامور .. وكلماتي عاجزة عن شكرك ..

    واخر سؤال يا استاذي .. اذا رغبت باضافة تقاطع اخر ما هي التعديلات , او اكتفي بتغير اسماء الخطوط Line2 و Line1 ؟

  4. #19
    الصورة الرمزية remon78eg
    remon78eg غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2010
    العمر
    46
    المشاركات
    1,484

    افتراضي

    يمكنك استخدام نفس الأسماء اكثر من مرة
    فقط اعد تعبئة المتغيرات في الخطين مرة أخرى واوجد التقاطع بنفس الامر أيضا
    وانقل نقطة التقاطع في متغير اخر لتحتفظ بها قبل إيجاد تقاطع جديد

  5. #20
    الصورة الرمزية Knight_Forex
    Knight_Forex غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    51

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة remon78eg مشاهدة المشاركة
    يمكنك استخدام نفس الأسماء اكثر من مرة
    فقط اعد تعبئة المتغيرات في الخطين مرة أخرى واوجد التقاطع بنفس الامر أيضا
    وانقل نقطة التقاطع في متغير اخر لتحتفظ بها قبل إيجاد تقاطع جديد
    الله يعطيك العافية .. والله ما قصرت وبيض الله وجهك ..

    استفسار استاذي ..

    لحظت ان معادلة نقطة التقاطع لا تكون صحيحه على ازواج الين
    وانا استخدم هذا الكود

    كود PHP:
       if(Digits==5||Digits==3)Q=10;
    else 
    Q=1;

        if(
    Digits<4)
       {
          
    point=0.01;
          
    digits=2;
       }
       else
       {
          
    point=0.0001;
          
    digits=4;
       } 

  6. #21
    الصورة الرمزية remon78eg
    remon78eg غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2010
    العمر
    46
    المشاركات
    1,484

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Knight_Forex مشاهدة المشاركة
    الله يعطيك العافية .. والله ما قصرت وبيض الله وجهك ..

    استفسار استاذي ..

    لحظت ان معادلة نقطة التقاطع لا تكون صحيحه على ازواج الين
    وانا استخدم هذا الكود

    كود PHP:
       if(Digits==5||Digits==3)Q=10;
    else 
    Q=1;
     
        if(
    Digits<4)
       {
          
    point=0.01;
          
    digits=2;
       }
       else
       {
          
    point=0.0001;
          
    digits=4;
       } 
    عليك ان تسخدم السعر الأساسي كما هو دون تقريبه لرقمين بدلا من ثلاثة او ضربه او قسمته على 10 للتحويل من ثلاث ارقام لرقمين لكي يعطي نتائج صحيحة.

  7. #22
    الصورة الرمزية Knight_Forex
    Knight_Forex غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    51

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة remon78eg مشاهدة المشاركة
    عليك ان تسخدم السعر الأساسي كما هو دون تقريبه لرقمين بدلا من ثلاثة او ضربه او قسمته على 10 للتحويل من ثلاث ارقام لرقمين لكي يعطي نتائج صحيحة.
    صادق استاذي .. لانني في الباك تست

    لاحظت مشكلة في نقطة التقاطع وبعد التدقيق ( المشكلة اذا كان هناك جاب )

    تصبح نقطة التقاطع غير صحيحة , هل يمكن حلها
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة gap.png‏  

  8. #23
    الصورة الرمزية remon78eg
    remon78eg غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2010
    العمر
    46
    المشاركات
    1,484

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Knight_Forex مشاهدة المشاركة
    صادق استاذي .. لانني في الباك تست

    لاحظت مشكلة في نقطة التقاطع وبعد التدقيق ( المشكلة اذا كان هناك جاب )

    تصبح نقطة التقاطع غير صحيحة , هل يمكن حلها
    المشكلة هنا ان طول الخط على المحور س استبدلناه بطول الزمن ولكن يعتبر ان هناك طول مختفي خلال الجاب والشموع الناقصة

    ولحل تلك المشكلة علينا معرفة عدد الشموع الناقصة في الجاب وتحويلها لعدد دقائق وطرحها من طول الزمن لان طول الزمن بالدقائق
    آخر تعديل بواسطة remon78eg ، 06-03-2016 الساعة 12:23 AM

  9. #24
    الصورة الرمزية Knight_Forex
    Knight_Forex غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    51

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة remon78eg مشاهدة المشاركة
    المشكلة هنا ان طول الخط على المحور س استبدلناه بطول الزمن ولكن يعتبر ان هناك طول مختفي خلال الجاب والشموع الناقصة

    ولحل تلك المشكلة علينا معرفة عدد الشموع الناقصة في الجاب وتحويلها لعدد دقائق وطرحها من طول الزمن لان طول الزمن بالدقائق
    فهمت عليك استاذي ..

    محاولة مني لتفادي الجابات والاخطاء

    جعلت المعادلة محصورة في فريم واحد مثلا اليومي ..

    واستخدمت هذا الكود ياتي بي توقيت شمعة افتتاح اليوم السابق على فريم الساعة 00:00

    كود PHP:
    iTime(Symbol(),1440,1
    لكلن لم استطيع استخراج توقيت شمعة الاغلاق لليوم السابق على فريم الساعة 23:00 بدون ازحه لاستخدامي datetime

    وحاولت استخدام

    كود PHP:
    iTime(Symbol(),1440,0)-
    لكن لا تفي بالمطلوب , ارغب بكود يستخرج التوقيت الصحيح , لي تتم المعادلة بشكل صحيح

    وشكرا جزيلا ^_^

  10. #25
    الصورة الرمزية remon78eg
    remon78eg غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2010
    العمر
    46
    المشاركات
    1,484

    Cool حل مشكلة الجابات

    كود إيجاد موقع الشمعة عن طريق زمنها

    كود PHP:
    int iPos(string symbol,int time,int M15){
      
    int i;
      
    datetime t1,t2;
      
      
    t2=time;//StrToTime(time);
      
      
    for(i=0;i<10000;i++){
        
    t1=iTime(symbol,M15,i);
        if(
    t1-t2==0){return(i);}
      }
      return(-
    1);

    قمت بحل المشكلة عن طريق تحويل الطول بالزمن الى الطول بعدد الشموع (وهو لايحتوي الشموع الناقصة) وبذلك اصبح القياس صحيح.

    كود PHP:
    #property copyright "remon78eg , 04/03/2016   d/m/y"
    #property version   "1.00"
    #property description ""
    #property indicator_chart_window
    extern bool CalcGaps=true;
    //========================================================================================
    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);}
    }
    //==========================================
    int iPos(string symbol,int time,int M15){
      
    int i;
      
    datetime t1,t2;
      
      
    t2=time;//StrToTime(time);
      
      
    for(i=0;i<10000;i++){
        
    t1=iTime(symbol,M15,i);
        if(
    t1-t2==0){return(i);}
      }
      return(-
    1);
    }
    //==========================================
    bool GetIntersectionPoint(STR_LINE &eLine1  ,  STR_LINE &eLine2  ,  STR_POINT &IntersectionPoint,bool eCalcGaps){
      
    double M1,M2;
      
      if(
    eCalcGaps){
        
    eLine1.X1=iPos(Symbol(),eLine1.X1,Period());
        
    eLine1.X2=iPos(Symbol(),eLine1.X2,Period());
        
    eLine2.X1=iPos(Symbol(),eLine2.X1,Period());
        
    eLine2.X2=iPos(Symbol(),eLine2.X2,Period());
      }
      
      
    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;
      if(
    eCalcGaps){  IntersectionPoint.X=iTime(Symbol(),Period(),IntersectionPoint.X);  }
      return 
    true;
    }
    //========================================================================================
     
    int OnInit(){
      
    EventSetMillisecondTimer(250);
     return(
    INIT_SUCCEEDED);
    }
    //------------------------------
    void OnDeinit(const int reason){
       
    EventKillTimer();
    }
    void OnTimer(){
      
    Line1.X1=iTime(NULL,0,WindowFirstVisibleBar()-10);
      
    Line1.Y1=ChartGetDouble(0,CHART_PRICE_MIN,0);
      
    Line1.X2=iTime(NULL,0,WindowFirstVisibleBar()-WindowBarsPerChart()+10);
      
    Line1.Y2=ChartGetDouble(0,CHART_PRICE_MAX,0);
      
      
    Line2.X1=iTime(NULL,0,WindowFirstVisibleBar()-10);
      
    Line2.Y1=ChartGetDouble(0,CHART_PRICE_MAX,0);
      
    Line2.X2=iTime(NULL,0,WindowFirstVisibleBar()-WindowBarsPerChart()+10);
      
    Line2.Y2=ChartGetDouble(0,CHART_PRICE_MIN,0);
      
      if(
    ObjectFind(0,"Line1")==-1){ObjectCreate(0,"Line1",OBJ_TREND,0,Line1.X1,Line1.Y1,Line1.X2,Line1.Y2);ObjectSetInteger(0,"Line1",OBJPROP_RAY,false);ObjectSetInteger(0,"Line1",OBJPROP_SELECTED,true);}
      if(
    ObjectFind(0,"Line2")==-1){ObjectCreate(0,"Line2",OBJ_TREND,0,Line2.X1,Line2.Y1,Line2.X2,Line2.Y2);ObjectSetInteger(0,"Line2",OBJPROP_RAY,false);ObjectSetInteger(0,"Line2",OBJPROP_SELECTED,true);}
      
    GetIntersectionPoint(Line1,Line2,iPoint,CalcGaps);
      if(
    ObjectFind(0,"Arrow1")==-1){ObjectCreate(0,"Arrow1",OBJ_ARROW_BUY,0,iPoint.X,iPoint.Y);ObjectSetInteger(0,"Arrow1",OBJPROP_SELECTED,true);ObjectSetInteger(0,"Arrow1",OBJPROP_COLOR,clrGreen);}
      
      
      
      
    Line1.Y1=ObjectGet("Line1",OBJPROP_PRICE1);
      
    Line1.Y2=ObjectGet("Line1",OBJPROP_PRICE2);
      
    Line1.X1=ObjectGet("Line1",OBJPROP_TIME1);
      
    Line1.X2=ObjectGet("Line1",OBJPROP_TIME2);
      
      
    Line2.Y1=ObjectGet("Line2",OBJPROP_PRICE1);
      
    Line2.Y2=ObjectGet("Line2",OBJPROP_PRICE2);
      
    Line2.X1=ObjectGet("Line2",OBJPROP_TIME1);
      
    Line2.X2=ObjectGet("Line2",OBJPROP_TIME2);
      
      
    GetIntersectionPoint(Line1,Line2,iPoint,CalcGaps);
      
      
    ObjectDelete(0,"Arrow1");ObjectCreate(0,"Arrow1",OBJ_ARROW_BUY,0,iPoint.X,iPoint.Y);ObjectSetInteger(0,"Arrow1",OBJPROP_SELECTED,true);ObjectSetInteger(0,"Arrow1",OBJPROP_COLOR,clrGreen);
      
    }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    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[]){
      return(
    rates_total);

    اضغط على الصورة لعرض أكبر

الاســـم:	01.png
المشاهدات:	46
الحجـــم:	6.9 كيلوبايت
الرقم:	453534
    في السابق

    اضغط على الصورة لعرض أكبر

الاســـم:	02.png
المشاهدات:	46
الحجـــم:	6.9 كيلوبايت
الرقم:	453535
    الان

    اضغط على الصورة لعرض أكبر

الاســـم:	03.png
المشاهدات:	12
الحجـــم:	7.5 كيلوبايت
الرقم:	453536
    تم إضافة اختيار الحساب بطول الزمن او الحساب بعدد الشموع.
    الملفات المرفقة الملفات المرفقة

  11. #26
    الصورة الرمزية Knight_Forex
    Knight_Forex غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    51

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة remon78eg مشاهدة المشاركة
    كود إيجاد موقع الشمعة عن طريق زمنها

    كود PHP:
    int iPos(string symbol,int time,int M15){
      
    int i;
      
    datetime t1,t2;
      
      
    t2=time;//StrToTime(time);
      
      
    for(i=0;i<10000;i++){
        
    t1=iTime(symbol,M15,i);
        if(
    t1-t2==0){return(i);}
      }
      return(-
    1);

    قمت بحل المشكلة عن طريق تحويل الطول بالزمن الى الطول بعدد الشموع (وهو لايحتوي الشموع الناقصة) وبذلك اصبح القياس صحيح.

    كود PHP:
    #property copyright "remon78eg , 04/03/2016   d/m/y"
    #property version   "1.00"
    #property description ""
    #property indicator_chart_window
    extern bool CalcGaps=true;
    //========================================================================================
    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);}
    }
    //==========================================
    int iPos(string symbol,int time,int M15){
      
    int i;
      
    datetime t1,t2;
      
      
    t2=time;//StrToTime(time);
      
      
    for(i=0;i<10000;i++){
        
    t1=iTime(symbol,M15,i);
        if(
    t1-t2==0){return(i);}
      }
      return(-
    1);
    }
    //==========================================
    bool GetIntersectionPoint(STR_LINE &eLine1  ,  STR_LINE &eLine2  ,  STR_POINT &IntersectionPoint,bool eCalcGaps){
      
    double M1,M2;
      
      if(
    eCalcGaps){
        
    eLine1.X1=iPos(Symbol(),eLine1.X1,Period());
        
    eLine1.X2=iPos(Symbol(),eLine1.X2,Period());
        
    eLine2.X1=iPos(Symbol(),eLine2.X1,Period());
        
    eLine2.X2=iPos(Symbol(),eLine2.X2,Period());
      }
      
      
    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;
      if(
    eCalcGaps){  IntersectionPoint.X=iTime(Symbol(),Period(),IntersectionPoint.X);  }
      return 
    true;
    }
    //========================================================================================
     
    int OnInit(){
      
    EventSetMillisecondTimer(250);
     return(
    INIT_SUCCEEDED);
    }
    //------------------------------
    void OnDeinit(const int reason){
       
    EventKillTimer();
    }
    void OnTimer(){
      
    Line1.X1=iTime(NULL,0,WindowFirstVisibleBar()-10);
      
    Line1.Y1=ChartGetDouble(0,CHART_PRICE_MIN,0);
      
    Line1.X2=iTime(NULL,0,WindowFirstVisibleBar()-WindowBarsPerChart()+10);
      
    Line1.Y2=ChartGetDouble(0,CHART_PRICE_MAX,0);
      
      
    Line2.X1=iTime(NULL,0,WindowFirstVisibleBar()-10);
      
    Line2.Y1=ChartGetDouble(0,CHART_PRICE_MAX,0);
      
    Line2.X2=iTime(NULL,0,WindowFirstVisibleBar()-WindowBarsPerChart()+10);
      
    Line2.Y2=ChartGetDouble(0,CHART_PRICE_MIN,0);
      
      if(
    ObjectFind(0,"Line1")==-1){ObjectCreate(0,"Line1",OBJ_TREND,0,Line1.X1,Line1.Y1,Line1.X2,Line1.Y2);ObjectSetInteger(0,"Line1",OBJPROP_RAY,false);ObjectSetInteger(0,"Line1",OBJPROP_SELECTED,true);}
      if(
    ObjectFind(0,"Line2")==-1){ObjectCreate(0,"Line2",OBJ_TREND,0,Line2.X1,Line2.Y1,Line2.X2,Line2.Y2);ObjectSetInteger(0,"Line2",OBJPROP_RAY,false);ObjectSetInteger(0,"Line2",OBJPROP_SELECTED,true);}
      
    GetIntersectionPoint(Line1,Line2,iPoint,CalcGaps);
      if(
    ObjectFind(0,"Arrow1")==-1){ObjectCreate(0,"Arrow1",OBJ_ARROW_BUY,0,iPoint.X,iPoint.Y);ObjectSetInteger(0,"Arrow1",OBJPROP_SELECTED,true);ObjectSetInteger(0,"Arrow1",OBJPROP_COLOR,clrGreen);}
      
      
      
      
    Line1.Y1=ObjectGet("Line1",OBJPROP_PRICE1);
      
    Line1.Y2=ObjectGet("Line1",OBJPROP_PRICE2);
      
    Line1.X1=ObjectGet("Line1",OBJPROP_TIME1);
      
    Line1.X2=ObjectGet("Line1",OBJPROP_TIME2);
      
      
    Line2.Y1=ObjectGet("Line2",OBJPROP_PRICE1);
      
    Line2.Y2=ObjectGet("Line2",OBJPROP_PRICE2);
      
    Line2.X1=ObjectGet("Line2",OBJPROP_TIME1);
      
    Line2.X2=ObjectGet("Line2",OBJPROP_TIME2);
      
      
    GetIntersectionPoint(Line1,Line2,iPoint,CalcGaps);
      
      
    ObjectDelete(0,"Arrow1");ObjectCreate(0,"Arrow1",OBJ_ARROW_BUY,0,iPoint.X,iPoint.Y);ObjectSetInteger(0,"Arrow1",OBJPROP_SELECTED,true);ObjectSetInteger(0,"Arrow1",OBJPROP_COLOR,clrGreen);
      
    }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    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[]){
      return(
    rates_total);

    اضغط على الصورة لعرض أكبر

الاســـم:	01.png
المشاهدات:	46
الحجـــم:	6.9 كيلوبايت
الرقم:	453534
    في السابق

    اضغط على الصورة لعرض أكبر

الاســـم:	02.png
المشاهدات:	46
الحجـــم:	6.9 كيلوبايت
الرقم:	453535
    الان

    اضغط على الصورة لعرض أكبر

الاســـم:	03.png
المشاهدات:	12
الحجـــم:	7.5 كيلوبايت
الرقم:	453536
    تم إضافة اختيار الحساب بطول الزمن او الحساب بعدد الشموع.
    والله عاجز عن شكرك على ما قدمته

    تقريبا لي اكثر من سنة احاول اعدل على استراتيجية واطور وارغب بعمل باك تيست

    كنت دايما اتوقف بسبب هذي المعادلة ,,

    (ياريت لو تجعل المعادلة بعد التعديل الى كود اكسبيرت )

    وياريت لو تشرح لي كيف الاستفادة اكثر من كود

    كود PHP:
    int iPos(string symbol,int time,int M15
    او هو فقط فائدته لتعديل الخطأ السابق

    واعتذر بشده على تعبك معااي ..

  12. #27
    الصورة الرمزية remon78eg
    remon78eg غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2010
    العمر
    46
    المشاركات
    1,484

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Knight_Forex مشاهدة المشاركة
    والله عاجز عن شكرك على ما قدمته

    تقريبا لي اكثر من سنة احاول اعدل على استراتيجية واطور وارغب بعمل باك تيست

    كنت دايما اتوقف بسبب هذي المعادلة ,,

    (ياريت لو تجعل المعادلة بعد التعديل الى كود اكسبيرت )

    وياريت لو تشرح لي كيف الاستفادة اكثر من كود

    كود PHP:
    int iPos(string symbol,int time,int M15
    او هو فقط فائدته لتعديل الخطأ السابق

    واعتذر بشده على تعبك معااي ..
    فائدة هذا الكود هو تحويل زمن الشمعة الى رقم يبدأ من صفر عند اخر شمعة حدثت ويزيد بمقدار 1 كلما رجعنا شمعة الى الماضي
    فبدلا من ان نتعامل مع طول عبارة عن فرق بين زمنين فسوف نتعامل مع طول هو فرق بين عدد الشموع وهو لا يشمل الشموع المفقودة لذلك سيكون مجرد طول عادي لا يتأثر بالجاب الأسبوعي او بالشموع الناقصة.

    ثم بعد إيجاد احداثيات نقطة التقاطع بتلك الطريقة ، فالإحداثي السيني سيكون بالطول وليس بالزمن فحولناه الى زمن حتى نعرف زمن التقاطع مع سعر التقاطع (محور س،ص) لرسم السهم الأخضر عند السعر والزمن لنقطة التقاطع.

  13. #28
    الصورة الرمزية Knight_Forex
    Knight_Forex غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    51

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة remon78eg مشاهدة المشاركة
    فائدة هذا الكود هو تحويل زمن الشمعة الى رقم يبدأ من صفر عند اخر شمعة حدثت ويزيد بمقدار 1 كلما رجعنا شمعة الى الماضي
    فبدلا من ان نتعامل مع طول عبارة عن فرق بين زمنين فسوف نتعامل مع طول هو فرق بين عدد الشموع وهو لا يشمل الشموع المفقودة لذلك سيكون مجرد طول عادي لا يتأثر بالجاب الأسبوعي او بالشموع الناقصة.

    ثم بعد إيجاد احداثيات نقطة التقاطع بتلك الطريقة ، فالإحداثي السيني سيكون بالطول وليس بالزمن فحولناه الى زمن حتى نعرف زمن التقاطع مع سعر التقاطع (محور س،ص) لرسم السهم الأخضر عند السعر والزمن لنقطة التقاطع.

    وضحت الفكرة استاذي .. والله يزيدك من علمه

    هل يمكن ان نجعل المعادلة بعد التعديل الى كود اكسبيرت .

  14. #29
    الصورة الرمزية remon78eg
    remon78eg غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    May 2010
    العمر
    46
    المشاركات
    1,484

    افتراضي

    هذا هو الكود الجديد

    كود PHP:
    bool GetIntersectionPoint(STR_LINE &eLine1  ,  STR_LINE &eLine2  ,  STR_POINT &IntersectionPoint,bool eCalcGaps){
       
    double M1,M2;
       
       if(
    eCalcGaps){
         
    eLine1.X1=iPos(Symbol(),eLine1.X1,Period());
         
    eLine1.X2=iPos(Symbol(),eLine1.X2,Period());
         
    eLine2.X1=iPos(Symbol(),eLine2.X1,Period());
         
    eLine2.X2=iPos(Symbol(),eLine2.X2,Period());
       }
       
       
    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;
       if(
    eCalcGaps){  IntersectionPoint.X=iTime(Symbol(),Period(),IntersectionPoint.X);  }
       return 
    true;
     } 
    كود PHP:

    GetIntersectionPoint
    (Line1,Line2,iPoint,true); 
    لاستخدامه اضف true الى المعادلة لتفادي الجاب
    آخر تعديل بواسطة remon78eg ، 06-03-2016 الساعة 07:54 PM

  15. #30
    الصورة الرمزية dr.harmonic
    dr.harmonic غير متواجد حالياً موقوف
    تاريخ التسجيل
    Feb 2016
    الإقامة
    مصر
    المشاركات
    302

    افتراضي

    الله يوفقكك استاذ ريمون رفعت انت شخص طيب بارك الله لك

صفحة 2 من 3 الأولىالأولى 123 الأخيرةالأخيرة

الاوسمة لهذا الموضوع


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17