النتائج 1 إلى 8 من 8
  1. #1
    الصورة الرمزية zelenko
    zelenko غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2010
    الإقامة
    مصر
    المشاركات
    1,711

    افتراضي اخواني المبرمجين اريد الكود البرمجي الذي يقوم بالوظيفة الاتية

    السلام عليكم

    لنفرض اخواني انني وضعت 4 اوامر باي ستوب فوق السعر الحالي و اول اورد يبعد عن السعر الحالي 10 نقط والفرق بين كل امر و الثاني 10 نقط

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

    عند تفعيل الاوردر الرابع اريد الاكسبيرت ان يقوم بوضع الستوب لوز للامر الثاني و الاول علي نقطة دخول الامر الثاني

    مثال : لو ان السعر الان عند النقطة صفر ثم ارتفع السعر للنقطة 10 ثم للنقطة 20 ثم للنقطة 30 ثم للنقطة 40 في هذه الحالة سوف يقوم الاكسبيرت بفتح الاربع اوامر باي ستوب

    انا اريده عندما يفتح الاوردر الرابع عند نقطة 40 ان يقوم بوضع ستوب الامر الاول المفتوح من نقطة 10 و الاوردر الثاني المفتوح من نقطة 20 علي دخول الاوردر الثاني (( نقطة 20 ))

    فما هو الكود البرمجي لفعل هذا ؟؟؟

    و جزاكم الله خيرا مقدما

  2. #2
    الصورة الرمزية zelenko
    zelenko غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2010
    الإقامة
    مصر
    المشاركات
    1,711

    افتراضي

    طب هوفيه اصلا كود يعمل كدة و لا مفيش اصلا ؟؟؟

  3. #3
    الصورة الرمزية mercury_man
    mercury_man غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jul 2007
    الإقامة
    روسيا - سانت بطرسبورغ
    المشاركات
    1,975

    افتراضي

    طبعا ممكن عمل هذا الشيء لكن صعب شوية
    الفكرة كالتالي
    1- وضع لكل امر ماجك نمبر خاص به وليكون 1,2,3,4
    2- في كل مرة يتحرك السعر راح يكون لوب يبحث عن الامر الرابع الذي يكون الماجك نمبر له 4
    اذا وجد هذا الامر يعمل لوب ثاني للوصول الى نقطة دخول الامر الثاني
    3- يعمل لوب ثالث لاختيار الامر الاول وتعديل الستوب له وكذلك الامر الثاني وتعديل الستوب له حسب نقطة دخول الامر الثاني
    يغلق اللوبات كالاتي
    {
    {
    {
    هذه هي الفكرة وارجو من احد الاخوة الاعزاء برمجتها
    واعتذر شديد الاعتذار لعدم تمكني من البرمجة حاليا لاني مرهق جدا جدا جدا
    تحياتي
    سلام

  4. #4
    الصورة الرمزية mercury_man
    mercury_man غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jul 2007
    الإقامة
    روسيا - سانت بطرسبورغ
    المشاركات
    1,975

    افتراضي

    اذا كانت الاوامر مفتوحة بواسطة اكسبيرت يمكن ترقيم الماجك كما موضح اعلاه

    اما اذا الاوامر يدوي ممكن عمل متغيرات للباي هي b1,b2,b3,b4 حيث يكون السعر الاقل للباي هو b1
    للسيل هي s1,s2,s3,s4 حيث يكون السعر الاعلى للسيل هو s1

    تحياتي
    سلام

  5. #5
    الصورة الرمزية zelenko
    zelenko غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2010
    الإقامة
    مصر
    المشاركات
    1,711

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة mercury_man مشاهدة المشاركة
    طبعا ممكن عمل هذا الشيء لكن صعب شوية
    الفكرة كالتالي
    1- وضع لكل امر ماجك نمبر خاص به وليكون 1,2,3,4
    2- في كل مرة يتحرك السعر راح يكون لوب يبحث عن الامر الرابع الذي يكون الماجك نمبر له 4
    اذا وجد هذا الامر يعمل لوب ثاني للوصول الى نقطة دخول الامر الثاني
    3- يعمل لوب ثالث لاختيار الامر الاول وتعديل الستوب له وكذلك الامر الثاني وتعديل الستوب له حسب نقطة دخول الامر الثاني
    يغلق اللوبات كالاتي
    {
    {
    {
    هذه هي الفكرة وارجو من احد الاخوة الاعزاء برمجتها
    واعتذر شديد الاعتذار لعدم تمكني من البرمجة حاليا لاني مرهق جدا جدا جدا
    تحياتي
    سلام
    اقتباس المشاركة الأصلية كتبت بواسطة mercury_man مشاهدة المشاركة
    اذا كانت الاوامر مفتوحة بواسطة اكسبيرت يمكن ترقيم الماجك كما موضح اعلاه

    اما اذا الاوامر يدوي ممكن عمل متغيرات للباي هي b1,b2,b3,b4 حيث يكون السعر الاقل للباي هو b1
    للسيل هي s1,s2,s3,s4 حيث يكون السعر الاعلى للسيل هو s1

    تحياتي
    سلام
    جزاك الله كل خير اخي الكريم

    نعم سيتم فتح الاومر عن طريق اكسبيرت

    و اديني منتظر احد المبرمجين يتحفني بالكود

  6. #6
    الصورة الرمزية mb
    mb
    mb غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2011
    المشاركات
    49

    افتراضي رد:اخواني المبرمجين اريد الكود البرمجي الذي يقوم بالوظيفة الاتية

    أفهم من كلامك أنك تعرف كيفية التعامل مع وظائف ستدمجها في الاكسبرت
    إذا
    مكتبة ضمن الاكسبرت لترجمة الأخطاء
    كود:
    #include <stderror.mqh> #include <stdlib.mqh>
    المتغيرات الخارجية ستكون كالتالي
    كود:
    extern string comment="O-O"; extern int slippage=3; //---- extern double Take_Profit=50; extern double Stop_Loss=50; extern double lots = 0.01; extern int ten_pips=10;
    المتغيرات العامة ستكون كالتالي
    كود:
    int tries=100; int DG; double PT,MD;
    الوظيفة init ستكون كالتالي
    كود:
    int init() { DG=Digits; if(DG==3 || DG==5){PT=Point*10;MD=10;} else{PT=Point;MD=1;} return(0); }
    الوظائف المضافة ستكون في start كالتالي
    كود:
    // OP_BUYSTOP OP_BUY int ret_1=buy_stop(1,1); //ret_1 first result, if(ret_1==2){int ret_2=buy_stop(2,2);} //ret_2 second result if(ret_2==3){int ret_3=buy_stop(3,3);} //ret_3 third result if(ret_3==4){int ret_4=buy_stop(4,4);} //ret_4 fourth result //---- if(looking_for_4(4,OP_BUY)>0) { buy_stop_loss(1); //first order magic number = 1 buy_stop_loss(2); //second Order magic number =2 } //---- //---- // OP_SELLSTOP OP_SELL int ret__1=sell_stop(-1,1); //ret__1 first result, if(ret__1==-2){int ret__2=sell_stop(-2,2);} //ret__2 second result if(ret__2==-3){int ret__3=sell_stop(-3,3);} //ret__3 third result if(ret__3==-4){int ret__4=sell_stop(-4,4);} //ret__4 fourth result //---- if(looking_for_4(-4,OP_SELL)>0) { sell_stop_loss(-1); //first order magic number = -1 sell_stop_loss(-2); //second Order magic number = -2 } //----
    الوظائف هي
    buy_stop لتعليق أمر شراء
    sell_stop لتعليق أمر بيع
    looking_for_4 للبحث إذا تفعل الامر المعلق الرابع و صار أمر سوق
    buy_stop_loss وضع حد الخسارة لأوامر الشراء
    sell_stop_loss وضع حد الخسارة لأوامر البيع

    كود:
    int buy_stop(int in,int x)//first variable magic number second variable multiplier of 10 pips { int buystop_ticket=0; int number=0; if(ten_pips<MarketInfo(Symbol(),MODE_STOPLEVEL)){ten_pips=MarketInfo(Symbol(),MODE_STOPLEVEL);} //---- double ask=Ask + (ten_pips*x*PT); //double loss_stop=ask - (Stop_Loss*PT); double profit_take=ask + (Take_Profit*PT); //---- while(buystop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); buystop_ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,ask,slippage*MD,0,profit_take,comment,in,0,Green); if(buystop_ticket<0){Print("Error opening buy stop! ",ErrorDescription(GetLastError())); number++;} } if(buystop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} else if(buystop_ticket>0){return(in+1);} } //---- int sell_stop(int in,int x)//first variable magic number second variable multiplier of 10 pips { int sellstop_ticket=0; int number=0; //---- double bid=Bid - (ten_pips*x*PT); //double loss_stop=bid + (Stop_Loss*PT); double profit_take=bid - (Take_Profit*PT); //--- while(sellstop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); sellstop_ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,bid,slippage*MD,0,profit_take,comment,in,0,Red); if(sellstop_ticket<0){Print("Error opening sell stop! ",ErrorDescription(GetLastError())); number++;} } if(sellstop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} else if(sellstop_ticket>0){return(in-1);} } //---- int looking_for_4(int magic,int type) { RefreshRates(); int cnt=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()==Symbol()) { if(OrderMagicNumber()==magic && OrderType()==type) { cnt++; } } } } return(cnt); } //---- void buy_stop_loss(int magic) { RefreshRates(); for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if(OrderType()==OP_BUY) { if(OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask - (Stop_Loss*PT),OrderTakeProfit(),0,Red); return(0); } } } } } } //---- void sell_stop_loss(int magic) { RefreshRates(); for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if(OrderType()==OP_SELL) { if(OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid + (Stop_Loss*PT),OrderTakeProfit(),0,Red); return(0); } } } } } } //----

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

    افتراضي

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

    لنفرض اخواني انني وضعت 4 اوامر باي ستوب فوق السعر الحالي و اول اورد يبعد عن السعر الحالي 10 نقط والفرق بين كل امر و الثاني 10 نقط

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

    عند تفعيل الاوردر الرابع اريد الاكسبيرت ان يقوم بوضع الستوب لوز للامر الثاني و الاول علي نقطة دخول الامر الثاني

    مثال : لو ان السعر الان عند النقطة صفر ثم ارتفع السعر للنقطة 10 ثم للنقطة 20 ثم للنقطة 30 ثم للنقطة 40 في هذه الحالة سوف يقوم الاكسبيرت بفتح الاربع اوامر باي ستوب

    انا اريده عندما يفتح الاوردر الرابع عند نقطة 40 ان يقوم بوضع ستوب الامر الاول المفتوح من نقطة 10 و الاوردر الثاني المفتوح من نقطة 20 علي دخول الاوردر الثاني (( نقطة 20 ))

    فما هو الكود البرمجي لفعل هذا ؟؟؟

    و جزاكم الله خيرا مقدما
    وعليكم السلام ورحمة الله وبركاته
    الفكره بسيطه وإذا فكرت ببساطه سوف تجد الحل
    أولا أنت تريد وضع أربع أوامر معلقه كيف ستجعل الإكسبرت يعرف أن الأوامر المعلقه تفعلت كلها حتى يبدأ في تعديل الهدف ؟
    سوف تقوم بعمل داله للبحث عن عدد الأوامر المعلقه والمفعله المفتوحه
    كود PHP:
     int orderscnt(int type){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol()&&OrderType()==type && OrderMagicNumber()==MagicNumber){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    ثم أول شرط سيكون
    كود PHP:
    if(orderscnt(OP_BUYSTOP)==0&&orderscnt(OP_BUY)>=4
    الآن تريد عمله داله مودفاي للأوامر بحيث يضع ستوب الأمر الأول والثاني عند نقطة الدخول بسيطه
    كود PHP:
     void ModifyOrders(){
     
    int modifiedorders;
       for(
    int i =0;i<OrdersTotal();i++){
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(
    OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber){
           if(
    modifiedorders==2)break;
            if(
    OrderStopLoss()!=OrderOpenPrice()){
             
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0);
           
    modifiedorders++;
            }
         }
       }
      } 
    وبذلك يكون الكود النهائي
    كود PHP:
    if(orderscnt(OP_BUYSTOP)==0&&orderscnt(OP_BUY)>=4)
    {
    ModifyOrders();

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

  8. #8
    الصورة الرمزية zelenko
    zelenko غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2010
    الإقامة
    مصر
    المشاركات
    1,711

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة mb مشاهدة المشاركة
    أفهم من كلامك أنك تعرف كيفية التعامل مع وظائف ستدمجها في الاكسبرت
    إذا
    مكتبة ضمن الاكسبرت لترجمة الأخطاء
    كود:
    #include <stderror.mqh> #include <stdlib.mqh>
    المتغيرات الخارجية ستكون كالتالي
    كود:
    extern string comment="O-O"; extern int slippage=3; //---- extern double Take_Profit=50; extern double Stop_Loss=50; extern double lots = 0.01; extern int ten_pips=10;
    المتغيرات العامة ستكون كالتالي
    كود:
    int tries=100; int DG; double PT,MD;
    الوظيفة init ستكون كالتالي
    كود:
    int init() { DG=Digits; if(DG==3 || DG==5){PT=Point*10;MD=10;} else{PT=Point;MD=1;} return(0); }
    الوظائف المضافة ستكون في start كالتالي
    كود:
    // OP_BUYSTOP OP_BUY int ret_1=buy_stop(1,1); //ret_1 first result, if(ret_1==2){int ret_2=buy_stop(2,2);} //ret_2 second result if(ret_2==3){int ret_3=buy_stop(3,3);} //ret_3 third result if(ret_3==4){int ret_4=buy_stop(4,4);} //ret_4 fourth result //---- if(looking_for_4(4,OP_BUY)>0) { buy_stop_loss(1); //first order magic number = 1 buy_stop_loss(2); //second Order magic number =2 } //---- //---- // OP_SELLSTOP OP_SELL int ret__1=sell_stop(-1,1); //ret__1 first result, if(ret__1==-2){int ret__2=sell_stop(-2,2);} //ret__2 second result if(ret__2==-3){int ret__3=sell_stop(-3,3);} //ret__3 third result if(ret__3==-4){int ret__4=sell_stop(-4,4);} //ret__4 fourth result //---- if(looking_for_4(-4,OP_SELL)>0) { sell_stop_loss(-1); //first order magic number = -1 sell_stop_loss(-2); //second Order magic number = -2 } //----
    الوظائف هي
    buy_stop لتعليق أمر شراء
    sell_stop لتعليق أمر بيع
    looking_for_4 للبحث إذا تفعل الامر المعلق الرابع و صار أمر سوق
    buy_stop_loss وضع حد الخسارة لأوامر الشراء
    sell_stop_loss وضع حد الخسارة لأوامر البيع

    كود:
    int buy_stop(int in,int x)//first variable magic number second variable multiplier of 10 pips { int buystop_ticket=0; int number=0; if(ten_pips<MarketInfo(Symbol(),MODE_STOPLEVEL)){ten_pips=MarketInfo(Symbol(),MODE_STOPLEVEL);} //---- double ask=Ask + (ten_pips*x*PT); //double loss_stop=ask - (Stop_Loss*PT); double profit_take=ask + (Take_Profit*PT); //---- while(buystop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); buystop_ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,ask,slippage*MD,0,profit_take,comment,in,0,Green); if(buystop_ticket<0){Print("Error opening buy stop! ",ErrorDescription(GetLastError())); number++;} } if(buystop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} else if(buystop_ticket>0){return(in+1);} } //---- int sell_stop(int in,int x)//first variable magic number second variable multiplier of 10 pips { int sellstop_ticket=0; int number=0; //---- double bid=Bid - (ten_pips*x*PT); //double loss_stop=bid + (Stop_Loss*PT); double profit_take=bid - (Take_Profit*PT); //--- while(sellstop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); sellstop_ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,bid,slippage*MD,0,profit_take,comment,in,0,Red); if(sellstop_ticket<0){Print("Error opening sell stop! ",ErrorDescription(GetLastError())); number++;} } if(sellstop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} else if(sellstop_ticket>0){return(in-1);} } //---- int looking_for_4(int magic,int type) { RefreshRates(); int cnt=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()==Symbol()) { if(OrderMagicNumber()==magic && OrderType()==type) { cnt++; } } } } return(cnt); } //---- void buy_stop_loss(int magic) { RefreshRates(); for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if(OrderType()==OP_BUY) { if(OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask - (Stop_Loss*PT),OrderTakeProfit(),0,Red); return(0); } } } } } } //---- void sell_stop_loss(int magic) { RefreshRates(); for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if(OrderType()==OP_SELL) { if(OrderStopLoss()==0) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid + (Stop_Loss*PT),OrderTakeProfit(),0,Red); return(0); } } } } } } //----
    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    وعليكم السلام ورحمة الله وبركاته
    الفكره بسيطه وإذا فكرت ببساطه سوف تجد الحل
    أولا أنت تريد وضع أربع أوامر معلقه كيف ستجعل الإكسبرت يعرف أن الأوامر المعلقه تفعلت كلها حتى يبدأ في تعديل الهدف ؟
    سوف تقوم بعمل داله للبحث عن عدد الأوامر المعلقه والمفعله المفتوحه
    كود PHP:
     int orderscnt(int type){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol()&&OrderType()==type && OrderMagicNumber()==MagicNumber){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    ثم أول شرط سيكون
    كود PHP:
    if(orderscnt(OP_BUYSTOP)==0&&orderscnt(OP_BUY)>=4
    الآن تريد عمله داله مودفاي للأوامر بحيث يضع ستوب الأمر الأول والثاني عند نقطة الدخول بسيطه
    كود PHP:
     void ModifyOrders(){
     
    int modifiedorders;
       for(
    int i =0;i<OrdersTotal();i++){
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(
    OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber){
           if(
    modifiedorders==2)break;
            if(
    OrderStopLoss()!=OrderOpenPrice()){
             
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0);
           
    modifiedorders++;
            }
         }
       }
      } 
    وبذلك يكون الكود النهائي
    كود PHP:
    if(orderscnt(OP_BUYSTOP)==0&&orderscnt(OP_BUY)>=4)
    {
    ModifyOrders();

    جزااااااااااااااااااااااااااااكم الله كل خير علي مجهودكم و تعبكم

    اسال الله العظيم رب العرش العظيم ان يجزيكم كل خير


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