صفحة 5 من 8 الأولىالأولى 12345678 الأخيرةالأخيرة
النتائج 61 إلى 75 من 110
  1. #61
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة فيلسوف البادية مشاهدة المشاركة
    ردي واضح
    ماذا لو انا استطيع استخدامها كما تستطيع استخدامها انت اخي
    وبالتالي يبقى الحكم للاحتمالات المجهولة هو الاقل خطورة
    نعم صحيح بحيث يمكن بناء نظام جديد لهذا الاحتمال لتدارك الموقف
    ولكن يضل خطير
    توقيع العضو
    متداول فوركس، ومبرمج mql

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

    افتراضي

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

    لماذا هذا البلوك سيغلق الصفقات الفردية فقط؟
    رغم أننا نتوقع انه يغلق كل الصفقات؟؟
    -
    -



    الهلالي-السمحان تحديدا--طالما هذه فكر وذكاء برمجي اتمنى فعلا فهم السبب.

    لكي تفهم جذور المشكلة
    افترض اغلق الامر الاول رقم 0 -- يعني i=0
    عندما يعود مرة اخرى يجد الامر بعده هو رقم 0 الذي كان قبل اغلاق الامر السابق رقم 1
    والامر رقم 2 يصبح الامر رقم 1
    فيغلق الامر رقم 2 ولايرى الامر رقم 1
    وهكذا
    اعادة لأننا نتحدث عن فكر برمجي وذكاء و مشاكل خفية
    لاحظ الوسخ فيها ان هذه المشاكل لاتظهر لك اثناء الكمبلة (compile-time) ولا ثانءا التطبيق (run-time)

    بل هو طعم تبلعه دون ان تدري
    لكي تفهم لدينا 6 اوامر:

    الامر الاول رقم 0
    الامر الثاني رقم 1
    الامر الثالث رقم 2
    الامر الرابع رقم 3
    الامر الخامس رقم 4
    الامر السادس رقم 5

    و i تبدأ العد من 0 وحتى عدد الاوامر-1

    اذا i=0 --- يغلق الامر الاول رقم 0
    بعد اغلاقه مباشرة يصبح ترقيم الاوامر المتبقية على النحو التالي:
    الامر الثاني رقم 0 بدلا من 1
    الامر الثالث رقم 1 بدلا من 2
    الامر الرابع رقم 2 بدلا من 3
    الامر الخامس رقم 3 بدلا من 4
    الامر السادس رقم 4 بدلا من 5

    وقيمة i اصبحت 1 الان
    اذن سيذهب للامر رقم 1 وهو هنا الامر الثالث وليس الثاني

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    كلامي السابق واضح ومنطقي وكذلك عن خبرة سنوات بالسوق الحقيقي بشركات جيدة، وليس بالتجارب ديمو وباكتيستات وهمية!
    اما الذكاء البشري هو السبب في خسارة الـ 95 % منهم بالسوق
    بعيد جدا عن مانتحدث عنه اخي
    حديثنا هنا ليس عن الباكتستات وليس عن الغباء الخ
    حديثنا هنا عن اذكى شي ممكن تفعله لافكار موجودة
    كيف تصبح الامور اذكى بكثير من الغباء الذي يجترونه سنوات
    توقف عن الجدل فوراً--هناك اخوان لك يتابعون باهتمام وشغف متنازلين لك عن خبرتك وخبرتي
    آخر تعديل بواسطة فيلسوف البادية ، 08-11-2017 الساعة 09:41 AM

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

    افتراضي

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

    1) سنسجل:
    1) رقم التكت
    2) لوتات الامر
    3) نوع الامر: هل هو بيع ام شراء


    نحن نعلم انه لو عكس سينفذ عدة اوامر---نحن نريد بيانات اخر امر فقط يا الهلالي ---ركز.

    اذن نعرف 3 متغيرات ذات علاقة كلها تبدأ بالاسم المشترك LastOrder

    الان سنحذف هذه الاضافات لبيانات الامر لعدم الحاجة لها--لان الامور اسهل بكثير
    ولكن لو احتجناها لفكرة اخرى فالشرح هنا يغني

    ثم سنطرح الكود حتى الان.

  5. #65
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة فيلسوف البادية مشاهدة المشاركة
    بعيد جدا عن مانتحدث عنه اخي
    حديثنا هنا ليس عن الباكتستات وليس عن الغباء الخ
    حديثنا هنا عن اذكى شي ممكن تفعله لافكار موجودة
    كيف تصبح الامور اذكى بكثير من الغباء الذي يجترونه سنوات
    توقف عن الجدل فوراً--هناك اخوان لك يتابعون باهتمام وشغف متنازلين لك عن خبرتك وخبرتي
    أخي الكريم لا تفهم هذا على أنه جدل! أو تحدي
    بل معلومات قد تفيد بالموضوع، فمشاكل الشركات لا تنتهي وهي الأهم أن نراعي لها بالبحث عن كيفية التصدي لها
    اما المسلمات البرمجية معروفة ولها مواضيع مختلفة تؤدي الغرض وبأبسط الطرق بلا تعقيد
    أما عن فكرة الاكسبيرت فهي قديمة وبرمج منها المئات بل الآلاف أشكال وأنواع ولم تنجح للأسباب المذكورة أعلاه ناهيك عن الفكرة أصلا ذات مخاطرة عالية والنتيجة فشل أو قلة الربح

    عموما معذرة عن الازعاج
    والسلام ختاااااام
    توقيع العضو
    متداول فوركس، ومبرمج mql

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    أخي الكريم لا تفهم هذا على أنه جدل! أو تحدي
    بل معلومات قد تفيد بالموضوع، فمشاكل الشركات لا تنتهي وهي الأهم أن نراعي لها بالبحث عن كيفية التصدي لها
    اما المسلمات البرمجية معروفة ولها مواضيع مختلفة تؤدي الغرض وبأبسط الطرق بلا تعقيد
    أما عن فكرة الاكسبيرت فهي قديمة وبرمج منها المئات بل الآلاف أشكال وأنواع ولم تنجح للأسباب المذكورة أعلاه ناهيك عن الفكرة أصلا ذات مخاطرة عالية والنتيجة فشل أو قلة الربح

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

    المشاكل ان وجدت فهي ضد كل برامج التداول وضد التداول اليدوي الخ

    انا شخصيا خبير المضاعفات لا اقول فاشل ولكن لا اعتمده ولا استخدمه ولكن حسب الباكتستر الفوري من اختراعي ونتحدث عن دقة 100% ممكن يكون ادارة رائعة جدا بعد الراليات. -- راجع موضيعي قبل 3 شهور عن الباكتستر الفوري--حول 11 موضوع

    فالرالي العكسي اذا حدث لايرده الا 1000 نقطة واعلى
    آخر تعديل بواسطة فيلسوف البادية ، 08-11-2017 الساعة 10:06 AM

  7. #67
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي

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

    المشاكل ان وجدت فهي ضد كل برامج التداول وضد التداول اليدوي الخ

    انا شخصيا خبير المضاعفات لا اقول فاشل ولكن لا اعتمده ولا استخدمه ولكن حسب الباكتستر الفوري من اختراعي ونتحدث عن دقة 100% ممكن يكون ادارة رائعة جدا بعد الراليات. -- راجع موضيعي قبل 3 شهور عن الباكتستر الفوري--حول 11 موضوع
    سبحان الله
    يا أخي أي موضوع يكون بطياته افكار أخرى، وهذا جاء بناءا على توالي الاحداث
    راجع أول مشاركة لي بالموضوع رقم 42 وردك بالمشاركة 44 حيث استمريت بالنقاش ...
    بل سنعتبر انه معا خرجنا عن سياق الموضوع
    هذا كل شيء
    وانتهى النقاش!
    توقيع العضو
    متداول فوركس، ومبرمج mql

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

    افتراضي

    تعاملنا مع احتمال العكس وبناء عليه يفك التجميد مؤقتا عن الاتجاه العكسي

    الان افترض لم يعكس وحقق الهدف؟
    بينا كيف نغلق الصفقات لو حقق الهدف لاكبر صفقة---ولكن بعد ذلك لايحدث اي تغير

    اذن المطلوب: اذا اغلق كل الصفقات على الهدف ان نعيد الكرة

    يعني: نعيد الاعدادات الاولية كأننا ننطبق الخبير مرة اخرى

    ممكن لو حبيت تضيف دالة Sleep لتعطيل الخبير المدة التي تحددها حال تحقق الاهداف

    دالة Sleep بالملي سكند -- تأمل الصورة:


    اذن اذا اردنا تعطيله في الاذهان يوم كامل
    لابد نحول يوم كامل الى ملي-سكندز
    1 يوم = 1000 ملي ضرب 60 ثانية ضرب 60 دقيقة ضرب 24 ساعة = رقم كبير
    ايضا العداد t1 يزيد 1 مع كل تكة
    نريده ان يمر على الصفر مرة اخرى
    اذن نجعله قيمة بالسالب

    لو جعلناه -20 -- فبعد 20 تكة ستكون قيمته 0 ويرى الاسطر التي قلنا سابقا انه سيمر عليها مرة واحدة فقط

    t1 اصبحت 0 مرة أخرى


    وبالتأكيد هناك طرق اخرى للتأجيل زمنيا لو اغلق الصفقات كلها وفقا لشرط الربح--مثلا يلقط وقت الاغلاق ثم يشرط مرور يوم كامل

    وقت الاغلاق هنا لانحتاج البحث في الهستوري عن وقت الاغلاق---نسجله فورا حال تحقق هدف اغلاق الصفقات---الامور اسهل بكثير من السائد
    آخر تعديل بواسطة فيلسوف البادية ، 08-11-2017 الساعة 10:19 AM

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

    افتراضي

    قل اعوذ برب الفلق من شر ما خلق
    رفض يشتغل معي--رغم انه كان يشتغل
    الكود حتى الان حسب الشرح السابق:

    كود PHP:
    string   TB="B";
    string   TS="S";
    int      t1=-10;
    double   PriceSell;
    double   PriceBuy;
    double   LastOrderLot;
    double   TakeProfit=300 ;  /// 300 pips
    double   STEP=50;          /// 20 pips
    int      ticket=-10;
    double   Lots=0.01;
    double   FirstLot=0.01;
    string   LastOrderExecuted="XXXX";
    string orderComment="Birds_Sing_On_Tree";
    void OnTick()
    {
       
    t1++;
       if(
    t1==0)
       {
          
    PriceSell=Bid-10*STEP*_Point;
          
    PriceBuyAsk+10*STEP*_Point;
       }
       if(
    Bid>PriceBuy && TB=="B" && PriceBuy!=0)
       {
          
    ticket=OrderSend(NULLOP_BUY,  Lots Ask ,   00orderCommentclrLime);
          
    TB="X";
          
    TS="X";
          
    LastOrderLot=Lots;
          
    LastOrderExecuted="Buy";
       }
       if(
    Ask<PriceSell && TS=="S" && PriceSell!=0)
       {
          
    ticket=OrderSend(NULLOP_SELL,  Lots Bid ,   00orderCommentclrRed);
          
    TB="X";
          
    TS="X";
          
    LastOrderLot=Lots;
          
    LastOrderExecuted="Sell";
       }
       
    double Pips_Diff=0;
       if(
    LastOrderExecuted=="Buy")
       {
          
    Pips_Diff MathPow10 _Digits -) * (   Bid        -  PriceBuy  ) ;
          if( 
    Pips_Diff TakeProfit )
          {
    //   كلها المفتوحة الصفقات نغلق
             
    for(ushort i=OrdersTotal()-1;i>=0;i--)
             { 
                if(
    OrderSelect(iSELECT_BY_POS,MODE_TRADES))
                {
                   if(
    OrderComment()==orderComment)
                   {
                      if(
    OrderType()==OP_BUY){
                      
    bool CloseOrder=OrderClose(OrderTicket(),OrderLots(),Bid,10,clrRed);}
                      else if(
    OrderType()==OP_SELL){
                       
    CloseOrder=OrderClose(OrderTicket(),OrderLots(),Ask,10,clrRed);}
                   }
                }
             }
          }
          else if( 
    Pips_Diff < - STEP )
          {
    //   عكسية بيع عملية
             
    TS="S";
             
    Lots=2*LastOrderLot;
          }
       }
       
       else if(
    LastOrderExecuted=="Sell")
       {
          
    Pips_Diff MathPow10 _Digits -) * (   PriceSell  -  Ask       ) ;
          if( 
    Pips_Diff TakeProfit )
          {
    //   كلها المفتوحة الصفقات نغلق
             
    for(i=OrdersTotal()-1;i>=0;i--)
             {
                if(
    OrderSelect(iSELECT_BY_POS,MODE_TRADES))
                {
                   if(
    OrderComment()==orderComment)
                   {
                      if(
    OrderType()==OP_BUY){
                       
    CloseOrder=OrderClose(OrderTicket(),OrderLots(),Bid,10,clrRed);}
                      else if(
    OrderType()==OP_SELL){
                       
    CloseOrder=OrderClose(OrderTicket(),OrderLots(),Ask,10,clrRed);}
                   }
                }
             }
          }
          else if( 
    Pips_Diff < - STEP )
          {
    //   عكسية شراء عملية
             
    TB="B";
             
    Lots=2*LastOrderLot;
          }
       }
       
    CommentPriceSell,"  ",t1,"  ",PriceBuy,"  B",Pips_Diff,"  S",Pips_Diff,"  ",LastOrderExecuted);


  10. #70
    الصورة الرمزية 2013Lemsantah
    2013Lemsantah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    السلام عليكم
    من البارح كنت اريد ان اناقشك واتذكر الموضوع السابق
    المهم الخطاء المنطقي في شرط الستيب
    كود:
       PriceSell=Bid-10*STEP*_Point; 
          PriceBuy= Ask+10*STEP*_Point;
    اختار يا 10 يا الستيب
    وعلى العموم الذي اريد اقوله البارح اتناقشتم فيه انت والاخوة
    كود PHP:

    string   TB
    ="B"
    string   TS="S"
    int      t1=-20
    double   PriceSell
    double   PriceBuy
    double   LastOrderLot
    double   TakeProfit=300 ;  /// 300 pips 
    double   STEP=20;          /// 20 pips 
    int      ticket=-10
    double   Lots=0.01
    double   FirstLot=0.01
    string   LastOrderExecuted="XXXX"
    string orderComment="Birds_Sing_On_Tree"
    void OnTick() 

       
    t1++; 
       if(
    t1==0
       { 
          
    PriceSell=Bid-STEP*_Point
          
    PriceBuyAsk+STEP*_Point
       } 
       if(
    Bid>PriceBuy && TB=="B" && PriceBuy!=0
       { 
          
    ticket=OrderSend(NULLOP_BUY,  Lots Ask ,   00orderCommentclrLime); 
          
    TB="X"
          
    TS="X"
          
    LastOrderLot=Lots
          
    LastOrderExecuted="Buy"
       } 
       if(
    Ask<PriceSell && TS=="S" && PriceSell!=0
       { 
          
    ticket=OrderSend(NULLOP_SELL,  Lots Bid ,   00orderCommentclrRed); 
          
    TB="X"
          
    TS="X"
          
    LastOrderLot=Lots
          
    LastOrderExecuted="Sell"
       } 
       
    double Pips_Diff=0
       if(
    LastOrderExecuted=="Buy"
       { 
          
    Pips_Diff MathPowSTEP _Digits -) * (   Bid        -  PriceBuy  ) ; 
          if( 
    Pips_Diff TakeProfit 
          {
    //   كلها المفتوحة الصفقات نغلق 
             
    for(ushort i=OrdersTotal()-1;i>=0;i--) 
             {  
                if(
    OrderSelect(iSELECT_BY_POS,MODE_TRADES)) 
                { 
                   if(
    OrderComment()==orderComment
                   { 
                      if(
    OrderType()==OP_BUY){ 
                      
    bool CloseOrder=OrderClose(OrderTicket(),OrderLots(),Bid,10,clrRed);} 
                      else if(
    OrderType()==OP_SELL){ 
                       
    CloseOrder=OrderClose(OrderTicket(),OrderLots(),Ask,10,clrRed);} 
                   } 
                } 
             } 
          } 
          else if( 
    Pips_Diff < - STEP 
          {
    //   عكسية بيع عملية 
             
    TS="S"
             
    Lots=2*LastOrderLot
          } 
       } 
        
       else if(
    LastOrderExecuted=="Sell"
       { 
          
    Pips_Diff MathPowSTEP _Digits -) * (   PriceSell  -  Ask       ) ; 
          if( 
    Pips_Diff TakeProfit 
          {
    //   كلها المفتوحة الصفقات نغلق 
             
    for(i=OrdersTotal()-1;i>=0;i--) 
             { 
                if(
    OrderSelect(iSELECT_BY_POS,MODE_TRADES)) 
                { 
                   if(
    OrderComment()==orderComment
                   { 
                      if(
    OrderType()==OP_BUY){ 
                       
    CloseOrder=OrderClose(OrderTicket(),OrderLots(),Bid,10,clrRed);} 
                      else if(
    OrderType()==OP_SELL){ 
                       
    CloseOrder=OrderClose(OrderTicket(),OrderLots(),Ask,10,clrRed);} 
                   } 
                } 
             } 
          } 
          else if( 
    Pips_Diff < - STEP 
          {
    //   عكسية شراء عملية 
             
    TB="B"
             
    Lots=2*LastOrderLot
          } 
       } 
       
    CommentPriceSell,"  ",t1,"  ",PriceBuy,"  B",Pips_Diff,"  S",Pips_Diff,"  ",LastOrderExecuted); 

    آخر تعديل بواسطة 2013Lemsantah ، 08-11-2017 الساعة 12:31 PM
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة 2013Lemsantah مشاهدة المشاركة
    السلام عليكم
    من البارح كنت اريد ان اناقشك واتذكر الموضوع السابق
    المهم الخطاء المنطقي في شرط الستيب
    كود:
       PriceSell=Bid-10*STEP*_Point; 
          PriceBuy= Ask+10*STEP*_Point;
    اختار يا 10 يا الستيب
    وعلى العموم الذي اريد اقوله البارح اتناقشتم فيه انت والاخوة
    لا اخي
    الشرط صحيح---تعبير عن buyStop و SellStop وكان شغال عليه بشكل رائع
    -
    مايخص نقاشات حس كيرا--خارج الموضوع وتنم عن تراكم خبرة بشكل سيء--الخبرة الضارة--تقريبا هجومه على شركات الوساطة كما جرت العادة--عادة نرمي مشالكنا عليها وهي اقرب للتشويش على الاخرين ممن كانوا ينتظرون مني هذا الموضوع---يعني يفترض يحذفها المشرفين او تعزل في موضوع اخر.
    =
    ==

    المشكلة البرمجية الاخيرة, تحتاح صفاء ذهن ولكن اعتقد لابد من كساتنق بين int و ushort
    مثلا انت عرفت المتغير i تحت ushort ولكن في المقارنة استخدمت OrdersTotal المعرفة في الميتا تحت اعتقد int - يعني مشاكل خفية
    او نعيد المتغير i الى int على غبائها من جهة الحجم
    آخر تعديل بواسطة فيلسوف البادية ، 08-11-2017 الساعة 12:28 PM

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

    افتراضي

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

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

    افتراضي

    فكرته ممتازة جدا--اسفل افترضت دائما وجود انزلاقات بتكبير الستب من 25 الى 50
    مدة 6 شهور

    من عنده مليون بكل ثقة يطبقه على كل الازواج وسنويات اضمن له 50% -- يعني احلف على المصحف بنجاحها خصوصا مع ازمات مثل ازمة الفرنك وازمة الكيبل


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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة فيلسوف البادية مشاهدة المشاركة
    حمله من اسفل---حاليا اعتقد حسب مطلوبك---انتهى بالنسبة لي دور موضوعك -- حمل ملف exe


    انتهت البنية التحتية--السورس كود في المرفقات
    يعني يا سمير عظمه انتهى
    حاليا مع التجارب ندمج مايجعله اذكى
    بالنسبة لي نتوقف مؤقتا لشرح رياضيات المضاعفات--المعادلات.
    لايوجد احد شرحها بعمق

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

    افتراضي

    قوانين سعر التعادل للمضاعفات

    1) لديك صفقة واحدة فقط--اذن البريك ايفن هو نفسه سعر الدخول
    سنفترض ان الستب = 50 نقطة في الشرح
    ونقاط الربح ما لانهاية

صفحة 5 من 8 الأولىالأولى 12345678 الأخيرةالأخيرة

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