النتائج 1 إلى 3 من 3
الموضوع: ادارة الصفقات عن طريق مؤشر MACD
- 22-10-2011, 01:09 AM #1
ادارة الصفقات عن طريق مؤشر MACD
السلام عليكم ورحمة الله
الي اخي مستر دولار والي كافت الاخواة والاصدقاء الي ممكن يساعدوني
تتمثل طرقاتي في المداولة في فتح صفقات يدويا اعتمادا علي التحليل بي موجات اليوت و الهرمونيك في نفس الوقت
والاغلاق باعتماد مؤشر الماكد المرفق مع Metarader
المشكل: هدي الطريقة جيدة لاكن تحتاج ان اكون طول الوقت امام الجهاز وهدا ما لا استطيعه نضرا لي طبيعة عملي وارتبطاتي
الحل واتمني ان تساعدوني فيه : ان اقم بي عمل اكسبيرت ادارة صفقات يقوف فقط باغلاق الصفقات حسب نوعها بيع او شراء اعتمادا علي تقطع MACD بي بضعة شروط ساشرحها بالتفصيل :
شروط اغلاق صفقة الشراء :
شروط اغلاق صفقة البيع :
ملاحضة :shift يكون بعد التقاطع بي شمعة واحدة مثلا
الكود الي وصلت له
كود PHP://+------------------------------------------------------------------+
//| m-e-c biz Close_Buy_Orders_or_Sell_Orders_V1.mq4 |
//| Copyright © 2009 m-e-c.biz |
//| http://m-e-c.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009 m-e-c.biz"
#property link "http://m-e-c.biz"
extern int slippage=3;
extern bool Close_Buy_or_Sell=true;// true -> Close Buy Orders , false -> Close Sell Orders
int t1,t2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if (Close_Buy_or_Sell)
{
while(MyBuyRealOrdersTotal(0)>0) CloseBuyOrders();
}
else
{
while(MySellRealOrdersTotal(0)>0) CloseSellOrders();
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
// وظيفة لحساب عدد صفقات الشراء الحالية
int MyBuyRealOrdersTotal(int Count)
{
int c=0;
int total = OrdersTotal();
t1=-1;
t2=-1;
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol() && (OrderType()==OP_BUY))
{
if (t1==-1)
{
t1=OrderTicket();
}
else
{
if (t2==-1)
{
t2=OrderTicket();
}
}
c++;
}
}
return(c);
}
// وظيفة لحساب عدد صفقات البيع الحالية
int MySellRealOrdersTotal(int Count)
{
int c=0;
int total = OrdersTotal();
t1=-1;
t2=-1;
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol() && (OrderType()==OP_SELL))
{
if (t1==-1)
{
t1=OrderTicket();
}
else
{
if (t2==-1)
{
t2=OrderTicket();
}
}
c++;
}
}
return(c);
}
// وظيفة لاغلاق جميع صفقات الشراء المفتوحة
//+------------------------------------------------------------------+
int CloseBuyOrders()
{
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),Bid,3)==false)
{
RefreshRates();
}
else
{
cnt=0;
total=OrdersTotal();
}
}
}
}
return(0);
}
// وظيفة لاغلاق جميع صفقات البيع المفتوحة
//+------------------------------------------------------------------+
int CloseSellOrders()
{
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol())
{
if (OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),Ask,3)==false)
{
RefreshRates();
}
else
{
cnt=0;
total=OrdersTotal();
}
}
}
}
return(0);
}
الرجاء مساعدتي لي اكمال ادخال شروط غلق الصفقات في الاكسبيرت...والله لا يضيع اجر المحسنين
وان شاء الله يستفيد غيري منه
- 22-10-2011, 07:47 PM #2
بداية أنت أضفت شروط الخروج من الصفقه بداخل الداله init
وهذا غير صحيح لأن عمل الإكسبرت كله يكون بداخل الداله start أما init فعملها يكون مره واحده فقط عند بداية تفعيل الإكسبرت
الآن سوف تحتاج أولا لإستدعاء مؤشر الماكد في الإكسبرت
كود PHP:double macd=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
double macds=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
double macd2=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_MAIN,2);
double macds2=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2);
1_ إذا كان البار أكبر من الصفر وكان البار أكبر من خط الماكد ثم أصبح البار أصغر من خط الماكد يتم الخروج من الصفقه
مع إضافة شرط المتغير الخارجي بإغلاق البيع أو الشراء Close_Buy_or_Sell
بالتالي ترجمتها ستصبح كالآتي
كود PHP:if (macd2>0&&macd2>macds2&&macd<macds&&Close_Buy_or_Sell)
{
while(MyBuyRealOrdersTotal(0)>0) CloseBuyOrders();
}
كود PHP:if(macd2<0&&macd2<macds2&&macd>macds&&Close_Buy_or_Sell)
{
while(MySellRealOrdersTotal(0)>0) CloseSellOrders();
}
- 22-10-2011, 10:29 PM #3
مشكووورررر اخي MR.DOLLAR
والله اعجز عن وصف فرحتي ...ربينا يعطيك الخير ان شاء الله ويجازيك علي مساعدتك الاخرين