صفحة 3 من 35 الأولىالأولى 12345678913 ... الأخيرةالأخيرة
النتائج 31 إلى 45 من 524
  1. #31
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    Comparion = مقارنة
    فكرة المقارنة هي السر الجوهري في تفعيل زوج معين او الغائه من الباكتستر افلوري.

    قلنا ان متغير اسما الازواج هو المصفوفة pairs --- ودائما قيمها كما حددنا سلفا وهي اسماء 28 زوج اخترناها.
    الآن-ركز لأنها فكرة - نعرف متغير مصفوفة آخر اسمه pair_0 ونجعل كل القيم في البداية مثل قيم المتغير pairs
    وبالتالي
    pairs[0] f تساوي pair_0[0] f

    لأن قيمة الأول هو زوج الملكي EURGBP وتم تخزينه ايضا في قيمة المتغير الجديد pair_0 --يوجد تساوي اذن الازواج كلها مفعلة منذ البداية. حالة الديفولت.


    فشرط التفعيل هو ان نجعل قيمة المتغير الثاني مثل قيمة المتغير الأول.

    كيف نقوم بهذا برمجيا:
    1) نضع اولا قيم pair_0 في دالة OnInit بقيم تساوي قيمة المتغير pairs
    2) عندما نضغط على اسم زوج معين على التشارت فإن المتغير الجديد يأخذ قيمة هذا الزوج فيحدث التساوي وذلك من خلال دالة الضغط OnChartEvent
    3) لو اردنا الغاء زوج معين نضغط على المربع بجانب اسم الزوج فتكون قيمة المتغير pair_0 اي قيمة اخرى الا اسم الزوج. دعونا نتفق على قيمة YYYXXX

    4) ثم نذهب لدالة OnTimer ونغير طريقة عرض الازواج بحيث يتم تلوين الزوج المفعل باللون الاخضر.

    لاتنسى تعريف المتغير الجديد في رأس البرنامج.

    آخر تعديل بواسطة فيلسوف البادية ، 08-07-2017 الساعة 04:27 AM

  2. #32
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي


  3. #33
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    والآن لكي البرنامج يحدد الزوج بشكل صحيح, خصوصا رقم الزوج--أي عنصر في المصفوفة-نضيف رقم تسلسلي لأسماء المتغير pairs على النحو التالي:
    إذا تذكرون كانت هكذا:



    والآن بعد التعديل صارت هكذا: اضفنا اندر سكور ثم حرف i الذي هو تسلسل الازواج ال 28.

    آخر تعديل بواسطة فيلسوف البادية ، 08-07-2017 الساعة 04:37 AM

  4. #34
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    ماهي الفائدة؟
    ج: هي في دالة OnChartEvent
    فنحن الان ميزنا الازواج بأرقام

    1) نريد عند الضغط على زوج معين ننزع رقمه من اسمه -- حسب الصورة اعلاه الرقم جزء من اسمه, اخر خانة او خانتين هي الرقم,
    للازواج من 0 الى 9 اخر خانة
    للازواج من 10 وحتى 27 اخر خانتين.

    لابد ان يكون البرنامج اذكى بحيث يستخرج الرقم بسهولة وبشكل تلقائي وقانون موحد للحالتين,
    -
    اسم الزوج ذكرنا يبدأ بـ _B -- بينما مربع الزوج يبدأ بـ _A

    وبالتالي لابد يفهم البرنامج هل نحن ضغطنا على اسم الزوج ام على المربع--هذا يتم من خلال التفتيش ان اول حرفين في اسم الزوج هل هي _B أم _A

  5. #35
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    يتم ذلك على النحو التالي:



    لاحظ تحت if(StringSubstr(sparam,0,2)=="A_") F هنا أخبرنا البرنامج اذا اول حرفين للشيء يبدأ بحرف A ثم اندسكور اذن اجعل قيمة pairs_0 تساوي YYYXXX للزوج الذي تم الضغط عليه!

    كيف نحدد هذا الزوج؟ الزوج الخامس مثلاً !!!
    تم هذا من خلال نزع الرقم من خلال المتغير I1
    int I1=StrToInteger(StringSubstr(sparam,9,StringLen(spar am)-9)); F

    لاتنسى ماذكرناه عن المتغير sparam وانه الاهم, فقيمته اسم الشيء,
    وأي مبرمج يفهم ان السطر اعلاه لقيمة I1 هو: تجاهل اول 9 حروف من اسم المتغير ثم خذ الحروف بعدها ثم حولها من نص الى عدد صحيح.

    فنحن سلفا عندما صممنا اسم المتغير جعلنا اول حرفين هي A_ ثم بعد ذلك ست حروف هي اسم الزوج ثم بعد ذلك اندرسكور ومجموعها 9 حروف ثم بعد ذلك الرقم الذي نزعناه.
    آخر تعديل بواسطة فيلسوف البادية ، 08-07-2017 الساعة 04:56 AM

  6. #36
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي


    سطر بمليون
    فنحن من خلال اول حرفين عرفنا هل هو يقصد الزوج ام المربع
    ثم من خلال الرقم عرفنا رقم الزوج او المربع--هل ضغطنا على الزوج الخامس ام الزوج 11 !!
    آخر تعديل بواسطة فيلسوف البادية ، 08-07-2017 الساعة 05:05 AM

  7. #37
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    هل تتذكرون هذا الرد؟؟ تمت اجابته في الردود الاخيرة!!
    اقتباس المشاركة الأصلية كتبت بواسطة فيلسوف البادية مشاهدة المشاركة
    ولاحظ التسمية هناك قاسم مشترك _A ---- ايه اندرسكور--وايضا بعد ذلك تتقاسم جزء من الاسم مع اسماء الازواج ال 28

    مثلا مربع اليورو دولار اسمه A_EURUSD بينما الزوج نفسه اسمه B_EURUSD
    فيما بعد ستعلم الفائدة للقاسم المشترك بين المربع والزوج, ناهيك عن القاسم المشترك لكل وضع--مثلا المربعات قاسم مشترك ايه اندرسكور.
    ذهنيا--هناك ترابط الى درجة معينة بين الاشياء على التشارت

  8. #38
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي


  9. #39
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

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

    4) ثم نذهب لدالة OnTimer ونغير طريقة عرض الازواج بحيث يتم تلوين الزوج المفعل باللون الاخضر.
    الان اجعل لون التفعيل اخضر ولون الالغاء ابيض, يعني اذا ضغطت على المربع سيتغير الزوج للابيض فتفهم بصريا انه خارج الباكتستر الفوري.


  10. #40
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    النتيجة:


  11. #41
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    وحتى الآن هذا هو الكود البرمجي:
    كود PHP:
    string   str;
    string   S[] = {"EUR" ,"GBP" ,"AUD" ,"NZD" ,"USD" ,"CAD" ,"CHF" ,"JPY"};
    string   pairs[28];
    string   pair_0[28];

    int OnInit()
    {
       
    ChartSetInteger(0,CHART_FOREGROUND,0,FALSE);
       
    ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrBlack);
       
    ChartSetInteger(0,CHART_COLOR_CHART_LINE,ChartGetInteger(0,CHART_COLOR_BACKGROUND));
       
    ChartSetInteger(0,CHART_MODE,CHART_LINE);
       
    ChartSetInteger(0,CHART_SHOW_GRID,0,FALSE);
       
    ChartSetInteger(0,CHART_SHOW_OHLC,0,FALSE);
       
    ChartSetInteger(0,CHART_SHOW_BID_LINE,0,FALSE);
       
       
    ObjectCreate"CHART_HIDE",OBJ_LABEL,0,0,0);   
       
    ObjectSet(    "CHART_HIDE",OBJPROP_CORNER,0);
       
    ObjectSet(    "CHART_HIDE",OBJPROP_XDISTANCE,220);
       
    ObjectSet(    "CHART_HIDE",OBJPROP_YDISTANCE,460);
       
    ObjectSetText("CHART_HIDE",CharToStr(108),12,"wingdings",clrRed);
       
    ObjectCreate"CHART_CANDLES",OBJ_LABEL,0,0,0);   
       
    ObjectSet(    "CHART_CANDLES",OBJPROP_CORNER,0);
       
    ObjectSet(    "CHART_CANDLES",OBJPROP_XDISTANCE,240);
       
    ObjectSet(    "CHART_CANDLES",OBJPROP_YDISTANCE,460);
       
    ObjectSetText("CHART_CANDLES",CharToStr(108),12,"wingdings",clrYellow);
       
    ObjectCreate"CHART_LINE",OBJ_LABEL,0,0,0);   
       
    ObjectSet(    "CHART_LINE",OBJPROP_CORNER,0);
       
    ObjectSet(    "CHART_LINE",OBJPROP_XDISTANCE,260);
       
    ObjectSet(    "CHART_LINE",OBJPROP_YDISTANCE,460);
       
    ObjectSetText("CHART_LINE",CharToStr(108),12,"wingdings",clrWhite);
       
       
    EventSetTimer(1);
       
    str =StringSubstr(Symbol(),6,10);
    ///////////////////////////
       
    int j=-1;
       for(
    int i=0;i<=6;i++)
       {
          for(
    int k=i+1;k<=7;k++)
          {
             
    j++;
             
    pairs[j]=S[i]+S[k]+str;
             
    pair_0[j]=pairs[j];
          }
       }
       return(
    INIT_SUCCEEDED);
    }
    ////////////////////////
    void OnTimer()
    {
       for(
    int i=0;i<28;i++)
       {
          if(
    pair_0[i]==pairs[i]) color clr=clrLime;
          else                          
    clr=clrWhite;
          
    ObjectCreate(  "B_"+StringSubstr(pairs[i],0,6)+"_"+iOBJ_LABEL,0,0,0);
          
    ObjectSet(     "B_"+StringSubstr(pairs[i],0,6)+"_"+iOBJPROP_CORNER,0);
          
    ObjectSet(     "B_"+StringSubstr(pairs[i],0,6)+"_"+iOBJPROP_XDISTANCE,20);
          
    ObjectSet(     "B_"+StringSubstr(pairs[i],0,6)+"_"+iOBJPROP_YDISTANCE,50+i*13);
          
    ObjectSetText"B_"+StringSubstr(pairs[i],0,6)+"_"+iStringSubstr(pairs[i],0,6),9,"Tahoma",clr);
    //      
          
    ObjectCreate(  "A_"+StringSubstr(pairs[i],0,6)+"_"+iOBJ_LABEL,0,0,0);
          
    ObjectSet(     "A_"+StringSubstr(pairs[i],0,6)+"_"+iOBJPROP_CORNER,0);
          
    ObjectSet(     "A_"+StringSubstr(pairs[i],0,6)+"_"+iOBJPROP_XDISTANCE,5);
          
    ObjectSet(     "A_"+StringSubstr(pairs[i],0,6)+"_"+iOBJPROP_YDISTANCE,50+i*13);
          
    ObjectSetText"A_"+StringSubstr(pairs[i],0,6)+"_"+iCharToStr(110),9,"wingdings",clr);
          
       }
    }

    void OnChartEvent(const int id, const long &lparam, const double &dparam,  const string &sparam)
    {
       if(
    id==CHARTEVENT_OBJECT_CLICK)
       {
    //////////////////////////
          
    if(StringSubstr(sparam,0,2)=="A_")
          {
             
    int I1=StrToInteger(StringSubstr(sparam,9,StringLen(sparam)-9));
             
    pair_0[I1]="YYYXXX";
          }
          if(
    StringSubstr(sparam,0,2)=="B_")
          {
             
    int I2=StrToInteger(StringSubstr(sparam,9,StringLen(sparam)-9));
             
    pair_0[I2]=pairs[I2];;
          }
    /////////////////////////////////////////   
       
    }

    أفكار برمجية جوهرية تم شرحها اليوم:
    فكرة تمييز الزوج ومربعه برقم
    فكرة تمييز الشيء الذي تم الضغط عليه
    فكرة كيفية نزع هذا الرقم
    فكرة المقارنة,
    ناهيك عن الالوان المميزة للتفعيل او الالغاء بحيث تدرك بصريا اي زوج مفعل وأ زوج ملغي.

    إذا ضغطت على المربع تصبح قيمة الزوج YYYXXX بينما اذا ضغطت على اسم الزوج تصبح قيمة الزوج هي الزوج اسمه الذي ضغطت عليه.
    آخر تعديل بواسطة فيلسوف البادية ، 08-07-2017 الساعة 05:25 AM

  12. #42
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي



    وطبعا زوج باسم YYYXXX لايوجد على المنصة!

  13. #43
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    والآن نضيف شيئن مهمين:
    1) شيء لتفعيل كل الأزواج دفعة واحدة, الاسم ACTIVATE_ALL
    2) شيء لالغاء تفعيل كل الأزواج دفعة واحدة, الاسم CANCEL_ALL

    ونضعها مباشرة تحت اسماء الأزواج--نختار مربعين يعني وندنقنز 110---التفعيل اخضر الالغاء رمادي

    لابد تكون في دالة OnTimer



    آخر تعديل بواسطة فيلسوف البادية ، 08-07-2017 الساعة 06:18 AM

  14. #44
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    حتى الان مجرد شيئين على التشارت, ضغطت او لم تضغط عليها لن يتغير شيء
    لكي تكون فعالة, نذهب لدالة OnChartEvent ونجري المطلوب برمجيا على النحو التالي:



    وتعني اذا ال sparam تساوي CANCEL_ALL -- الغ كل الازواج--يعني اجعل قيمتها YYYXXX
    بينما اذا sparam تساوي ACTIVATE_ALL فعل كل الأزواج--اجعل قيمتها مثل اسم الزوج

  15. #45
    تاريخ التسجيل
    Jul 2011
    الإقامة
    السعودية
    المشاركات
    11,147

    افتراضي

    وأيضا نضيف شيئين ارى اهميتهما, ولكي لاننساها:
    1) شيء مخصص لازالة الاكسبيرت REMOVE_EXPERT
    2) شيء مخصص لتنظيف التشارت باسم CLEAN_CHART
    وعلى نفس منوال ماسبق:
    1) نرسم الشيئين من خلال OnTimer
    2) ونضع وظيفتها من خلال OnChartEvent

صفحة 3 من 35 الأولىالأولى 12345678913 ... الأخيرةالأخيرة

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