النتائج 1 إلى 10 من 10
الموضوع: طلب مساعده ممن يستطيع
- 07-05-2011, 11:21 PM #1
طلب مساعده ممن يستطيع
اريد اعمل اكسبيرت وهو
فتح اما buy limit او sell limit على بعد مثلا 10 نقاط من افتتاح اليوم
او
فتح اما buy stop او sell stop على بعد مثلا 20 نقاط من افتتاح اليوم
بهدف مثلا 50 نقطه والستوب لوز 80
وجزاكم الله الجنه
- 08-05-2011, 09:13 PM #2
- 09-05-2011, 10:09 AM #3
الف شكر اخي مستر لكن هذا ليس كماطلبت اوان هناك اخطاء حيث انه يقوم بالشراء مباشره
حيث وانا اريد اوامر معلقه
يمكن تعديلي هذا الاكسبيرت وتعطيني الخطاء حيث اريده ان يقوم فقط بفتح صفقتين buy limit و sell limit على بعد 10 نقاط من افتتاح الاسبوع بهدف 50 ووقف 100 وان تغلق الصفقات مع نهايه الاسبوع
//+------------------------------------------------------------------+
//| alnaser.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int Step=10;
extern int Takeprofit=50;
extern int Stoploss=100;
extern double Lots=1;
int Magicnumber=234561;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(Hour()==0 && Minute()<5 && MyOrdersTotal(Magicnumber)>0)
{
DeletePendingOrders(Magicnumber);
CloseOrders(Magicnumber);
}
if(Hour()==0 && Minute()>5 && MyOrdersTotal(Magicnumber)==0)
{
double DayOfWeek=iOpen(Symbol(),PERIOD_W1,1);
double BuyPrice=DayOfWeek-Step*Point;
double BuyTP=BuyPrice+Takeprofit*Point;
double BuySL=BuyPrice-Stoploss*Point;
double SellPrice=DayOfWeek+Step*Point;
double SellTP=SellPrice-Takeprofit*Point;
double SellSL=SellPrice+Stoploss*Point;
OrderSend(Symbol(),OP_BUYLIMIT,Lots,BuyPrice,3,Buy SL,BuyTP,"",Magicnumber,0,Green);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,SellPrice,3,S ellSL,SellTP,"",Magicnumber,0,Red);
}
return(0);
}
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
int DeletePendingOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt >= 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
int CloseOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt >= 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
//+------------------------------------------------------------------+آخر تعديل بواسطة al_naser ، 09-05-2011 الساعة 10:26 AM
- 09-05-2011, 11:59 PM #4الف شكر اخي مستر لكن هذا ليس كماطلبت اوان هناك اخطاء حيث انه يقوم بالشراء مباشره
حيث وانا اريد اوامر معلقه
OrderSend(Symbol(),OP_BUYLIMIT,Lots,BuyPrice,3,Buy SL,BuyTP,"",Magicnumber,0,Green);
OrderSend(Symbol(),OP_SELLLIMIT,Lots,SellPrice,3,S ellSL,SellTP,"",Magicnumber,0,Red);
أتوقع أن سيبرد الزوج اللي بتستخدمه عالي شوي ( 10 نقاط أوأكثر ) أو سريع الحركة ...... فيتم فتح صفقة معلقة و سرعان ما يتم تفعيل الصفقة ........ حاول تغير عدد النقاط أو أستخدم زوج قليل السيبرد ...... عل و عسى
extern int Step=10;آخر تعديل بواسطة alshakatan ، 10-05-2011 الساعة 12:13 AM
- 10-05-2011, 12:03 AM #5
يمكن تعديلي هذا الاكسبيرت وتعطيني الخطاء حيث اريده ان يقوم فقط بفتح صفقتين فقط
كود PHP://+------------------------------------------------------------------+
//| alnaser.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int Step=20;
extern int Takeprofit=50;
extern int Stoploss=50;
extern double Lots=1;
int Magicnumber=234561;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(DayOfWeek()==Monday && Hour()==0 && Minute()<5 && MyOrdersTotal(Magicnumber)>0)
{
DeletePendingOrders(Magicnumber);
CloseOrders(Magicnumber);
}
if(DayOfWeek()==Monday && Hour()==0 && Minute()>5 && MyOrdersTotal(Magicnumber)==0)
{
double WeekOpen=iOpen(Symbol(),PERIOD_W1,0);
double BuyPrice=WeekOpen+Step*Point;
double BuyTP=BuyPrice+Takeprofit*Point;
double BuySL=BuyPrice-Stoploss*Point;
double SellPrice=WeekOpen-Step*Point;
double SellTP=SellPrice-Takeprofit*Point;
double SellSL=SellPrice+Stoploss*Point;
OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,3,SellSL,SellTP,"",Magicnumber,0,Red);
}
return(0);
}
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
int DeletePendingOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt >= 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
int CloseOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt >= 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
//+------------------------------------------------------------------+
آخر تعديل بواسطة al_naser ، 10-05-2011 الساعة 12:27 AM
- 10-05-2011, 12:18 AM #6
- 10-05-2011, 12:44 AM #7يمكن تعديلي هذا الاكسبيرت وتعطيني الخطاء حيث اريده ان يقوم فقط بفتح صفقتين فقط buy stop و sell stop على بعد 20 نقاط من افتتاح الاسبوع بهدف 50 ووقف 50 وان تغلق الصفقتين مع نهايه الاسبوع ان لم تتجقق
و ما تنسى تعرف عدد الصفقات المعلقة بنفس طريقة تعريف عدد الصفقات ( المعلقة و المفعلة )
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
تحيتيآخر تعديل بواسطة alshakatan ، 10-05-2011 الساعة 12:46 AM
- 10-05-2011, 09:05 PM #8
ماقصرت اخي مشكور
هل تعرف ماهو الكود لغلق جميع الصفقات المعلقه والمفتوحه مع اغلاق سعر الجمعه وليس عند وقت محدد من الجمعه لانه احيانا يغلق السوق قبل الساعه 22
اريد غير هذا الكود
كود PHP:if(DayOfWeek()==5 && Hour()==22 && Minute()==45 && MyOrdersTotal(Magicnumber)>0)
{
DeletePendingOrders(Magicnumber);
CloseOrders(Magicnumber);
}
آخر تعديل بواسطة al_naser ، 10-05-2011 الساعة 09:07 PM
- 11-05-2011, 02:46 AM #9هل تعرف ماهو الكود لغلق جميع الصفقات المعلقه والمفتوحه مع اغلاق سعر الجمعه وليس عند وقت محدد من الجمعه لانه احيانا يغلق السوق قبل الساعه 22
وكمان الكود المسؤل عن فتح صفقات معلقه سواء limit او stop بنفس الوقت ولكن تكون بفارق نقاط مختلفهكود PHP:OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
بس ما تنسى تحطله شروط لفتح الصفقات
زي ماقلت للإكسبيرت قبل كده إزا كان اليوم ==5 و الساععة == 22 و ... و ..... أغلق الصفقات
و دحين قله إزا ..... إزا ....... أفتح صفقات
بالتوفيق يا رب
- 11-05-2011, 05:58 PM #10
الف شكر اخي
لكن هناك بعض المشاكل هو انه رغم تحقق الشروط الاانه احيانا يضع اوامر معلقه واحيانا لايضع اعتقد ان المشكله من السريفر لكني استخدمت طريقة إجبار السيرفر على فتح الصفقة لكن
دون فائدهكود PHP:gT=0;
while(gT<=0)
{
Sleep(1000);
gT=OrderSend(Symbol(),OP_SELLSTOP,Lots,sl,3,sl+StopLoss*Point,sl-TakeProfit * Point ,"" , Magic , 0 , Green);
Sleep(1000);
}
الشي الاخر عملت تنزيل بيانات العمله السابقه لشارت الدقيقه لكني اجد بعض الشموع غير موجوده رغم اني مسحت الهيستوري السابقه ونزلتها من جديد لكن دون فائده
اين اجد هذه البيانات كامله؟