صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 17
  1. #1
    الصورة الرمزية YounesShabani
    YounesShabani غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    روسيا
    المشاركات
    19

    افتراضي أستفسار عن ادارة رأس المال في الاكسبرت (برمجة ادارة رأس المال لكل صفقة )

    سلام عليكم و رحمة الله وبركاته
    كان عندي فكرة كل اخلي الاكسبرت يخاطر بكل صفقة ب 1 % من الحساب و يحسب حجم اللوت بحسب عدد نقاط ستوب لوز
    مثال
    الحساب 10000 دولار نسبة المخاطرة 2 % و ستوب لوز مثلا 24
    من هذا كلوا
    (10000 *2 /100 )/24 = 200 / 24 = 8.3333 دولار لكل نقطة
    اي 0.83 لوت
    Lots=(AccountBalance()*RiskPercent/100)/((MathAbs(OrderStopLoss()-OrderOpenPrice()))*10000);
    جربت الكود و اكواد كثير و لا واحد عم يشتغل
    بقدر حدا يدلني اكيف ازبط الكود
    و شكرا
    وتحياتي

  2. #2
    الصورة الرمزية Aymoon_FX
    Aymoon_FX غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2015
    الإقامة
    مصر
    المشاركات
    498

    افتراضي

    تحت الـ Local variables
    كود PHP:
    int Q,digits,Lot_Decimal
    ثم داخل دالة الـ int OnInit()
    كود PHP:
    if(MarketInfo(Symbol(),MODE_MINLOT)<0.1)Lot_Decimal=2;else Lot_Decimal=1
    ثم داخل الدالة void OnTick()
    الاول بتحسب عدد نقاط الاستوب لوز وتقسمها على نسبة الخسارة من راس المال النتيجة هتكون اللوت المناسب للصفقة اللي تساوي نسبة الخسارة لو الصفقة ضربت استوب لوز
    مثال :
    كود PHP:
     double cp=iClose(Symbol(),0,1);
     
    double lp=iLow(Symbol(),0,1); 
     
    double hp=iHigh(Symbol(),0,1);
     
    double op=iOpen(Symbol(),0,0);
      
     
    double pipsbuy=(Ask-lp)/Point;
     if(
    Tryy>0&&pipsbuy>0)double lotsbuy=(Balance/Tryy/pipsbuy);

     
    double pipssell=(hp-Bid)/Point;
     if(
    Tryy>0&&pipssell)double lotssell=(Balance/Tryy/pipssell); 
     
    double Takeprofitbuy=(Ask-lp)/Point/10*Step_TakeProfits_Buy;
     
    double Takeprofitsell=(hp-Bid)/Point/10*Step_TakeProfits_Sell
    وبتعمل متغيرات خارجية في مدخلات الاكسبرت كالتالي :
    كود PHP:
    input double     Step_TakeProfits_Buy=2,
                     
    Step_TakeProfits_Sell=2,
                     
    Balance=2000,
                     
    Tryy=100;  
                    
    input double     Stoploss=0.1
    واخيراً بتعمل التالي في شروط فتح الصفقة

    كود PHP:
    int tickets=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lotssell,Lot_Decimal),NormalizeDouble(Bid,Digits),3*Q,SLs,TPs,"aymoon",MagicNo,0,Red); 
    توقيع العضو
    اخوكم أيمن
    مبرمج اكسبرتات أي خدمة تحت أمركم

  3. #3
    الصورة الرمزية YounesShabani
    YounesShabani غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    روسيا
    المشاركات
    19

    افتراضي

    شكرا اخي أيمن راح اجربها
    تحياتي

  4. #4
    الصورة الرمزية YounesShabani
    YounesShabani غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    روسيا
    المشاركات
    19

    افتراضي

    ما زبطت معي
    عم بحاول اعدل على اكسبرت عجبني بكثرة المدخلات الي فيوا
    بامكانك اخي ايمن و احد من الاخوة المبرمجين التعديل على المخاطرة بحيث تكون جسب عدد نقاط ستوب لوز مثل ما وضحت باول المشاركة
    extern bool RiskManagement=false; //money management
    extern double RiskPercent=10; //risk in percentage
    و بهكذا يمكن استعمال هذا الاكسبرت كقالب لاستراتيجيات مختلفة
    //risk management
    bool MM=RiskManagement;
    if(MM){if(RiskPercent<0.1||RiskPercent>100){Commen t("Invalid Risk Value.");return(0);}
    else{Lots=MathFloor((AccountFreeMargin()*AccountLe verage()*RiskPercent*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*
    MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symb ol(),MODE_MINLOT);}}
    if(MM==false){Lots=Lots;}

    سلام عليكم و رحمة الله وبركاته
    كان عندي فكرة كل اخلي الاكسبرت يخاطر بكل صفقة ب 1 % من الحساب و يحسب حجم اللوت بحسب عدد نقاط ستوب لوز
    مثال
    الحساب 10000 دولار نسبة المخاطرة 2 % و ستوب لوز مثلا 24
    من هذا كلوا
    (10000 *2 /100 )/24 = 200 / 24 = 8.3333 دولار لكل نقطة
    اي 0.83 لوت
    Lots=(AccountBalance()*RiskPercent/100)/((MathAbs(OrderStopLoss()-OrderOpenPrice()))*10000);
    جربت الكود و اكواد كثير و لا واحد عم يشتغل
    بقدر حدا يدلني اكيف ازبط الكود
    و شكرا
    وتحياتي
    الملفات المرفقة الملفات المرفقة

  5. #5
    الصورة الرمزية YounesShabani
    YounesShabani غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    روسيا
    المشاركات
    19

    افتراضي

    كود:
    input double     Step_TakeProfits_Buy=2, 
                     Step_TakeProfits_Sell=2, 
                     Balance=2000, 
                     Tryy=100;   
                     
    input double     Stoploss=0.1;
    اخي بامكانك تشرح كيفية عملها
    هل يمكن تبسيط الكود
    بحيث يمكن وضع نسبة مخاطرة داخل شروط الاكسبرت مثال
    كود:
    double risk = 2 ;
    صرحتنا الكود صعب شوي
    تحياتي

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

    افتراضي

    اكثر شيء شرحته في المنتديات
    فكرة سؤالك: ماهو حجم الصفقة باللوتات التي تكفل خسارة 1% مثلا بعد 24 نقطة؟

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

    افتراضي

    المشكلة في كودك اخي انك افترضت الامر مفتوح واستخدمت دوال امر مفتوح او معلق: ونعلم ان قيمها 0.00000 قبل وضعها
    OrderStopLoss()-OrderOpenPrice())

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

    افتراضي

    والخطأ الابرز في كودك رقم 10000 في المعادلة
    افترض طبقت على المجنون ؟؟؟

    وكودك بالمجمل صحيح الا فيما ذكر--يعني الفكرة نفسها صحيحة (قسمة الخسارة على فرق النقاط)-- مع ملاحظة انك نسيت قيمة النقطة لزوج وهي تؤثر في قيمة الربح او الخسارة,

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

    افتراضي

    ===========
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة 577.png‏  

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

    افتراضي

    ستواجهك مشكلة التقريب: انظر للصورة, سواء استخدن النورمال او السترنق
    تحلها بخصم 0.01 لوت من الناتج الاخير, او تستخدم طريقة اذكى شوي,
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة 577.png‏  

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

    افتراضي

    او تستخدم طريقة اذكى شوي,
    =============
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة 577.png‏  

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

    افتراضي

    فيكون أفضل جواب على الإطلاق لسؤالك هو:
    كود PHP:
       Lotsx=(AccountBalance()*RiskPercent/100.0)/(PIPS_LOSS*MarketInfo(Symbol(),MODE_TICKVALUE));
       
    double Lots3=Lotsx-MathMod(Lotsx,0.01); 

  13. #13
    الصورة الرمزية YounesShabani
    YounesShabani غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2018
    الإقامة
    روسيا
    المشاركات
    19

    افتراضي

    شكرا أخي محمد على الاجابة الكود الي كتبتوا استعملتوا
    بس المشكلة انو انا ما بستعمل Fixed Stop loss
    يعني عندي الاكسبرت بستعمل المعدلات التالية لحساب الستوب لوز
    كود:
    // SL=(Low[iLowest(_Symbol, PERIOD_CURRENT, MODE_LOW, NumberOfBarsSwing, 0)])+(Ask-Bid); BUY //
    // TP=(Ask-(Low[iLowest(_Symbol, PERIOD_CURRENT, MODE_LOW, NumberOfBarsSwing, 0)]))+Ask; BUY //
    // SL=(High[iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, NumberOfBarsSwing, 0)])+(Ask-Bid); SELL //
    // TP=Bid-((High[iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, NumberOfBarsSwing, 0)])-Bid); SELL //
    NumberOfBarsSwing عدد شمعات للمقارنة بين القمم او القيعان الاخيرة
    و المشكلة لما يوصل و يبلش يحسب اللوت ما بيتعرف على الستوب لوز الذي يتغير بكل صفقة سوى كانت بيع او شراء
    تحياتي

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة YounesShabani مشاهدة المشاركة
    شكرا أخي محمد على الاجابة الكود الي كتبتوا استعملتوا
    بس المشكلة انو انا ما بستعمل Fixed Stop loss
    يعني عندي الاكسبرت بستعمل المعدلات التالية لحساب الستوب لوز
    كود:
    // SL=(Low[iLowest(_Symbol, PERIOD_CURRENT, MODE_LOW, NumberOfBarsSwing, 0)])+(Ask-Bid); BUY //
    // TP=(Ask-(Low[iLowest(_Symbol, PERIOD_CURRENT, MODE_LOW, NumberOfBarsSwing, 0)]))+Ask; BUY //
    // SL=(High[iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, NumberOfBarsSwing, 0)])+(Ask-Bid); SELL //
    // TP=Bid-((High[iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, NumberOfBarsSwing, 0)])-Bid); SELL //
    NumberOfBarsSwing عدد شمعات للمقارنة بين القمم او القيعان الاخيرة
    و المشكلة لما يوصل و يبلش يحسب اللوت ما بيتعرف على الستوب لوز الذي يتغير بكل صفقة سوى كانت بيع او شراء
    تحياتي
    استعجلت في الرد
    لايهمني هنا الوقف الثابت--وضعناها فقط للتوضيح لعدم اهميته في سؤالك
    نفس المعادلة تستخدم لما تريده انت
    فقط بدلا من جعله متغير ثابت او قيمة ثابتة--اجعله متغير يحسب بقيمة قبل التعويض به لحساب اللوت

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

    افتراضي

    يعني بدلا من اعطاء PIPS_LOSS قيمة ثابتة----اسحبها اولا:
    مثال:
    PIPS_LOSS=(High[iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, NumberOfBarsSwing, 0)])-Ask; G
    مع ضرب القيمة في 10000 او 100 حسب الزوج لتحويله من فرق سعري الى فرق نقاط

صفحة 1 من 2 12 الأخيرةالأخيرة

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