صفحة 141 من 686 الأولىالأولى ... 4191131135136137138139140141142143144145146147151191241641 ... الأخيرةالأخيرة
النتائج 2,101 إلى 2,115 من 10283
  1. #2101
    الصورة الرمزية xcv114
    xcv114 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2010
    الإقامة
    مصر
    المشاركات
    1,022

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة xcv114 مشاهدة المشاركة
    أستاذ أسامة أنا بعمل إكسبيرت للموضوع ده
    https://forum.arabictrader.com/t144719.html

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

    بس جربت كتير وغيرت كتير في الكود لكن كل مرة بعد ما يتحقق الشرط إن مثلا الربح وصل 100 نقطة
    ينفذ أمر الإغلاق ويغلق مثلا 4 عمليات من 5
    ويظهر خطأ في الجونال بأن رقم التيكت خطأ


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

    أنا عدلت في الدالة إللي بتجيب مجموع النقاط وخلتها بالشكل ده
    كود PHP:
    int TotalPips(){
    double pips;
    int pipstotal;
    for(
    int i=OrdersTotal()-1;i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(
    OrderType()==OP_BUY){
    pips=((MarketInfo(OrderSymbol(), MODE_BID) - OrderOpenPrice())/point);}
    if(
    OrderType()==OP_SELL){
    pips=((OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_ASK))/point);}
        
        if (
    OrderType() == OP_BUY || OrderType() == OP_SELLpipstotal+= pips;
       }
    return(
    pipstotal);
     } 
    وعدلت في حلقة إغلاق الأوامر وضفت عليها switch
    بالشكل ده
    كود PHP:
    if(TotalPips()>=CloseAllin_Pips){
       
    int _total=OrdersTotal();
       
    int type;
       if (
    _total==0) {return;} 
       
    int ticket;
       
    double priceClose;
       
       for (
    int b=_total-1;b>=0;b--){
        if(
    OrderSelect(b,SELECT_BY_POS)){
          
    type=OrderType();
          
    ticket=OrderTicket();
          switch(
    type){
            case 
    OP_BUY:
                 
    priceClose=MarketInfo(OrderSymbol(),MODE_BID);
                 
    OrderClose(ticket,OrderLots(),priceClose,3*Q);
                 break;
            case 
    OP_SELL:
                 
    priceClose=MarketInfo(OrderSymbol(),MODE_ASK);
                 
    OrderClose(ticket,OrderLots(),priceClose,3*Q);
                 break;
            default:
                 break;
                   }
                 }
               }
             } 
    أنا كده الغلط عندي فين ؟

  2. #2102
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة dentist_hussein مشاهدة المشاركة


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


    int barnumber
    ;  
    for(
    int i=1;i<Bars;i++){  
    double up=iCustom(Symbol(),0,"arrow",1,i);
    double down=iCustom(Symbol(),0,"arrow",2,i);  
    if(
    up<5000)
    && if(
    down>10000) {  
    barnumber=i;  
    break;  
     }  

    ثم في شرط الشراء :
    كود PHP:

    if(up<5000 && down>10000 )  
    {  
    // buy  

    و إذا كانت الطريقة صحيحه فهل تكون الأكواد التاليه صحيحه للتحقق من فريم آخر :

    كود PHP:

    int barnumber
    ;  
    for(
    int i=1;i<Bars;i++){  
    double up=iCustom(Symbol(),0,"arrow",1,i);
    double down=iCustom(Symbol(),0,"arrow",2,i);  
    if(
    up<5000)
    && if(
    down>10000) {  
    barnumber=i;  
    break;  
     }  
    }



    int barnumber;  
    for(
    int i=1;i<Bars;i++){  
    double up60=iCustom(Symbol(),60,"arrow",1,i);
    double down60=iCustom(Symbol(),60,"arrow",2,i);  
    if(
    up<5000)
    && if(
    down>10000) {  
    barnumber=i;  
    break;  
     }  

    ثم في شرط الشراء :
    كود PHP:
    if(up<5000 && down>10000 && up60<5000 && down60>10000 )  
    {  
    // buy  

    و شكرا جزيلا
    الشرط الذي وضعته
    كود PHP:
    if(up<5000
    && if(
    down>10000) { 
    طريقة كتابة الكود خاطئة فإذا أردت وضع && فسوف تكون if واحده وبداخل القوسين سوف تضع الشرطين
    بهذه الطريقة فأنت لم تحصل على ما تريده
    أنت تريد التوقف عن البحث في حال ظهرت سهم بيع فسوف تضع بالتالي في حال ظهر سهم الشراء سوف يحفظ رقم الشمعه ويتم الخروج من الحلقه لكن إذا ظهر سهم البيع سوف يتم الخروج من الحلقه بدون حفظ رقم الشمعه
    كود PHP:
    int barnumber;  
    for(
    int i=1;i<Bars;i++){  
    double up=iCustom(Symbol(),0,"arrow",1,i);
    double down=iCustom(Symbol(),0,"arrow",2,i);  
    if(
    up<5000
    {
    barnumber=i; break;
    }
    if(
    down<5000)break; 
      
      

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

  3. #2103
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة xcv114 مشاهدة المشاركة


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

    أنا عدلت في الدالة إللي بتجيب مجموع النقاط وخلتها بالشكل ده
    كود PHP:
    int TotalPips(){
    double pips;
    int pipstotal;
    for(
    int i=OrdersTotal()-1;i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(
    OrderType()==OP_BUY){
    pips=((MarketInfo(OrderSymbol(), MODE_BID) - OrderOpenPrice())/point);}
    if(
    OrderType()==OP_SELL){
    pips=((OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_ASK))/point);}
        
        if (
    OrderType() == OP_BUY || OrderType() == OP_SELLpipstotal+= pips;
       }
    return(
    pipstotal);
     } 
    وعدلت في حلقة إغلاق الأوامر وضفت عليها switch
    بالشكل ده
    كود PHP:
    if(TotalPips()>=CloseAllin_Pips){
       
    int _total=OrdersTotal();
       
    int type;
       if (
    _total==0) {return;} 
       
    int ticket;
       
    double priceClose;
       
       for (
    int b=_total-1;b>=0;b--){
        if(
    OrderSelect(b,SELECT_BY_POS)){
          
    type=OrderType();
          
    ticket=OrderTicket();
          switch(
    type){
            case 
    OP_BUY:
                 
    priceClose=MarketInfo(OrderSymbol(),MODE_BID);
                 
    OrderClose(ticket,OrderLots(),priceClose,3*Q);
                 break;
            case 
    OP_SELL:
                 
    priceClose=MarketInfo(OrderSymbol(),MODE_ASK);
                 
    OrderClose(ticket,OrderLots(),priceClose,3*Q);
                 break;
            default:
                 break;
                   }
                 }
               }
             } 
    أنا كده الغلط عندي فين ؟
    جربت تقوم بطباعة القيم على الشارت لتتأكد أي جزء هو الخطأ تماما كما كنا نفعل في الدوره
    بالمناسبه في الكود الأول يمكنك إضافة شرط حتى تتأكد من إغلاق جميع الصفقات
    كود PHP:
     while(orderstotal()>0){
       
    // close Orders 
       

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

  4. #2104
    الصورة الرمزية spiders101
    spiders101 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2011
    الإقامة
    مصــر
    المشاركات
    935

    افتراضي

    لدى سؤال استـاذ اسـامة بخصوص الحلقة التى تستخدم لتحديد سعر افتتاح الصفقة الحالية .
    كود PHP:
       for(int i =0;i<OrdersTotal();i++){
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&& OrderType()==OP_BUY ){
          
    double openprice=OrderOpenPrice();double lot=OrderLots(); 

    هل يمكن وضع هذه الحلقة خارج دالة ستارت !!

    ام يجب وضعها داخل دالة ستارت كما بالاكسيبرت المرفق .

    وسؤال أخر ،، لماذا يجب تعريف

    كود PHP:
    double lot=OrderLots() 
    ولايستخدم اللوت الاساسى الذى تم تعريفه فـ بداية الاكسيبرت - Lots - ويوضع مع شروط فتح الصفقة فـ أمر OrderSend ..
    كود PHP:
    OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),5*Q,0,0," EA",MagicNumber,0,Blue); 
    وتكون بالشكل التالـى ..
    كود PHP:
    double Lots=OrderLots(); 
    الملفات المرفقة الملفات المرفقة

  5. #2105
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة spiders101 مشاهدة المشاركة
    لدى سؤال استـاذ اسـامة بخصوص الحلقة التى تستخدم لتحديد سعر افتتاح الصفقة الحالية .
    كود PHP:
       for(int i =0;i<OrdersTotal();i++){
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&& OrderType()==OP_BUY ){
          
    double openprice=OrderOpenPrice();double lot=OrderLots(); 
    هل يمكن وضع هذه الحلقة خارج دالة ستارت !!

    ام يجب وضعها داخل دالة ستارت كما بالاكسيبرت المرفق .

    وسؤال أخر ،، لماذا يجب تعريف

    كود PHP:
    double lot=OrderLots() 
    ولايستخدم اللوت الاساسى الذى تم تعريفه فـ بداية الاكسيبرت - Lots - ويوضع مع شروط فتح الصفقة فـ أمر OrderSend ..
    كود PHP:
    OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),5*Q,0,0," EA",MagicNumber,0,Blue); 
    وتكون بالشكل التالـى ..
    كود PHP:
    double Lots=OrderLots(); 
    نعم يمكنك وضعها في دالة مستقله تعود بسعر الإفتتاح وهو الأفضل في رأيي في حال إستخدمتها أكثر من مره في أكثر من كود سيكون إستدعاء الداله أسهل

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

  6. #2106
    الصورة الرمزية صاحب هدف
    صاحب هدف غير متواجد حالياً موقوف
    تاريخ التسجيل
    Jan 2010
    الإقامة
    سوريا
    المشاركات
    5,384

    افتراضي

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

    أستاذ أسامة تحياتي لك

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

    كود:
    //+------------------------------------------------------------------+ //| sc.mq4 | //| Copyright 2012,صاحب هدف | //| | //+------------------------------------------------------------------+ #property copyright "Copyright 2012,صاحب هدف" #property link "" //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"aa",1000,0,Red) //---- return(0); } //+------------------------------------------------------------------+

  7. #2107
    الصورة الرمزية xcv114
    xcv114 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2010
    الإقامة
    مصر
    المشاركات
    1,022

    افتراضي

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

    أستاذ أسامة تحياتي لك

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

    كود:
    //+------------------------------------------------------------------+ //| sc.mq4 | //| Copyright 2012,صاحب هدف | //| | //+------------------------------------------------------------------+ #property copyright "Copyright 2012,صاحب هدف" #property link "" //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"aa",1000,0,Red) //---- return(0); } //+------------------------------------------------------------------+
    ضع الفصلة المنقوطة في نهاية الأمر ;
    كود PHP:
      OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"aa",1000,0,Red); 
    الفاصلة المنقوطة هي حرف ( ك ) في الكيبورد
    وأي سطر برمجي لازم ينتهي بالفاصلة المنقوطة ;
    إلا حالات خاصة هتعرفها بإذن الله خلال دراستك للبرمجة

  8. #2108
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    الشرط الذي وضعته
    كود PHP:
    if(up<5000
    && if(
    down>10000) { 
    طريقة كتابة الكود خاطئة فإذا أردت وضع && فسوف تكون if واحده وبداخل القوسين سوف تضع الشرطين
    بهذه الطريقة فأنت لم تحصل على ما تريده
    أنت تريد التوقف عن البحث في حال ظهرت سهم بيع فسوف تضع بالتالي في حال ظهر سهم الشراء سوف يحفظ رقم الشمعه ويتم الخروج من الحلقه لكن إذا ظهر سهم البيع سوف يتم الخروج من الحلقه بدون حفظ رقم الشمعه
    كود PHP:
    int barnumber;  
    for(
    int i=1;i<Bars;i++){  
    double up=iCustom(Symbol(),0,"arrow",1,i);
    double down=iCustom(Symbol(),0,"arrow",2,i);  
    if(
    up<5000
    {
    barnumber=i; break;
    }
    if(
    down<5000)break; 
      
      

    ونفس الطريقة هذه تستخدمها مع التايم فريم الآخر

    أشكرك شكرا جزيلا أستاذ أسامه و جزاك الله كل خير ,,, الآن مفهوم و بإذن الله سوف أحاول البحث و القراءه أكثر عن الداله for ‎‏ و إذا كان لديك لينك يشرحها بإستفاضه هي وباقي الدوال رجاء إرفاقه , ,
    و لي سؤال إذا سمحت ,,, ما الذي يجعل إكسبيرت كان يعمل بشكل جيد يتوقف فجأه دون أي خطأ يظهر ,,, فالإكسبيرت الذي برمجته في موضوع إكسبيرت الترند و المستويات كنت أستخدمه فس حسابي الحقيقي و لكن منذ يومان فجأه توقف تماما و قبل أن يتوقف كان المره الأخيره له فتح صفقه ليس لها علاقه بإغلاق فوق الترند أو أسفله حتى أني كنت برمجت نسخه بها خاصية عدد النقاط وقمت بتجربتها فعملت بشكل ممتاز ثم توقفت هي الأخرى مع النسخه الأولى على كل المنصات لدي ,..
    هل هذا سببه مشكله بالمنصات أو بالنسخه عموما
    لينك الإكسبيرت مرفق
    https://forum.arabictrader.com/attac...sein-ea-v1.mq4
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  9. #2109
    الصورة الرمزية spiders101
    spiders101 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2011
    الإقامة
    مصــر
    المشاركات
    935

    افتراضي

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

    نقوم بتعريف متغير آخر lots حتى يكون اللوت الأساسي الموجود في المتغيرات الخارجيه Lots لا يتغير بحيث سوف يستخدم في فتح الصفقات الرئيسيه
    قمت بتعريف دالة خارج دالة ستارت ، تعود بسعر الافتتاح ..
    كود PHP:
     double OpenPrice(int type){
     for(
    int i=0;i<OrdersTotal();i++){
     
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&& type==OrderType()){
    double openprice=OrderOpenPrice();double lot=OrderLots();  

    }


    return(
    openprice);


    واضفت شروط فتح الصفقات كالتالى
    كود PHP:
    if(OpenPrice(OP_BUY)-Ask>Space*point && Additional_Buy_SELL_Lots==true){
     
    OrderSend(Symbol(),OP_BUY,lot*2,Ask,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);}



     if(
    Bid-OpenPrice(OP_SELL)>Space*point && Additional_Buy_SELL_Lots==true){
     
    OrderSend(Symbol(),OP_SELL,lot*2,Bid,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);} 

    ولكن يظهر خطأ عدم تعريف lot ، وقد تم تعريفه داخل دالة OpenPrice
    الملفات المرفقة الملفات المرفقة

  10. #2110
    الصورة الرمزية صاحب هدف
    صاحب هدف غير متواجد حالياً موقوف
    تاريخ التسجيل
    Jan 2010
    الإقامة
    سوريا
    المشاركات
    5,384

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة xcv114 مشاهدة المشاركة


    ضع الفصلة المنقوطة في نهاية الأمر ;
    كود PHP:
      OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"aa",1000,0,Red); 
    الفاصلة المنقوطة هي حرف ( ك ) في الكيبورد
    وأي سطر برمجي لازم ينتهي بالفاصلة المنقوطة ;
    إلا حالات خاصة هتعرفها بإذن الله خلال دراستك للبرمجة
    جزاك الله خيرا على التنبيه اخي الكريم سبحان الله جل من لا يسهو

    قمت بوضع الفاصلة وعمل بعض المتغيرات خارجية ولاتوجد اخطاء لكن السكربت لاينفذ شيء فمالمشكلة لو سمحت

    كود:
    //+------------------------------------------------------------------+ //| sc.mq4 | //| Copyright 2012,صاحب هدف | //| | //+------------------------------------------------------------------+ #property copyright "Copyright 2012,صاحب هدف" #property link "" extern int ty=0; extern int tp=10; extern int st=25; extern double lots=0.1; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- OrderSend(Symbol(),ty,lots,Ask,3,Ask-st*Point,Ask+tp*Point,"aa",1000,0,Red); //---- return(0); } //+------------------------------------------------------------------+

  11. #2111
    الصورة الرمزية xcv114
    xcv114 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2010
    الإقامة
    مصر
    المشاركات
    1,022

    افتراضي

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


    جزاك الله خيرا على التنبيه اخي الكريم سبحان الله جل من لا يسهو

    قمت بوضع الفاصلة وعمل بعض المتغيرات خارجية ولاتوجد اخطاء لكن السكربت لاينفذ شيء فمالمشكلة لو سمحت

    كود:
    //+------------------------------------------------------------------+ //| sc.mq4 | //| Copyright 2012,صاحب هدف | //| | //+------------------------------------------------------------------+ #property copyright "Copyright 2012,صاحب هدف" #property link "" extern int ty=0; extern int tp=10; extern int st=25; extern double lots=0.1; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- OrderSend(Symbol(),ty,lots,Ask,3,Ask-st*Point,Ask+tp*Point,"aa",1000,0,Red); //---- return(0); } //+------------------------------------------------------------------+
    إنت كاتب مكان نوع العملية ty المفروض بتكتب مكانها OP_BUY أو OP_SELL
    بس طالما إنت معرف extern int ty=0 فالإكسبيرت هيعتبرها صفقة شراء لإن OP_BUY يساوي 0

    ودي مش المشكلة بس حبيت أنبهك ليها
    -------------------------

    المكشلة عندك إنك أكيد شغال على منصة 5 أرقام
    فلما تكتب الإستوب لوز أو التيك بروفت 25 يبقى إنت كده عملته 2.5 نقطة
    لو إنت شغال على 5 أرقام يبقى المفروض تكتب بدل 25 .........>> 250

  12. #2112
    الصورة الرمزية xcv114
    xcv114 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2010
    الإقامة
    مصر
    المشاركات
    1,022

    افتراضي

    أستاذ أسامة إية رأيك في الفكرة دي !

    طبعا دالة start تعمل every tick وده بيأثر في الإكسبيرتات إللي بتنفذ أوامر كثيرة في نفس الوقت
    يعني لو مثلا عندنا إكسبيرت بيقفل الصفقات المفتوحة ( لو كانت الصفقات كتيرة مستحيل يقفلها كلها على نفس السعر )

    فإية رأيك لو نعمل دالة ونضع فيها كل الشغل والأوامر ( يعني نعاملها معاملة الدالة ستارت ) ونسميها مثلا
    BetterStart()
    ونضع فيها الشروط والأامر وكل حاجة كنا هنضعها في إستارت
    -------------------------

    أما دالة Start()
    فهنستخدمها بالشكل ده
    كود PHP:
    int start()
      {
      if (
    EA_NotOnTick == true){ while (IsExpertEnabled())
         {
    BetterStart();Sleep(1000);WindowRedraw();}} 
      else {
    BetterStart();}
      
    return(
    0);   
       } 
    وبالتالي ستقوم دالة إستارت بإستدعاء دالة BetterStart() كل 1000 مللي ثانية مثلا
    وبالتالي لن ينتظر الإكسبيرت تحرك السعر لينفذ الأوامر
    آخر تعديل بواسطة xcv114 ، 14-05-2012 الساعة 12:48 PM

  13. #2113
    الصورة الرمزية صاحب هدف
    صاحب هدف غير متواجد حالياً موقوف
    تاريخ التسجيل
    Jan 2010
    الإقامة
    سوريا
    المشاركات
    5,384

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة xcv114 مشاهدة المشاركة


    إنت كاتب مكان نوع العملية ty المفروض بتكتب مكانها OP_BUY أو OP_SELL
    بس طالما إنت معرف extern int ty=0 فالإكسبيرت هيعتبرها صفقة شراء لإن OP_BUY يساوي 0

    ودي مش المشكلة بس حبيت أنبهك ليها
    -------------------------

    المكشلة عندك إنك أكيد شغال على منصة 5 أرقام
    فلما تكتب الإستوب لوز أو التيك بروفت 25 يبقى إنت كده عملته 2.5 نقطة
    لو إنت شغال على 5 أرقام يبقى المفروض تكتب بدل 25 .........>> 250
    ألف شكر ياباشا على إهتمامك
    بالنسبة للـ ty فعلا أنا عايزها كده وهتكون إما 0 او 1
    المشكلة إني لما بعمل دبل كليك على السكربت مش بيعمل أي حاجة يعني مش بيفتح أي نافذة فمش عارف إيه المشكلة على الرغم إني بعمل كومبايل ومش بيديني أي خطأ
    رحت للجورنال لقيته بيكتب كده

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

الاســـم:	sc.png
المشاهدات:	132
الحجـــم:	2.6 كيلوبايت
الرقم:	323081

    هي البرمجة ماتنفعش تكون بالبساطة دي ولا إيه

  14. #2114
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة dentist_hussein مشاهدة المشاركة



    أشكرك شكرا جزيلا أستاذ أسامه و جزاك الله كل خير ,,, الآن مفهوم و بإذن الله سوف أحاول البحث و القراءه أكثر عن الداله for ‎‏ و إذا كان لديك لينك يشرحها بإستفاضه هي وباقي الدوال رجاء إرفاقه , ,
    و لي سؤال إذا سمحت ,,, ما الذي يجعل إكسبيرت كان يعمل بشكل جيد يتوقف فجأه دون أي خطأ يظهر ,,, فالإكسبيرت الذي برمجته في موضوع إكسبيرت الترند و المستويات كنت أستخدمه فس حسابي الحقيقي و لكن منذ يومان فجأه توقف تماما و قبل أن يتوقف كان المره الأخيره له فتح صفقه ليس لها علاقه بإغلاق فوق الترند أو أسفله حتى أني كنت برمجت نسخه بها خاصية عدد النقاط وقمت بتجربتها فعملت بشكل ممتاز ثم توقفت هي الأخرى مع النسخه الأولى على كل المنصات لدي ,..
    هل هذا سببه مشكله بالمنصات أو بالنسخه عموما
    لينك الإكسبيرت مرفق
    https://forum.arabictrader.com/attac...sein-ea-v1.mq4
    السبب ليس من الإكسبرت فلو راجعت كود الإكسبرت لن تجد ما يمنع عمله تأكد من المنصه نفسها ومن ضبط الإعدادات بشكل صحيح ليعمل الإكسبرت
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  15. #2115
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة spiders101 مشاهدة المشاركة
    قمت بتعريف دالة خارج دالة ستارت ، تعود بسعر الافتتاح ..
    كود PHP:
     double OpenPrice(int type){
     for(
    int i=0;i<OrdersTotal();i++){
     
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&& type==OrderType()){
    double openprice=OrderOpenPrice();double lot=OrderLots();  

    }


    return(
    openprice);

    واضفت شروط فتح الصفقات كالتالى
    كود PHP:
    if(OpenPrice(OP_BUY)-Ask>Space*point && Additional_Buy_SELL_Lots==true){
     
    OrderSend(Symbol(),OP_BUY,lot*2,Ask,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);}



     if(
    Bid-OpenPrice(OP_SELL)>Space*point && Additional_Buy_SELL_Lots==true){
     
    OrderSend(Symbol(),OP_SELL,lot*2,Bid,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);} 
    ولكن يظهر خطأ عدم تعريف lot ، وقد تم تعريفه داخل دالة OpenPrice
    عند تعريف أي متغيرات داخل دالة فهي المتغيرات تعتبر خاصة فقط بهذه الداله وإذا قمت بإستدعاء هذا المتغير في دوال أخرى سواء الدالة الرئيسية start أو أي داله أخرى فسوف يظهر هذا الخطأ
    بدلا من تعريف المتغير داخل الداله قم بتعريف خارج الداله أسفل المتغيرات الخارجيه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

المواضيع المتشابهه

  1. موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
    By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 11
    آخر مشاركة: 15-12-2023, 02:03 PM
  2. عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
    By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملات
    مشاركات: 280
    آخر مشاركة: 27-08-2009, 10:30 PM

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


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