عرض مشاركة واحدة
قديم 24-02-2014, 09:02 PM   المشاركة رقم: 311
الكاتب
اسلام العوامى
عضو ذهبى
الصورة الرمزية اسلام العوامى

البيانات
تاريخ التسجيل: Apr 2012
رقم العضوية: 9148
الدولة: alexandria - egypt
المشاركات: 5,888
بمعدل : 1.22 يوميا

الإتصالات
الحالة:
اسلام العوامى غير متواجد حالياً
وسائل الإتصال:

كاتب الموضوع : اسلام العوامى المنتدى : منتدى المؤشرات و الاكسبيرتات
افتراضي رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4

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

عندى شويه استفسارات

دلوقتى لو عايز اصمم الاكسبيرت يدخل صفقه بعد كسر الترند او الدعوم والمقاومات او فيبوناتشى ....معتمد على الرسم اليدوى ومش مؤشرات

و من ناحيه البريك ايفن والرتلينج استوب ..كود ترلينج ستيب بيتكتب بنفس الفكره

وكود البريك ايفن و الترلينج استوب حسب الشرح كل ما اجى اعمل باك تست مع اول صفقه وبتقف والسعر مش بيتحرك تانى مش عارف ايه العيب

وليه كتبنا موفينج ورسى بالطريقه دى واحد ظاهر والتانى مخفى

كود:
   double Buy_1=iMA(Symbol(),0,5,2,MODE_SMA,PRICE_TYPICAL,1);
  // double Sell_1=iMA(Symbol(),0,5,2,MODE_SMA,PRICE_TYPICAL,2);
   
   double Buy_2=iRSI(Symbol(),0,14,PRICE_CLOSE,1);
 //  double Sell_2=iRSI(Symbol(),0,ل14,PRICE_CLOSE,2);
،،،بالنسبة للموفنج و RSI للشمعة رقم 2 قمت بحذفهم لان ليس لهم استحدام،،،
وايه الفرق بين الكودين المكتوبين دولت

كود:
//---
if(Digits==5||Digits==4) 
{ 
pt=0.0001; 
} 
else{ 
pt=0.01; 
}

^
^
ما الفارق بينهما


t=1; if(Digits==5||Digits==3||Digits==2){t=10;}
،،،الفارق بينهما هو ان الكود الثانى اشمل واعم من الاول لان بعض السلع تحتلف عدد الارقام بعد الفاصة العشرية فيعطى هذا الكود مرونه فى التعامل بعكس الكود الاول،،،

كود:
   extern int Breakeven=10;
extern int Trailingstop=30;
extern double Lot1=0.1;
extern bool UseMM = false;
extern int Risk = 1;
extern int MagicNumber=778;

double pt;
int P;
int t;
double i,ii;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
   
   
    if(UseMM==true)Lot1=lots();
      if(Breakeven>0)BreakEven();
     if(Trailingstop>0)TrailingStop();
  }
//+------------------------------------------------------------------+

double lots()
{
 double Lot1=MathCeil(AccountFreeMargin()*Risk/1000)/100;
  if(Lot1<MarketInfo(Symbol(),MODE_MINLOT))
   Lot1 = MarketInfo(Symbol(),MODE_MINLOT);
    if(Lot1>MarketInfo(Symbol(),MODE_MAXLOT))
     Lot1 = MarketInfo(Symbol(),MODE_MAXLOT);
      return(Lot1);
       }
//////////////////

void BreakEven()

{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_BUY)
if(Bid-OrderOpenPrice()>Breakeven*t)
if(OrderOpenPrice()>OrderStopLoss())
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
}
for(int ii=OrdersTotal()-i;ii>=0;ii--)
{
if(OrderSelect(ii,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_SELL)
if(OrderOpenPrice()-Ask>Breakeven*t)
if(OrderOpenPrice()<OrderStopLoss())
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
}
}

//////////////////////
void TrailingStop()
{
for(int i=OrdersTotal()-1;i>=1;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_BUY)
if(Bid-OrderOpenPrice()>Trailingstop*t)
if(OrderStopLoss()<Bid-Trailingstop*t)
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Trailingstop*t),OrderTakeProfit(),0,clrNONE);
}
for(int ii=OrdersTotal()-1;ii>=0;i--)
{
if(OrderSelect(ii,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_SELL)
if(OrderOpenPrice()-Ask>Trailingstop*t)
if(OrderStopLoss()>Ask+Trailingstop*t)
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Trailingstop*t),OrderTakeProfit(),0,clrNONE);
}
}
وفى انتظارك افادتك ان شاء الله
،،،المتغير t يجب ان تقوم بضربة فى Point لتحصل على الرقم الصحيح ، راجع كود الاكسبيرت السابق وخصوصا طريقة استخدام المتغير t ،،،



التوقيع

عرض البوم صور اسلام العوامى  
رد مع اقتباس
  #311  
قديم 24-02-2014, 09:02 PM
اسلام العوامى اسلام العوامى غير متواجد حالياً
عضو ذهبى
افتراضي رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4

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

عندى شويه استفسارات

دلوقتى لو عايز اصمم الاكسبيرت يدخل صفقه بعد كسر الترند او الدعوم والمقاومات او فيبوناتشى ....معتمد على الرسم اليدوى ومش مؤشرات

و من ناحيه البريك ايفن والرتلينج استوب ..كود ترلينج ستيب بيتكتب بنفس الفكره

وكود البريك ايفن و الترلينج استوب حسب الشرح كل ما اجى اعمل باك تست مع اول صفقه وبتقف والسعر مش بيتحرك تانى مش عارف ايه العيب

وليه كتبنا موفينج ورسى بالطريقه دى واحد ظاهر والتانى مخفى

كود:
   double Buy_1=iMA(Symbol(),0,5,2,MODE_SMA,PRICE_TYPICAL,1);
  // double Sell_1=iMA(Symbol(),0,5,2,MODE_SMA,PRICE_TYPICAL,2);
   
   double Buy_2=iRSI(Symbol(),0,14,PRICE_CLOSE,1);
 //  double Sell_2=iRSI(Symbol(),0,ل14,PRICE_CLOSE,2);
،،،بالنسبة للموفنج و RSI للشمعة رقم 2 قمت بحذفهم لان ليس لهم استحدام،،،
وايه الفرق بين الكودين المكتوبين دولت

كود:
//---
if(Digits==5||Digits==4) 
{ 
pt=0.0001; 
} 
else{ 
pt=0.01; 
}

^
^
ما الفارق بينهما


t=1; if(Digits==5||Digits==3||Digits==2){t=10;}
،،،الفارق بينهما هو ان الكود الثانى اشمل واعم من الاول لان بعض السلع تحتلف عدد الارقام بعد الفاصة العشرية فيعطى هذا الكود مرونه فى التعامل بعكس الكود الاول،،،

كود:
   extern int Breakeven=10;
extern int Trailingstop=30;
extern double Lot1=0.1;
extern bool UseMM = false;
extern int Risk = 1;
extern int MagicNumber=778;

double pt;
int P;
int t;
double i,ii;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
   
   
    if(UseMM==true)Lot1=lots();
      if(Breakeven>0)BreakEven();
     if(Trailingstop>0)TrailingStop();
  }
//+------------------------------------------------------------------+

double lots()
{
 double Lot1=MathCeil(AccountFreeMargin()*Risk/1000)/100;
  if(Lot1<MarketInfo(Symbol(),MODE_MINLOT))
   Lot1 = MarketInfo(Symbol(),MODE_MINLOT);
    if(Lot1>MarketInfo(Symbol(),MODE_MAXLOT))
     Lot1 = MarketInfo(Symbol(),MODE_MAXLOT);
      return(Lot1);
       }
//////////////////

void BreakEven()

{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_BUY)
if(Bid-OrderOpenPrice()>Breakeven*t)
if(OrderOpenPrice()>OrderStopLoss())
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
}
for(int ii=OrdersTotal()-i;ii>=0;ii--)
{
if(OrderSelect(ii,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_SELL)
if(OrderOpenPrice()-Ask>Breakeven*t)
if(OrderOpenPrice()<OrderStopLoss())
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
}
}

//////////////////////
void TrailingStop()
{
for(int i=OrdersTotal()-1;i>=1;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_BUY)
if(Bid-OrderOpenPrice()>Trailingstop*t)
if(OrderStopLoss()<Bid-Trailingstop*t)
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Trailingstop*t),OrderTakeProfit(),0,clrNONE);
}
for(int ii=OrdersTotal()-1;ii>=0;i--)
{
if(OrderSelect(ii,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==MagicNumber)
if(OrderType()==OP_SELL)
if(OrderOpenPrice()-Ask>Trailingstop*t)
if(OrderStopLoss()>Ask+Trailingstop*t)
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Trailingstop*t),OrderTakeProfit(),0,clrNONE);
}
}
وفى انتظارك افادتك ان شاء الله
،،،المتغير t يجب ان تقوم بضربة فى Point لتحصل على الرقم الصحيح ، راجع كود الاكسبيرت السابق وخصوصا طريقة استخدام المتغير t ،،،




رد مع اقتباس