النتائج 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
أخي الكريم حسب معطيات الإكسبيرت فإنه لا يفتح غير أوامر معلقة BUYLIMIT && SELLLIMITالف شكر اخي مستر لكن هذا ليس كماطلبت اوان هناك اخطاء حيث انه يقوم بالشراء مباشره
حيث وانا اريد اوامر معلقه
فبالتالي لا يفتح صفقات ماركت برايس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
أخي العزيز أعتبر نفسك تكلم الإكسبيرت , حسب المعطيات إنت بتقول للإكسبيرت أفتح عملية شراء معلق و بيع معلق بدون شروط .... فحيفضل يحطلك أوامر كتيرة دون توقف ...... فما عليك غير إنك تحطله شرط أو تقوله إزا كان عدد صفقات الشراء المعلقة أقل من 0 أفتح عملية شراء معلقة ... فيفتح لك عملية شراء معلقة و الآن أصبح عدد الصفقات المعلقة أكثر 0 فلا يفتح عملية أخرى حسب الشرط اللي حطيته إنت ......... و لكن عندما تتفعل الصفقة المعلقة يصبح عدد الصفقات المعلقة بعد التفعيل 0 و هنا سوف يضع الإكسبيرت عملية شراء معلقة مرة أخرى و أكيد إنت عارف السبب و أبغاك إنت تشوف الشرط المناسب لحجم الإكسبيرت من وضع صفقة معلقة أخرى بعد التفعيليمكن تعديلي هذا الاكسبيرت وتعطيني الخطاء حيث اريده ان يقوم فقط بفتح صفقتين فقط 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
اريد غير هذا الكود
وكمان الكود المسؤل عن فتح صفقات معلقه سواء limit او stop بنفس الوقت ولكن تكون بفارق نقاط مختلفهكود 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 بنفس الوقت ولكن تكون بفارق نقاط مختلفهما عليك سوى إنك تغير OP_BUYSTOP أو OP_BUYLIMIT أو OP_BUYكود PHP:OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
بس ما تنسى تحطله شروط لفتح الصفقات
زي ماقلت للإكسبيرت قبل كده إزا كان اليوم ==5 و الساععة == 22 و ... و ..... أغلق الصفقات
و دحين قله إزا ..... إزا ....... أفتح صفقات
بالتوفيق يا رب
- 11-05-2011, 05:58 PM #10
الف شكر اخي
لكن هناك بعض المشاكل هو انه رغم تحقق الشروط الاانه احيانا يضع اوامر معلقه واحيانا لايضع اعتقد ان المشكله من السريفر لكني استخدمت طريقة إجبار السيرفر على فتح الصفقة لكن
دون فائدههل يمكن ان اجعل الاكسبيرت يفتح مع افتتاح السوق وليس عند الساعه 0 لانه احيانا يفتح متاخرا مثلا عند 1:20 فلا يستطيع الاكسبيرت ان يعمل اوامر معلقه لانه مبرمج فقط عندالساعه 0كود 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);
}
الشي الاخر عملت تنزيل بيانات العمله السابقه لشارت الدقيقه لكني اجد بعض الشموع غير موجوده رغم اني مسحت الهيستوري السابقه ونزلتها من جديد لكن دون فائده
اين اجد هذه البيانات كامله؟
الأكثر زيارة
رد مع اقتباس