صفحة 269 من 689 الأولىالأولى ... 169219259263264265266267268269270271272273274275279319369 ... الأخيرةالأخيرة
النتائج 4,021 إلى 4,035 من 10335
  1. #4021
    الصورة الرمزية توفيق
    توفيق غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2007
    الإقامة
    اجادير جوهرة المغرب
    العمر
    38
    المشاركات
    1,402

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    استاد ماستر دولار لي سؤالين بارك الله فيك
    الاول
    هل الداليتن المرفقتين صحيحتين لتغيير ستوب اخر صفقة مفتوحة
    كود PHP:
    void modifylastopenbuyorder(double stop)
      {
      
    int last=OrdersTotal()-1;
       
    OrderSelect(last,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_BUY)
          {
            
    OrderModify(OrderTicket(),OrderOpenPrice(),stop,OrderTakeProfit(),0,Blue);
          }
        }
      
      }
      
    void modifylastopensellorder(double stop)
      {
      
    int last=OrdersTotal()-1;
       
    OrderSelect(last,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_SELL)
          {
            
    OrderModify(OrderTicket(),OrderOpenPrice(),stop,OrderTakeProfit(),0,Blue);
          }
        }
      
      } 
    الثاني
    هل ادا طبقت الحل الموجود في هده المشاركة
    https://forum.arabictrader.com/t3761...ml#post2664590
    الدي يبحت عن اول تك في شمعة جديدة استطيع ان اتخلى عن شرط
    كود PHP:
    Time0!=Time[0
    الدي نضعه لكي يفنح الاكسبيرت صفقة وحيدة ادا تحققت الشروط
    لان الحل اعلاه سيمكنني من تنفيد الشروط عن اول تك في الشمعة الجديدة فقط
    بارك الله فيك

  2. #4022
    الصورة الرمزية العوامى
    العوامى غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2012
    الإقامة
    مصر
    المشاركات
    78

    افتراضي

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

    كود PHP:
    int init() {
       
    int li_0;
       
    gt_unused_428 Time[0];
       
    gt_unused_432 Time[0];
       
    g_digits_584 Digits;
       if (
    g_digits_584 == || g_digits_584 == 5) {
          
    gd_524 10.0 Point;
          
    gd_532 10;
       } else {
          
    gd_524 Point;
          
    gd_532 1;
       }
       
    int l_ord_total_4 OrdersTotal();
       if (
    li_0 == && l_ord_total_4 0) {
          for (
    int l_pos_8 0l_pos_8 l_ord_total_4l_pos_8++) {
             if (
    OrderSelect(l_pos_8SELECT_BY_POS)) {
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                   
    li_0 NormalizeDouble(OrderLots() / lots, (MarketInfo(Symbol(), MODE_MINLOT) == 0.01) + 1);
                   break;
                }
             }
          }
       }
       
    int l_hist_total_12 OrdersHistoryTotal();
       if (
    li_0 == && l_hist_total_12 0) {
          for (
    l_pos_8 0l_pos_8 l_hist_total_12l_pos_8++) {
             if (
    OrderSelect(l_pos_8SELECT_BY_POSMODE_HISTORY)) {
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                   
    li_0 NormalizeDouble(OrderLots() / lots, (MarketInfo(Symbol(), MODE_MINLOT) == 0.01) + 1);
                   break;
                }
             }
          }
       }
       if (
    li_0 0gd_632 li_0;
       return (
    0);
    }

    int start() {
       
    double ld_8;
       
    double ld_16;
       
    g_ord_total_600 OrdersTotal();
       if (
    breakevengain 0.0) {
          for (
    int l_pos_0 0l_pos_0 g_ord_total_600l_pos_0++) {
             
    OrderSelect(l_pos_0SELECT_BY_POSMODE_TRADES);
             if (
    OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                if (
    OrderType() == OP_BUY) {
                   if (
    NormalizeDouble(Bid OrderOpenPrice(), g_digits_584) < NormalizeDouble(breakevengain gd_524g_digits_584)) continue;
                   if (
    NormalizeDouble(OrderStopLoss() - OrderOpenPrice(), g_digits_584) >= NormalizeDouble(breakeven gd_524g_digits_584)) continue;
                   
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + breakeven gd_524g_digits_584), OrderTakeProfit(), 0Blue);
                   return (
    0);
                }
                if (
    NormalizeDouble(OrderOpenPrice() - Askg_digits_584) >= NormalizeDouble(breakevengain gd_524g_digits_584)) {
                   if (
    NormalizeDouble(OrderOpenPrice() - OrderStopLoss(), g_digits_584) < NormalizeDouble(breakeven gd_524g_digits_584)) {
                      
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - breakeven gd_524g_digits_584), OrderTakeProfit(), 0Red);
                      return (
    0);
                   }
                }
             }
          }
       }
       if (
    trailingstop 0.0 && maxtrades 10) {
          for (
    int l_pos_4 0l_pos_4 g_ord_total_600l_pos_4++) {
             
    OrderSelect(l_pos_4SELECT_BY_POSMODE_TRADES);
             if (
    OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                if (
    OrderType() == OP_BUY) {
                   if (!(
    NormalizeDouble(Askg_digits_584) > NormalizeDouble(OrderOpenPrice() + trailingstart gd_524g_digits_584) && NormalizeDouble(OrderStopLoss(), g_digits_584) < NormalizeDouble(Bid - (trailingstop +
                      
    trailingstep) * gd_524g_digits_584) || OrderStopLoss() == 0.0)) continue;
                   
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid trailingstop gd_524g_digits_584), OrderTakeProfit(), 0Blue);
                   return (
    0);
                }
                if (
    NormalizeDouble(Bidg_digits_584) < NormalizeDouble(OrderOpenPrice() - trailingstart gd_524g_digits_584) && NormalizeDouble(OrderStopLoss(), g_digits_584) > NormalizeDouble(Ask +
                   (
    trailingstop trailingstep) * gd_524g_digits_584) || OrderStopLoss() == 0.0) {
                   
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask trailingstop gd_524g_digits_584), OrderTakeProfit(), 0Red);
                   return (
    0);
                }
             }
          }
       }
       if (
    trailingstop 0.0 && maxtrades == 1) {
          
    g_count_616 0;
          
    g_count_608 0;
          
    g_count_612 0;
          for (
    g_pos_628 0g_pos_628 g_ord_total_600g_pos_628++) {
             
    OrderSelect(g_pos_628SELECT_BY_POSMODE_TRADES);
             if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell && OrderCloseTime() == 0) {
                
    g_count_616++;
                
    g_ord_profit_556 OrderProfit();
                if (
    OrderType() == OP_BUY) {
                   
    g_ticket_500 OrderTicket();
                   
    g_ord_open_price_452 OrderOpenPrice();
                   
    g_datetime_436 OrderOpenTime();
                   
    g_ord_stoploss_468 OrderStopLoss();
                   
    g_ord_takeprofit_484 OrderTakeProfit();
                   
    gi_unused_620 OrderProfit();
                   
    g_count_608++;
                }
                if (
    OrderType() == OP_SELL) {
                   
    g_ticket_504 OrderTicket();
                   
    g_ord_open_price_460 OrderOpenPrice();
                   
    g_datetime_440 OrderOpenTime();
                   
    g_ord_stoploss_476 OrderStopLoss();
                   
    g_ord_takeprofit_492 OrderTakeProfit();
                   
    gi_unused_624 OrderProfit();
                   
    g_count_612++;
                }
             }
          }
          if (
    NormalizeDouble(g_ord_takeprofit_484 Bidg_digits_584) > trailingstart gd_524 && g_count_608 0OrderModify(g_ticket_500g_ord_open_price_452g_ord_stoploss_468NormalizeDouble(g_ord_takeprofit_484 trailingstop gd_524g_digits_584), 0Blue);
          if (
    NormalizeDouble(Bid g_ord_takeprofit_492g_digits_584) > trailingstart gd_524 && g_count_612 0OrderModify(g_ticket_504g_ord_open_price_460g_ord_stoploss_476NormalizeDouble(g_ord_takeprofit_492 trailingstop gd_524g_digits_584), 0Red);
       }
       if (
    basketpercent) {
          
    ld_8 profit * (AccountBalance() / 100.0);
          
    ld_16 loss * (AccountBalance() / 100.0);
          
    gd_444 AccountEquity() - AccountBalance();
          if (
    gd_444 >= ld_8 || gd_444 <= (-1.0 ld_16)) {
             for (
    g_pos_564 g_ord_total_600 1g_pos_564 >= 0g_pos_564--) {
                
    OrderSelect(g_pos_564SELECT_BY_POSMODE_TRADES);
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy && OrderType() == OP_BUYOrderClose(OrderTicket(), OrderLots(), Bidslippage gd_524);
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicsell && OrderType() == OP_SELLOrderClose(OrderTicket(), OrderLots(), Askslippage gd_524);
             }
             return (
    0); 
    للتذكير

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    تمام أستاذي العزيز الاكسبيرت والمؤشر بالمرفقات
    بالنسبة لشرط "ملامسة السعر للخط" هل صحيح ؟
    كود PHP:
    if ((Open[1]<=LineH&&Close[1]>=LineH
    ما هو الشرط الأدق لضمان تحقق ملامسة السعر للخط
    جربت هذا الكود ولم ينجح !*
    كود PHP:
     if (Ask==LineN
    جزاك الله عنا كل خير
    أولا بالنسبه لشرط الملامسه هذا الشرط سيدخل بعد إغلاق الشمعه أعلى أو أسفل الخط وليس الملامسه
    لذلك الشرط الصحيح
    كود PHP:
    if ((Open[0]<=LineH&&Close[0]>=LineH
    وبما أنك تعتمد في الشروط على الملامسه فيجب أن تجعل الإكسبرت يتحقق من السعر مع كل تحرك للسعر وليس مره واحده كل شمعه كما وضعت في شروط الإكسبرت
    كود PHP:
    void OncePerBar()
    {
        
        if (
    BarTime Time[0])
        {
            
    // we have a new bar opened
            
    BarTime Time[0]; // keep the new bar open time

            
    LimitOpenOrders();
        }

    فيجب أن تلغي هذا الشرط
    أخيرا أنت تريد وضع الشروط بحيث يضع الأمر المعلق عند الخط الذي يلامسه لكنك وضعت الداله
    كود PHP:
    void BuyOrderH()
    {   
        for( 
    int i=1;i<=20;i++)
        {
        
    double LineH=ObjectGet("Hi"+i,OBJPROP_PRICE1);   
        
    double price = (NormalizeDouble(LineHNDigits) + (SellStep*PipValue*Point)); 
        
    double SL price Stoploss*PipValue*Point;
        if (
    Stoploss == 0SL 0;
        
    double TP price Takeprofit*PipValue*Point;
        if (
    Takeprofit == 0TP 0;
        
    int Tries
        
    int ticket = -1;    
        if (
    ECNBroker)
        { 
        
    ticket OrderSend(Symbol(), OP_BUYSTOPLotspriceSlippage00"Kira-h"MagicNo0Blue); 
        if(
    ticket>-&& Tries<10)
          { 
           
    OrderSelect(ticketSELECT_BY_TICKET); 
           
    OrderModify(ticketOrderOpenPrice(), SLTP0Blue); 
           
    Tries++;Sleep(1000);  
          } 
        } 
        else 
        
    ticket OrderSend(Symbol(), OP_BUYSTOPLotspriceSlippageSLTP"Kira-h"MagicNo0Blue);
        }     

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

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

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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

    كود PHP:
    int init() {
       
    int li_0;
       
    gt_unused_428 Time[0];
       
    gt_unused_432 Time[0];
       
    g_digits_584 Digits;
       if (
    g_digits_584 == || g_digits_584 == 5) {
          
    gd_524 10.0 Point;
          
    gd_532 10;
       } else {
          
    gd_524 Point;
          
    gd_532 1;
       }
       
    int l_ord_total_4 OrdersTotal();
       if (
    li_0 == && l_ord_total_4 0) {
          for (
    int l_pos_8 0l_pos_8 l_ord_total_4l_pos_8++) {
             if (
    OrderSelect(l_pos_8SELECT_BY_POS)) {
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                   
    li_0 NormalizeDouble(OrderLots() / lots, (MarketInfo(Symbol(), MODE_MINLOT) == 0.01) + 1);
                   break;
                }
             }
          }
       }
       
    int l_hist_total_12 OrdersHistoryTotal();
       if (
    li_0 == && l_hist_total_12 0) {
          for (
    l_pos_8 0l_pos_8 l_hist_total_12l_pos_8++) {
             if (
    OrderSelect(l_pos_8SELECT_BY_POSMODE_HISTORY)) {
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                   
    li_0 NormalizeDouble(OrderLots() / lots, (MarketInfo(Symbol(), MODE_MINLOT) == 0.01) + 1);
                   break;
                }
             }
          }
       }
       if (
    li_0 0gd_632 li_0;
       return (
    0);
    }

    int start() {
       
    double ld_8;
       
    double ld_16;
       
    g_ord_total_600 OrdersTotal();
       if (
    breakevengain 0.0) {
          for (
    int l_pos_0 0l_pos_0 g_ord_total_600l_pos_0++) {
             
    OrderSelect(l_pos_0SELECT_BY_POSMODE_TRADES);
             if (
    OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                if (
    OrderType() == OP_BUY) {
                   if (
    NormalizeDouble(Bid OrderOpenPrice(), g_digits_584) < NormalizeDouble(breakevengain gd_524g_digits_584)) continue;
                   if (
    NormalizeDouble(OrderStopLoss() - OrderOpenPrice(), g_digits_584) >= NormalizeDouble(breakeven gd_524g_digits_584)) continue;
                   
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + breakeven gd_524g_digits_584), OrderTakeProfit(), 0Blue);
                   return (
    0);
                }
                if (
    NormalizeDouble(OrderOpenPrice() - Askg_digits_584) >= NormalizeDouble(breakevengain gd_524g_digits_584)) {
                   if (
    NormalizeDouble(OrderOpenPrice() - OrderStopLoss(), g_digits_584) < NormalizeDouble(breakeven gd_524g_digits_584)) {
                      
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - breakeven gd_524g_digits_584), OrderTakeProfit(), 0Red);
                      return (
    0);
                   }
                }
             }
          }
       }
       if (
    trailingstop 0.0 && maxtrades 10) {
          for (
    int l_pos_4 0l_pos_4 g_ord_total_600l_pos_4++) {
             
    OrderSelect(l_pos_4SELECT_BY_POSMODE_TRADES);
             if (
    OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) {
                if (
    OrderType() == OP_BUY) {
                   if (!(
    NormalizeDouble(Askg_digits_584) > NormalizeDouble(OrderOpenPrice() + trailingstart gd_524g_digits_584) && NormalizeDouble(OrderStopLoss(), g_digits_584) < NormalizeDouble(Bid - (trailingstop +
                      
    trailingstep) * gd_524g_digits_584) || OrderStopLoss() == 0.0)) continue;
                   
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid trailingstop gd_524g_digits_584), OrderTakeProfit(), 0Blue);
                   return (
    0);
                }
                if (
    NormalizeDouble(Bidg_digits_584) < NormalizeDouble(OrderOpenPrice() - trailingstart gd_524g_digits_584) && NormalizeDouble(OrderStopLoss(), g_digits_584) > NormalizeDouble(Ask +
                   (
    trailingstop trailingstep) * gd_524g_digits_584) || OrderStopLoss() == 0.0) {
                   
    OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask trailingstop gd_524g_digits_584), OrderTakeProfit(), 0Red);
                   return (
    0);
                }
             }
          }
       }
       if (
    trailingstop 0.0 && maxtrades == 1) {
          
    g_count_616 0;
          
    g_count_608 0;
          
    g_count_612 0;
          for (
    g_pos_628 0g_pos_628 g_ord_total_600g_pos_628++) {
             
    OrderSelect(g_pos_628SELECT_BY_POSMODE_TRADES);
             if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell && OrderCloseTime() == 0) {
                
    g_count_616++;
                
    g_ord_profit_556 OrderProfit();
                if (
    OrderType() == OP_BUY) {
                   
    g_ticket_500 OrderTicket();
                   
    g_ord_open_price_452 OrderOpenPrice();
                   
    g_datetime_436 OrderOpenTime();
                   
    g_ord_stoploss_468 OrderStopLoss();
                   
    g_ord_takeprofit_484 OrderTakeProfit();
                   
    gi_unused_620 OrderProfit();
                   
    g_count_608++;
                }
                if (
    OrderType() == OP_SELL) {
                   
    g_ticket_504 OrderTicket();
                   
    g_ord_open_price_460 OrderOpenPrice();
                   
    g_datetime_440 OrderOpenTime();
                   
    g_ord_stoploss_476 OrderStopLoss();
                   
    g_ord_takeprofit_492 OrderTakeProfit();
                   
    gi_unused_624 OrderProfit();
                   
    g_count_612++;
                }
             }
          }
          if (
    NormalizeDouble(g_ord_takeprofit_484 Bidg_digits_584) > trailingstart gd_524 && g_count_608 0OrderModify(g_ticket_500g_ord_open_price_452g_ord_stoploss_468NormalizeDouble(g_ord_takeprofit_484 trailingstop gd_524g_digits_584), 0Blue);
          if (
    NormalizeDouble(Bid g_ord_takeprofit_492g_digits_584) > trailingstart gd_524 && g_count_612 0OrderModify(g_ticket_504g_ord_open_price_460g_ord_stoploss_476NormalizeDouble(g_ord_takeprofit_492 trailingstop gd_524g_digits_584), 0Red);
       }
       if (
    basketpercent) {
          
    ld_8 profit * (AccountBalance() / 100.0);
          
    ld_16 loss * (AccountBalance() / 100.0);
          
    gd_444 AccountEquity() - AccountBalance();
          if (
    gd_444 >= ld_8 || gd_444 <= (-1.0 ld_16)) {
             for (
    g_pos_564 g_ord_total_600 1g_pos_564 >= 0g_pos_564--) {
                
    OrderSelect(g_pos_564SELECT_BY_POSMODE_TRADES);
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicbuy && OrderType() == OP_BUYOrderClose(OrderTicket(), OrderLots(), Bidslippage gd_524);
                if (
    OrderSymbol() == Symbol() && OrderMagicNumber() == magicsell && OrderType() == OP_SELLOrderClose(OrderTicket(), OrderLots(), Askslippage gd_524);
             }
             return (
    0); 
    لا يوجد مع العلم هذا الكود لا يفتح صفقات أساسا فالكود عبارة عن تريلينج ستوب للصفقات و إغلاق على نسبة مئويه للصفقات المفتوحه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة توفيق مشاهدة المشاركة
    استاد ماستر دولار لي سؤالين بارك الله فيك
    الاول
    هل الداليتن المرفقتين صحيحتين لتغيير ستوب اخر صفقة مفتوحة
    كود PHP:
    void modifylastopenbuyorder(double stop)
      {
      
    int last=OrdersTotal()-1;
       
    OrderSelect(last,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_BUY)
          {
            
    OrderModify(OrderTicket(),OrderOpenPrice(),stop,OrderTakeProfit(),0,Blue);
          }
        }
      
      }
      
    void modifylastopensellorder(double stop)
      {
      
    int last=OrdersTotal()-1;
       
    OrderSelect(last,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_SELL)
          {
            
    OrderModify(OrderTicket(),OrderOpenPrice(),stop,OrderTakeProfit(),0,Blue);
          }
        }
      
      } 
    الثاني
    هل ادا طبقت الحل الموجود في هده المشاركة
    https://forum.arabictrader.com/t3761...ml#post2664590
    الدي يبحت عن اول تك في شمعة جديدة استطيع ان اتخلى عن شرط
    كود PHP:
    Time0!=Time[0
    الدي نضعه لكي يفنح الاكسبيرت صفقة وحيدة ادا تحققت الشروط
    لان الحل اعلاه سيمكنني من تنفيد الشروط عن اول تك في الشمعة الجديدة فقط
    بارك الله فيك
    نعم الداله ستقوم بتغيير آخر صفقة مفتوحه لكن إذا كنت تستخدم أكثر من إكسبرت مثلا أو تفتح صفقات يدويا فقد تكون آخر صفقة مفتوحه ليست من صفقات الإكسبرت بالتالي لن يتحقق الشرط ولن تتغير الصفقه
    لذلك إذا كنت تقصد تغيير ستوب آخر صفقة فتحها الإكسبرت فيجب أن تستخدم الحلقه للبحث عن آخر صفقة مفتوحه وتغييرها
    وأيضا إستخدم شرط المقارنه أن الأستوب الجديد الذي تريد وضعه لا يساوي الأستوب القديم حتى لا يحدث خطأ في حال قمت بتغييره وهو نفسه
    مثال
    كود PHP:
    void modifylastopenbuyorder(double stop)
      {
      for(
    int last=OrdersTotal()-1;last>=0;last--)
      {
       
    OrderSelect(last,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_BUY&&stop!=OrderStopLoss())
          {
            
    OrderModify(OrderTicket(),OrderOpenPrice(),stop,OrderTakeProfit(),0,Blue);
            break;
          }
        }
       }
      } 
    بالنسبه للجزء الثاني نعم يمكنك إستخدامه سيكون بديل
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  6. #4026
    الصورة الرمزية ecash
    ecash غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    1,062

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    السلام عليكم ورحمه الله
    تحية طيبة للجميع
    استاذي العزيز اسامة

    اريد عمل اكسبيرت مضاعفات جمعي في البيع والشراء 543212345 اي يضاعف في الاتجاهين يضاعف عند الانعكاس ويضاعف في اتجاة الربح واريد ان اجعل خيار لايقاف المضاعفة في اتجاة الربح سوى في البيع او الشراء
    كيف اكتب الكود
    وجزاك الله كل خير

    مع تمنياتي للجميع بالتوفيق
    لاتنساني من دعائك

  7. #4027
    الصورة الرمزية wadi2012
    wadi2012 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2012
    الإقامة
    جرين لاند
    المشاركات
    1,089

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة ecash مشاهدة المشاركة
    السلام عليكم ورحمه الله
    تحية طيبة للجميع
    استاذي العزيز اسامة

    اريد عمل اكسبيرت مضاعفات جمعي في البيع والشراء 543212345 اي يضاعف في الاتجاهين يضاعف عند الانعكاس ويضاعف في اتجاة الربح واريد ان اجعل خيار لايقاف المضاعفة في اتجاة الربح سوى في البيع او الشراء
    كيف اكتب الكود
    وجزاك الله كل خير

    مع تمنياتي للجميع بالتوفيق
    لاتنساني من دعائك
    تحتاج الى شرط تفعيل المضاعفات في حالة الربح
    يعني كمثال فقط
    if(win=true)
    {
    lot=2*mul
    }
    else
    {
    lot=1
    }
    كمثال يعني في حالة الربح وهو رمز win تغير من حالته
    وفي دالة شرط اخرى حددها عندما يصل الربح الى القيمة المناسبة يرجع ليلاحظ هل win=true ام لا ومن هنا يتم التحكم في اللوت
    يعني دوال شرطية تعتمد عليها
    انا بصدد اعطيك فكرة فقط لا اكواد جاهزة حتى تتخيل الفكرة البرمجية

  8. #4028
    الصورة الرمزية ecash
    ecash غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Dec 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    1,062

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة wadi2012 مشاهدة المشاركة
    تحتاج الى شرط تفعيل المضاعفات في حالة الربح
    يعني كمثال فقط
    if(win=true)
    {
    lot=2*mul
    }
    else
    {
    lot=1
    }
    كمثال يعني في حالة الربح وهو رمز win تغير من حالته
    وفي دالة شرط اخرى حددها عندما يصل الربح الى القيمة المناسبة يرجع ليلاحظ هل win=true ام لا ومن هنا يتم التحكم في اللوت
    يعني دوال شرطية تعتمد عليها
    انا بصدد اعطيك فكرة فقط لا اكواد جاهزة حتى تتخيل الفكرة البرمجية
    السلام عليكم ورحمه الله
    تحية طيبة للجميع
    شكرا لك اخي لاكني اريد الكود حتى اتعلم منه لان هذا النوع قليل ان تجد اكسبيرت يعمل بنفس الطريقة بعدها افكر كيف اتحكم فية ليكون اكسبيرت ناجح لان مايميز الاكسبيرت هو الارباح الكبيرة والغير موجودة في اي اكسبيرت تم برمجتة
    وفي انتظار الاستاذ اسامة
    احاول تعلم البرمجه لاكن احتاج الى وقت لان تركيزي كان في الموشرات

    مع تمنياتي للجميع بالتوفيق
    لاتنساني من دعائك

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    أولا بالنسبه لشرط الملامسه هذا الشرط سيدخل بعد إغلاق الشمعه أعلى أو أسفل الخط وليس الملامسه
    لذلك الشرط الصحيح
    كود PHP:
    if ((Open[0]<=LineH&&Close[0]>=LineH
    وبما أنك تعتمد في الشروط على الملامسه فيجب أن تجعل الإكسبرت يتحقق من السعر مع كل تحرك للسعر وليس مره واحده كل شمعه كما وضعت في شروط الإكسبرت
    كود PHP:
    void OncePerBar()
    {
        
        if (
    BarTime Time[0])
        {
            
    // we have a new bar opened
            
    BarTime Time[0]; // keep the new bar open time

            
    LimitOpenOrders();
        }

    فيجب أن تلغي هذا الشرط
    أخيرا أنت تريد وضع الشروط بحيث يضع الأمر المعلق عند الخط الذي يلامسه لكنك وضعت الداله
    كود PHP:
    void BuyOrderH()
    {   
        for( 
    int i=1;i<=20;i++)
        {
        
    double LineH=ObjectGet("Hi"+i,OBJPROP_PRICE1);   
        
    double price = (NormalizeDouble(LineHNDigits) + (SellStep*PipValue*Point)); 
        
    double SL price Stoploss*PipValue*Point;
        if (
    Stoploss == 0SL 0;
        
    double TP price Takeprofit*PipValue*Point;
        if (
    Takeprofit == 0TP 0;
        
    int Tries
        
    int ticket = -1;    
        if (
    ECNBroker)
        { 
        
    ticket OrderSend(Symbol(), OP_BUYSTOPLotspriceSlippage00"Kira-h"MagicNo0Blue); 
        if(
    ticket>-&& Tries<10)
          { 
           
    OrderSelect(ticketSELECT_BY_TICKET); 
           
    OrderModify(ticketOrderOpenPrice(), SLTP0Blue); 
           
    Tries++;Sleep(1000);  
          } 
        } 
        else 
        
    ticket OrderSend(Symbol(), OP_BUYSTOPLotspriceSlippageSLTP"Kira-h"MagicNo0Blue);
        }     

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

    إذا عدت هذه الشروط فلن تجد أخطاء أخرى بإذن الله
    جزاك الله خيرا أستاذي الكريم
    عملت المطلوب ولازالت نفس المشكلة بالباكتيست
    على العموم يبدو ان المشكلة من المؤشر نفسه! لذلك سأكتفي بالطريقة العادية ولو انها متعبة (لكل خط له شرط خاص به...) والحمد لله كل شيء تمام
    بارك الله فيك أستاذي وشكرا جزيلا
    توقيع العضو
    متداول فوركس، ومبرمج mql

  10. #4030
    الصورة الرمزية zzeyani
    zzeyani غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2012
    الإقامة
    المغرب
    المشاركات
    67

    افتراضي

    أنا لم أفهم الفكرة .هل من الممكن أن تشرحها لي أكتر .من فضلك
    جزاك الله ألف خير.

  11. #4031
    الصورة الرمزية zzeyani
    zzeyani غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2012
    الإقامة
    المغرب
    المشاركات
    67

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    قم بتقسيم حجم اللوت على أكثر من صفقه
    مثال
    كود PHP:
    while(LOT>0)
    {
     if(
    LOT>MarketInfo(Symbol(),MODE_MAXLOT))
      
    newLot=MarketInfo(Symbol(),MODE_MAXLOT);
     else 
    newLot=LOT
     
    OrderSend(Symbol(),OP_BUY,newLot,Ask,3,SL,TP,"EA",MagicNumber,0,Blue);
     
    LOT-=MarketInfo(Symbol(),MODE_MAXLOT);

    المتغير LOT هو حجم لوت الصفقه
    أنا لم أفهم الفكرة .هل من الممكن أن تشرحها لي أكتر .من فضلك
    جزاك الله ألف خير.

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

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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


    السلام عليكم ورحمه الله
    تحية طيبة للجميع
    شكرا لك اخي لاكني اريد الكود حتى اتعلم منه لان هذا النوع قليل ان تجد اكسبيرت يعمل بنفس الطريقة بعدها افكر كيف اتحكم فية ليكون اكسبيرت ناجح لان مايميز الاكسبيرت هو الارباح الكبيرة والغير موجودة في اي اكسبيرت تم برمجتة
    وفي انتظار الاستاذ اسامة
    احاول تعلم البرمجه لاكن احتاج الى وقت لان تركيزي كان في الموشرات

    مع تمنياتي للجميع بالتوفيق
    لاتنساني من دعائك
    وعليكم السلام ورحمة الله وبركاته
    سوف تقوم بعمل دالة لمعرفة سعر فتح آخر صفقة ونوع الصفقه
    مثال
    كود PHP:
    double LastOrderType()
    {
     for(
    int i=OrdersTotal()-1;i>=0;i--)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      
    int type=OrderType();
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()==type)
      {
       return(
    type);
      }
     }

    كود PHP:
    double LastOpenPrice()
    {
     for(
    int i=OrdersTotal()-1;i>=0;i--)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()==type)
      {
       return(
    OrderOpenPrice());
      }
     }

    وطبعا دالة لمعرفة حجم آخر لوت للصفقه
    كود PHP:
    double LastLot()
    {
     for(
    int i=OrdersTotal()-1;i>=0;i--)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      
    double L=OrderLots();
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()==type)
      {
       return(
    L);
      }
     }

    ثم ستضع الشرط وهنا سيكون شرطين بدلا من شرط المضاعفات العادي بحيث ستضع شرط المضاعفه عند الربح وعند الخساره
    مثال
    كود PHP:
    if(LastOrderType()==OP_BUY&&(LastOpenPrice()-Bid>=Step*Point)||(Bid-LastOpenPrice()>=Step*Point&&OpenWinMultiplier))
    {
      
    double newLot=LastLot()*2;
      
    OrderSend(Symbol(),OP_BUY,newLot,NormalizeDouble(Ask,Digits),3,0,0,"EA",MagicNumber,0,Blue);
                
    }
    if(
    LastOrderType()==OP_SELL&&(Ask-LastOpenPrice()>=Step*Point)||(LastOpenPrice()-Ask>=Step*Point&&OpenWinMultiplier))
    {
      
    newLot=LastLot()*2;
      
    OrderSend(Symbol(),OP_SELL,newLot,NormalizeDouble(Bid,Digits),3,0,0,"EA",MagicNumber,0,Blue);
                

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

  13. #4033
    الصورة الرمزية Walid_ELShereef
    Walid_ELShereef متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2012
    الإقامة
    الكويت
    العمر
    44
    المشاركات
    373

    افتراضي

    السلام عليكم استاذ أسامة
    لدي استراتيجية بحاول اعمل لها اكسبرت ومش ظابط معايا
    بكل بساطة هي عباره عن ثلاثة موفنج افرج باعدادات مختلفة اسمائهم 1 2 3 على التوالي وكذلك مؤشر الماكد بالاعدادات الافتراضية :
    شروط الدخول:
    1- الشراء: عندما يقطع الموفينج رقم 1 الموفينجين 2 و 3 من الأسفل للأعلى ويتأكد ذلك من مؤشر الماكد بأن يصبح فوق الصفر

    2- البيع:عندما يقطع الموفينج رقم 1 الموفنجين 2 و 3 من الأعلى للأسفل ويتأكد ذلك من مؤشر الماكد بأن يصبح تحت الصفر

    يا ريت استاذ أسامة تقلي كمان اكتب ازاي المتغيرات الخاصة بالموفنجات علشان محتار في ارقام الشموع سواء 0 او 1 او 2 وكمان مؤشر الماكد أختار الـ ماين ولا سجنال يكون تحت الصفر او فوق الصفر
    جزاك الله خير
    آخر تعديل بواسطة waleedgadelmola ، 16-06-2013 الساعة 06:02 AM

  14. #4034
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,609

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة waleedgadelmola مشاهدة المشاركة
    السلام عليكم استاذ أسامة
    لدي استراتيجية بحاول اعمل لها اكسبرت ومش ظابط معايا
    بكل بساطة هي عباره عن ثلاثة موفنج افرج باعدادات مختلفة اسمائهم 1 2 3 على التوالي وكذلك مؤشر الماكد بالاعدادات الافتراضية :
    شروط الدخول:
    1- الشراء: عندما يقطع الموفينج رقم 1 الموفينجين 2 و 3 من الأسفل للأعلى ويتأكد ذلك من مؤشر الماكد بأن يصبح فوق الصفر

    2- البيع:عندما يقطع الموفينج رقم 1 الموفنجين 2 و 3 من الأعلى للأسفل ويتأكد ذلك من مؤشر الماكد بأن يصبح تحت الصفر

    يا ريت استاذ أسامة تقلي كمان اكتب ازاي المتغيرات الخاصة بالموفنجات علشان محتار في ارقام الشموع سواء 0 او 1 او 2 وكمان مؤشر الماكد أختار الـ ماين ولا سجنال يكون تحت الصفر او فوق الصفر
    جزاك الله خير
    وعليكم السلام ورحمة الله
    بعد أذن الأستاذ أسامة ، بالنسبة للموفنجات الثلاثة حتحتاج تضيف في المتغيرات هذا الكود حتى يستطيع المستخدم التغيير
    كود PHP:
    extern int moving1=7;  extern int moving1_mode=1;
    extern int moving2=21extern int moving2_mode=1;
    extern int moving3=55extern int moving3_mode=1
    بعدها برضه في المتغيرات حتخزن القيم التالية
    كود PHP:
    double ma1,ma2,ma3
    بعدها في دالة ستارت حتربط القيم بالموفنجات
    كود PHP:
    ma1=iMA(NULL,0,moving1,0,moving1_mode,PRICE_CLOSE,1);
    ma2=iMA(NULL,0,moving2,0,moving2_mode,PRICE_CLOSE,1);
    ma3=iMA(NULL,0,moving3,0,moving3_mode,PRICE_CLOSE,1); 

    بعدها في دالة ستارت تضيف شرط البيع وشرط الشراء
    كود PHP:
    if(ma1>ma2&&ma1>ma3&&ma2>ma3){/// Buy } 
    if(ma1<ma2&&ma1<ma3&&ma2<ma3){/// Sell } 
    بالنسبة للماكد انت تختار السيجنال او المين او كما تريد وتفضل الكود

    البداية بالمتغيرات
    كود PHP:
    extern int fast_ema_period=12;
    extern int slow_ema_period=26;
    extern int signal_period=9;
    extern int applied_price=0;
    extern int mode=0
    بعدها نرجع لتخزين القيم مثل ماعملنا مع الموفنجات
    كود PHP:
    double amacd,bmacd
    ثم نربط القيم مع الماكد
    كود PHP:
     amacd=iMACD(NULLNULL,fast_ema_period,slow_ema_period,signal_period,applied_price,mode,1);
     
    bmacd=iMACD(NULLNULL,fast_ema_period,slow_ema_period,signal_period,applied_price,mode,2); 
    ثم شرط البيع او الشراء
    كود PHP:
      if (amacd && bmacd 
    وعكسه للبيع

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

  15. #4035
    الصورة الرمزية Learn4X
    Learn4X غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2007
    الإقامة
    فلسطين
    المشاركات
    332

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    كود PHP:
    double LastOpenPrice()
    {
     for(
    int i=OrdersTotal()-1;i>=0;i--)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()==type)
      {
       return(
    OrderOpenPrice());
      }
     }


    بالنسبة للدالة for
    وتحديدا
    كود PHP:
    i=OrdersTotal()-
    ماذا لو كان هكذا
    كود PHP:
    i=OrdersTotal() 
    هل سيعطي قيمة مختلفة او اي خطأ ؟
    لاني لم الحظ ذلك
    وشكرا
    توقيع العضو
    المتداول العربي

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

  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