استفسار برمجي..هام!
صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 16
  1. #1
    تاريخ التسجيل
    May 2010
    المشاركات
    172

    افتراضي استفسار برمجي..هام!

    السلام عليكم ورحمة الله وبركاته
    أعمل على برمجة اكسبرت وهو في مرحلة التخطيط للفكرة.
    ولكن توقفت عند مسألة لم أجد لها حلاً حتى الآن.

    الفكرة ببساطة أن الاكسبرت يفتح عدد من الأوامر وليكن 5 باي ستوب و5 سل ستوب فوق السعر الحالي بعدة نقاط يتم تحديدها.

    ما توقفت عنه هو التالي:
    عندما يتم تفعيل أمر سل ستوب مثلاً ليتحول إلى أمر سل... أريد أن يقوم الاكسبرت بوضع أمر باي ستوب على بعد عدد مُعين من النقاط فوق سعر السل الستوب الذي تم فتحه (أو حتى بعدد مُعين من النقاط فوق السعر الحالي للزوج)

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

    مثال للتوضيح: السعر الحالي 1.400
    SELLTOP1 1.380
    SELLTOP2 1.360
    SELLTOP3 1.340
    SELLTOP4 1.320

    BUYSTOP1 1.420
    BUYSTOP2 1.440
    BUYSTOP3 1.460
    BUYSTOP4 1.480

    في هذه الحالة عدد الأوامر من كل نوع 4
    المسافة بين الأوامر 20 نقطة.
    لو ارتفع السعر ل1.420 سيتم فتح أمر BUY
    هنا أريد وضع أمر SELLTOP عند سعر 1.400 (أقل 20 نقطة من سعر الفتح لصفقة الشراء)
    وعندما يصل السعر إلى 1.440 يتم وضع أمر SELLSTOP عند 1.420
    وهكذا.
    وإذا اتجه السعر للهبوط وفتح صفقة SELL عند 1.380 يقوم الاكسبرت بفتح صفقة BUYSTOP عند 1.400
    وهكذا.

    المشكلة كيف نربط أمر البيع (أو الشراء) الذي تم تفعيله للتو مع صفقة الSELLSTOP أو BUYSTOP بحيث يتم وضع صفقة واحدة فقط بدون تكرار أو تضارب.

    حيث أنه لو استخدمنا مثلاً.
    if(OrderSymbol()==Symbol() && OrderType==OP_BUY && OrderMagicNumber=MagicNumber)

    {
    OrderSend(Symbol();OP_SELLSTOP...etc
    }

    سيتم فتح عشرات الصفقات بدون توقف.
    وإذا وضعنا العُدد الإجمالي لعدد الصفقات المؤجلة كشرط لاستكمال العدد ل8 صفقات عند نقصانها ..
    للأسف سيتم وضع صفقات من نوع واحد طوال الوقت حسب نوع أول صفقة سيتم تفعيلها.


    هل هناك طريقة لحل هذه المسألة؟

  2. #2
    تاريخ التسجيل
    Mar 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    440

    افتراضي

    أخي العزيز ...... جرب الفكرة هذه ........ على عملية وحدة شراء معلقه ( برقم ماجيك 1 ) ..... و عملية وحدة بيع معلقه ( برقم ماجيك 2 ) ..... و بعدين تطبقها على باقي العمليات
    عند فتح عملية شراء معلقه ( 1 ) يتم أيضا فتح عملية بيع معلقه ( 1 ) و لكن على سعر بعيد المنال و طبعا هي ليست عملية البيع المعلقه ( رقم ماجيك 2 ) .... مثال :-
    شراء معلق على سعر 1.420 ( 1 ) و عملية بيع معلق ( 1 )على سعر 1.00
    و عندما تتفعل عملية الشراء المعلق ( 1 ) نستخدم Modify لتعديل عملية البيع المعلقه ( 1 ) لتكون على النقطة اللتي نريدها .

    عند فتح عملية بيع معلقه ( 2 ) يتم أيضا فتح عملية شراء معلقه ( 2 ) و لكن على سعر بعيد المنال و طبعا هي ليست عملية الشراء المعلقه ( رقم ماجيك 1 ) .... مثال :-
    بيع معلق على سعر 1.380( 2 ) و عملية شراء معلق ( 2 )على سعر 2.00
    و عندما تتفعل عملية البيع المعلق ( 2 ) نستخدم Modify لتعديل عملية الشراء المعلقه ( 2 ) لتكون على النقطة اللتي نريدها .
    و بعدين نطبقها على باقي الأوامر و تصير كالتالي :-
    شراء معلق ( ماجيك 1 ) 1.420 && بيع معلق ( ماجيك 1 ) 1.00
    شراء معلق ( ماجيك 2 ) 1.440 && بيع معلق ( ماجيك 2 ) 1.00
    شراء معلق ( ماجيك 3 ) 1.460 && بيع معلق ( ماجيك 3 ) 1.00
    شراء معلق ( ماجيك 4 ) 1.480 && بيع معلق ( ماجيك 4 ) 1.00

    بيع معلق ( ماجيك 5 ) 1.380 && شراء معلق ( ماجيك 5 ) 2.00
    بيع معلق ( ماجيك 6 ) 1.360 && شراء معلق ( ماجيك 6 ) 2.00
    بيع معلق ( ماجيك 7 ) 1.340 && شراء معلق ( ماجيك 7 ) 2.00
    بيع معلق ( ماجيك 8 ) 1.320 && شراء معلق ( ماجيك 8 ) 2.00

    أتمنى الفكرة و صلت وووو ............ تكون صحيحة

  3. #3
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    12,976

    افتراضي

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

    الفكرة ببساطة أن الاكسبرت يفتح عدد من الأوامر وليكن 5 باي ستوب و5 سل ستوب فوق السعر الحالي بعدة نقاط يتم تحديدها.

    ما توقفت عنه هو التالي:
    عندما يتم تفعيل أمر سل ستوب مثلاً ليتحول إلى أمر سل... أريد أن يقوم الاكسبرت بوضع أمر باي ستوب على بعد عدد مُعين من النقاط فوق سعر السل الستوب الذي تم فتحه (أو حتى بعدد مُعين من النقاط فوق السعر الحالي للزوج)

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

    مثال للتوضيح: السعر الحالي 1.400
    SELLTOP1 1.380
    SELLTOP2 1.360
    SELLTOP3 1.340
    SELLTOP4 1.320

    BUYSTOP1 1.420
    BUYSTOP2 1.440
    BUYSTOP3 1.460
    BUYSTOP4 1.480

    في هذه الحالة عدد الأوامر من كل نوع 4
    المسافة بين الأوامر 20 نقطة.
    لو ارتفع السعر ل1.420 سيتم فتح أمر BUY
    هنا أريد وضع أمر SELLTOP عند سعر 1.400 (أقل 20 نقطة من سعر الفتح لصفقة الشراء)
    وعندما يصل السعر إلى 1.440 يتم وضع أمر SELLSTOP عند 1.420
    وهكذا.
    وإذا اتجه السعر للهبوط وفتح صفقة SELL عند 1.380 يقوم الاكسبرت بفتح صفقة BUYSTOP عند 1.400
    وهكذا.

    المشكلة كيف نربط أمر البيع (أو الشراء) الذي تم تفعيله للتو مع صفقة الSELLSTOP أو BUYSTOP بحيث يتم وضع صفقة واحدة فقط بدون تكرار أو تضارب.

    حيث أنه لو استخدمنا مثلاً.
    if(OrderSymbol()==Symbol() && OrderType==OP_BUY && OrderMagicNumber=MagicNumber)

    {
    OrderSend(Symbol();OP_SELLSTOP...etc
    }

    سيتم فتح عشرات الصفقات بدون توقف.
    وإذا وضعنا العُدد الإجمالي لعدد الصفقات المؤجلة كشرط لاستكمال العدد ل8 صفقات عند نقصانها ..
    للأسف سيتم وضع صفقات من نوع واحد طوال الوقت حسب نوع أول صفقة سيتم تفعيلها.


    هل هناك طريقة لحل هذه المسألة؟
    وعليكم السلام ورحمة الله وبركاته
    الفكره بسيطه كما أخبرك الأخ العزيز alshaktan
    هذا مثال بسيط والسر في الماجيك نمبر
    كود PHP:
    if(orderscnt(OP_BUYSTOP,Magic)<4&&orderscnt(OP_SELLSTOP,Magic2)<orderscnt(OP_BUY,Magic)){
    //open sell stop 

    ونفس الشيء مع أوامر البيع
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  4. #4
    تاريخ التسجيل
    May 2010
    المشاركات
    172

    افتراضي

    السلام عليكم ورحمة الله وبركاته أخي الحبيب
    أولاً أشكر لك اهتمامك وردك
    ثانياً فكرتك أبعد ما يكون عن النمطية ونظرياً لا أرى ما يمنع من تنفيذها...ولكن يعيبها
    -أني لا أُفكر في عدد ثابت من الصفقات..لذا قد أقرر أن أضع 10 صفقات من كل نوع أو حتى 30 من كل نوع.. في هذه الحالة سيفتح الاكسبرت 120 صفقة بدلاً من 60 .. وهو إن لم يجد من البروكر اعتراضاً بالتأكيد سيُعجل باعتراض البروكر على العدد الكبير للصفقات.
    -أيضاً سيبدو واضحاً تماماً أن الاكسبرت به تحايل ناتج عن العجز عن حل هذه المسألة نظراً لظهوره بشكل مُهلهل نوعاً ما مع وجود هذه الصفقات الغريبة حتى يتم تعديلها.

    وعلى الرغم من ذلك سأحاول تنفيذ هذه الفكرة الطريفة والمُفيدة في نفس الوقت.

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

    أرجو أن نحاول البحث عن فكرة أخرى بجانب هذه الفكرة الطيبة وبإذن الله نصل للحل.

  5. #5
    تاريخ التسجيل
    May 2010
    المشاركات
    172

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    وعليكم السلام ورحمة الله وبركاته
    الفكره بسيطه كما أخبرك الأخ العزيز alshaktan
    هذا مثال بسيط والسر في الماجيك نمبر
    كود PHP:
    if(orderscnt(OP_BUYSTOP,Magic)<4&&orderscnt(OP_SELLSTOP,Magic2)<orderscnt(OP_BUY,Magic)){
    //open sell stop 

    ونفس الشيء مع أوامر البيع
    السلام عليكم ورحمة الله وبركاته أخي أسامة
    الحقيقة لم أفهم المقصود من الجملة التي أوردتها...
    -لماذا نبحث العلاقة بين (OP_SELLSTOP,Magic2)<orderscnt(OP_BUY,Magic)

    وهل فعلاً الفكرة هي فتح أوامر وهمية نُعيد تعديلها لاحقاً؟
    وكيف سنقوم بدمج الماجيك نمبر في أمر orderscnt بحيث يتغير مع كل زوج من الصفقات الجديدة بحيث يتم إنتاج عدد كبير من الماجيك نمبر يتناسب مع العدد الذي نختاره من الصفقات...يعني الرقم 4 هو مثال فقط لكن من الممكن أن نختار أن نفتح 20 صفقة من كل نوع.
    آخر تعديل بواسطة egyptsoul ، 19-04-2011 الساعة 03:47 AM

  6. #6
    تاريخ التسجيل
    Mar 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    440

    افتراضي

    كود PHP:
    if ( (MyBuyRealOrdersTotal(MagicNumber)==0) && (MyBuyPendingOrdersTotal(MagicNumber)==0) );
                                     
    OrderSend(Symbol(),OP_BUYSTOP ,Lots,BuyPrice,3,0,0,Name,MagicNumber,0,Green);
                                     if ( (
    MySellPendingOrdersTotal(MagicNumber)==0) && (MySellRealOrdersTotal(MagicNumber)==0) && (MyBuyRealOrdersTotal(MagicNumber)==1) );
                                     
    OrderSend(Symbol(),OP_SELLSTOP ,Lots,SellPrice,3,0,0,Name,MagicNumber,0,Green); 

  7. #7
    تاريخ التسجيل
    Apr 2010
    المشاركات
    341

    افتراضي

    اولا اسمح لي ان القي عليك التحية

    السلام عليكم ورحمة الله وبركاته

    ثانيا اخي الكريم منذ متى وانت تفكر بهذه الطريقة

    انا كنت سبق وطرحت نفس الطريقة في عدة منتديات عربية عدد 3 منتديات لن اذكر امائها لانه على ما اظن ممنوع ذكر الاسامي

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

    الذي يحدث اذا تفعل العقد شراء على سعر 1.4000 وتحرك السعر لنقول 10 نقاط ورجع السعر لامس منطقة الدخول يقوم الاكسبير بتعليق عقد معاكس حتى ولو حدث هذا مليون مرة كل ما السعر يلامس منطقة الدخول يعلق عقد معاكس

    كنت قد سبق واضفت شيئ ثاني على الطريقة وهي
    علق الاكسبير 5 عقود بيع و5 شراء المسافة بين العفد والاخر 20 نقطة والهدف 20
    انا الذي اضفته انه عند تفعيل الصفقة الاولى يقوم الاكسبيرت بتعليق صفقة معاكسة للحماية من الانعكاس لانه كما تعلم الفارق بين العقد الاول شراء والعقد الاول بيع يمكن يكون فوق ال25 نقطة

    ارجو انني قد اوصلت الفكرة اذا اردت نسخة عن الاكسبيرت انا بامرك

    اول اكسبيرت قام ببرمجته الاخ حكيم والثاني الاخ محمود عامر

    ولكن المشكلة كما قلتها لك سابقا

  8. #8
    تاريخ التسجيل
    May 2010
    المشاركات
    172

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة alshakatan مشاهدة المشاركة
    كود PHP:
    if ( (MyBuyRealOrdersTotal(MagicNumber)==0) && (MyBuyPendingOrdersTotal(MagicNumber)==0) );
                                     
    OrderSend(Symbol(),OP_BUYSTOP ,Lots,BuyPrice,3,0,0,Name,MagicNumber,0,Green);
                                     if ( (
    MySellPendingOrdersTotal(MagicNumber)==0) && (MySellRealOrdersTotal(MagicNumber)==0) && (MyBuyRealOrdersTotal(MagicNumber)==1) );
                                     
    OrderSend(Symbol(),OP_SELLSTOP ,Lots,SellPrice,3,0,0,Name,MagicNumber,0,Green); 
    حقيقة أشكرك أخي الحبيب على حسن تعاونك وكرم خُلقك
    لقد وصلت الفكرة الأولية ورغم ما ذكرته عنها ورغم العدد المُضاعف للصفقات المؤجلة إلا أنه وحتى الآن لا أجد بديلاً.
    ولكن دعنا نتأكد من فهمي للكود الذي أوردته.
    هو الكود لفتح الصفقات المبدأئية وطبعاً سيتم تغيير الماجيك نمبر مع كل زوج جديد من الأوامر المؤجلة (بيع-شراء)
    وهذا الجزء تحديداً مثلاً لفتح صفقة شراء حقيقية بسعر وأرقام حقيقية ثم وضع صفقة البيع المُقابلة (الغير حقيقية بالسعر بعيد المنال)
    والعكس في حالة فتح صفقات البيع الحقيقية.

  9. #9
    تاريخ التسجيل
    May 2010
    المشاركات
    172

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ابو _ تراب مشاهدة المشاركة
    اولا اسمح لي ان القي عليك التحية

    السلام عليكم ورحمة الله وبركاته

    ثانيا اخي الكريم منذ متى وانت تفكر بهذه الطريقة

    انا كنت سبق وطرحت نفس الطريقة في عدة منتديات عربية عدد 3 منتديات لن اذكر امائها لانه على ما اظن ممنوع ذكر الاسامي

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

    الذي يحدث اذا تفعل العقد شراء على سعر 1.4000 وتحرك السعر لنقول 10 نقاط ورجع السعر لامس منطقة الدخول يقوم الاكسبير بتعليق عقد معاكس حتى ولو حدث هذا مليون مرة كل ما السعر يلامس منطقة الدخول يعلق عقد معاكس

    كنت قد سبق واضفت شيئ ثاني على الطريقة وهي
    علق الاكسبير 5 عقود بيع و5 شراء المسافة بين العفد والاخر 20 نقطة والهدف 20
    انا الذي اضفته انه عند تفعيل الصفقة الاولى يقوم الاكسبيرت بتعليق صفقة معاكسة للحماية من الانعكاس لانه كما تعلم الفارق بين العقد الاول شراء والعقد الاول بيع يمكن يكون فوق ال25 نقطة

    ارجو انني قد اوصلت الفكرة اذا اردت نسخة عن الاكسبيرت انا بامرك

    اول اكسبيرت قام ببرمجته الاخ حكيم والثاني الاخ محمود عامر

    ولكن المشكلة كما قلتها لك سابقا

    السلام عليكم ورحمة الله وبركاته أخي
    فكرتي مُختلفة نوعاً ما عن فكرتك ولو أنهما اتفقا على المُشكلة وهي عدم الربط بين الصفقة وما يتم فتحه من صفقة عكسية... وبالتأكيد عندما يوضع شرط مثل (عندما يتم تفعيل صفقة باي ستوب وتحولها لصفقة باي افتح صفقة سل ستوب مثلاً) .. هذا شرط دائم ولا ينتفي إلا بإغلاق صفقة الباي أو بتحجيم البروكر لعدد الصفقات المفتوحة...بالمثل في شرط العودة لسعر مُعين...
    فيما يخص الفكرة ففكرتك قائمة على فتح الصفقات العكسية مع تحقيق الهدف وفكرتي قائمة على فتح الصفقات العكسية بمجرد فتح الصفقة الأساسية.
    وقد أتتني الفكرة عندما قمت بتحليل اكسبرت GRID الذي وضعته مؤخراً وواجهتني فيه مشكلة شبيهة ورأيت أن الفكرة الجديدة تحل مشاكل فكرة هذا الروبوت.
    بالتأكيد أحب أن أفحص الاكسبرتين الذي تتحدث عنهما ولك جزيل الشُكر.

  10. #10
    تاريخ التسجيل
    Apr 2010
    المشاركات
    341

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة egyptsoul مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته أخي
    فكرتي مُختلفة نوعاً ما عن فكرتك ولو أنهما اتفقا على المُشكلة وهي عدم الربط بين الصفقة وما يتم فتحه من صفقة عكسية... وبالتأكيد عندما يوضع شرط مثل (عندما يتم تفعيل صفقة باي ستوب وتحولها لصفقة باي افتح صفقة سل ستوب مثلاً) .. هذا شرط دائم ولا ينتفي إلا بإغلاق صفقة الباي أو بتحجيم البروكر لعدد الصفقات المفتوحة...بالمثل في شرط العودة لسعر مُعين...
    فيما يخص الفكرة ففكرتك قائمة على فتح الصفقات العكسية مع تحقيق الهدف وفكرتي قائمة على فتح الصفقات العكسية بمجرد فتح الصفقة الأساسية.
    وقد أتتني الفكرة عندما قمت بتحليل اكسبرت GRID الذي وضعته مؤخراً وواجهتني فيه مشكلة شبيهة ورأيت أن الفكرة الجديدة تحل مشاكل فكرة هذا الروبوت.
    بالتأكيد أحب أن أفحص الاكسبرتين الذي تتحدث عنهما ولك جزيل الشُكر.
    شكرا لردك ان شاء الله نصل لحل

  11. #11
    تاريخ التسجيل
    May 2010
    المشاركات
    172

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ابو _ تراب مشاهدة المشاركة
    شكرا لردك ان شاء الله نصل لحل
    أرجو إرفاق الاكسبرتين أخي لفحصهما.

  12. #12
    تاريخ التسجيل
    Mar 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    440

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة egyptsoul مشاهدة المشاركة
    حقيقة أشكرك أخي الحبيب على حسن تعاونك وكرم خُلقك
    لقد وصلت الفكرة الأولية ورغم ما ذكرته عنها ورغم العدد المُضاعف للصفقات المؤجلة إلا أنه وحتى الآن لا أجد بديلاً.
    ولكن دعنا نتأكد من فهمي للكود الذي أوردته.
    هو الكود لفتح الصفقات المبدأئية وطبعاً سيتم تغيير الماجيك نمبر مع كل زوج جديد من الأوامر المؤجلة (بيع-شراء)
    وهذا الجزء تحديداً مثلاً لفتح صفقة شراء حقيقية بسعر وأرقام حقيقية ثم وضع صفقة البيع المُقابلة (الغير حقيقية بالسعر بعيد المنال)
    والعكس في حالة فتح صفقات البيع الحقيقية.
    أخي العزيز ............. على حسب فهمي لإستفسارك
    بالنسبة للكود المرفق ....... ليست نفس الفكرة و اللتي أوردتها في ردي الأول ..... لأن الفكرة لم تناسبك .
    و الكود المرفق هو لفتح العملية الرئيسية ...... و في حالة تفعيل العملية الرئيسية ..... يتم فتح العملية العكسية
    كود PHP:
    if ( (MyBuyRealOrdersTotal(MagicNumber)==0) && (MyBuyPendingOrdersTotal(MagicNumber)==0) );
                                     
    OrderSend(Symbol(),OP_BUYSTOP ,Lots,BuyPrice,3,0,0,Name,MagicNumber,0,Green); 
    و هو لفتح العملية الرئيسية
    كود PHP:
        if ( (MySellPendingOrdersTotal(MagicNumber)==0) && (MySellRealOrdersTotal(MagicNumber)==0) && (MyBuyRealOrdersTotal(MagicNumber)==1) );
                                     
    OrderSend(Symbol(),OP_SELLSTOP ,Lots,BuyPrice-20*POINT,3,0,0,Name,MagicNumber,0,Green); 
    في حالة لو أن العملية الرئيسية تفعلت سوف يفتح العملية المعاكسة مباشرة في نفس المكان المطلوب ( عدلت عن سابقتها ) و هو نفس مكان عملية الشراء الرئيسية ناقص 20 نقطة

  13. #13
    تاريخ التسجيل
    May 2010
    المشاركات
    172

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة alshakatan مشاهدة المشاركة
    أخي العزيز ............. على حسب فهمي لإستفسارك
    بالنسبة للكود المرفق ....... ليست نفس الفكرة و اللتي أوردتها في ردي الأول ..... لأن الفكرة لم تناسبك .
    و الكود المرفق هو لفتح العملية الرئيسية ...... و في حالة تفعيل العملية الرئيسية ..... يتم فتح العملية العكسية
    كود PHP:
    if ( (MyBuyRealOrdersTotal(MagicNumber)==0) && (MyBuyPendingOrdersTotal(MagicNumber)==0) );
                                     
    OrderSend(Symbol(),OP_BUYSTOP ,Lots,BuyPrice,3,0,0,Name,MagicNumber,0,Green); 
    و هو لفتح العملية الرئيسية
    كود PHP:
        if ( (MySellPendingOrdersTotal(MagicNumber)==0) && (MySellRealOrdersTotal(MagicNumber)==0) && (MyBuyRealOrdersTotal(MagicNumber)==1) );
                                     
    OrderSend(Symbol(),OP_SELLSTOP ,Lots,BuyPrice-20*POINT,3,0,0,Name,MagicNumber,0,Green); 
    في حالة لو أن العملية الرئيسية تفعلت سوف يفتح العملية المعاكسة مباشرة في نفس المكان المطلوب ( عدلت عن سابقتها ) و هو نفس مكان عملية الشراء الرئيسية ناقص 20 نقطة
    أعتقد أن هذه فكرة أفضل أخي...للتأكيد سنقوم بعمل ماجيك نمبر خاص بكل صفقة يتم فتحها بحيث نستطيع استغلال هذا الماجيك لاحقاً لفتح الصفقة المُقابلة...وطبعاً المقصود ب MyBuyRealOrdersTotal هي الصفقات المفتوحة فعلاً.
    في هذه الحالة سنقوم بعمل لووب لإنشاء أرقام ماجيك بعدد الصفقات المفتوحة.
    ونمنح كل صفقة أحد هذه الأرقام...إلخ.
    أعتقد أنها فكرة ممتازة بالفعل أخي...لو هناك إضافة لزيادة التوضيح والتطوير أرجو أن لا تبخل بالمشاركة.

  14. #14
    تاريخ التسجيل
    Mar 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    440

    افتراضي

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

    كود PHP:
    extern int MagicNumber=1;
    int t1,t2
    كود PHP:
     if ( (MyBuyRealOrdersTotal(MagicNumber)==0
    كود PHP:
    int MyBuyRealOrdersTotal(int Magic)
          {
                
    int c=0;
                
    int total  OrdersTotal();
                
    t1=-1;
                
    t2=-1;
                for (
    int cnt cnt total cnt++)
                      {
                            
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
                            if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))
                                  {
                                        if (
    t1==-1)
                                              {
                                                    
    t1=OrderTicket();
                                              }
                                        else
                                              {
                                                    if (
    t2==-1)
                                                          {
                                                                
    t2=OrderTicket();
                                                          }
                                              }
                                        
    c++;
                                  }
                      }
                return(
    c);
          } 
    كود PHP:
    int MyBuyPendingOrdersTotal(int Magic)
          {
                
    int c=0;
                
    int total  OrdersTotal();
                for (
    int cnt cnt total cnt++)
                      {
                            
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
                            if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT ))
                                  {
                                        
    c++;
                                  }
                      }
                return(
    c);
          } 
    كود PHP:
    extern int    MagicNumber2=2
    كود PHP:
     if ( (MyBuyRealOrdersTotal2(MagicNumber2)==0
    كود PHP:
    int MyBuyRealOrdersTotal2(int Magic)
          {
                
    int c=0;
                
    int total  OrdersTotal();
                
    t1=-1;
                
    t2=-1;
                for (
    int cnt cnt total cnt++)
                      {
                            
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
                            if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))
                                  {
                                        if (
    t1==-1)
                                              {
                                                    
    t1=OrderTicket();
                                              }
                                        else
                                              {
                                                    if (
    t2==-1)
                                                          {
                                                                
    t2=OrderTicket();
                                                          }
                                              }
                                        
    c++;
                                  }
                      }
                return(
    c);
          } 
    آخر تعديل بواسطة alshakatan ، 19-04-2011 الساعة 06:44 PM

  15. #15
    تاريخ التسجيل
    Apr 2010
    المشاركات
    341

    افتراضي

    تفضل يا حب واسف على التاخير
    الملفات المرفقة الملفات المرفقة