النتائج 1 إلى 9 من 9
الموضوع: اكسبيرت Waddah Attar Wajdy
- 25-01-2008, 06:21 AM #1
اكسبيرت Waddah Attar Wajdy
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
هذا الاكسبيرت سينطلق اعتمادا على الاقتراح الذي تقدم به الأخ وجدي بشأن طريقة مضاعفات جديدة .
بحيث يكون الهدف ثلاثة أضعاف الوقف مع زيادة في عدد اللوتات بدلا من مضاعفتها .
أعرف أن المضاعفات التي اقترحها ليست متسلسلة عدديا ولكننا سنبدأ كمتسلسلة عددية ثم نعدل في الاكسبيرت شيئا فشيئا .
سننطلق من كود اكسبيرت سوبابلكس نفسه .
لدينا الحالة الأولى وهي جعل الهدف أكبر من الوقف بثلاثة أضعاف مثلا مع بقاء اللوت ثابتا دائما .
هذه الحالة نستطيع عملها بالكسبيرت الحالي مباشرة بتغيير الإعدادات فقط .
سنجعل الهدف 120 والوقف 40 . وقيمة المضاعفة تساوي الواحد بدل الاثنين .
والنتائج ستكون كما يلي على الباوند :
120 - 40 سيئة جدا .
150 - 50 تعادل تقريبا بلا ربح أو خسارة .
210 - 70 خسارة أيضا .
من الكلام السابق نستنتج أن الهدف ثلاثة أضعاف الوقف لن تعطينا ربحا أبدا .
الآن سنعدل الكود حتى تصبح المضاعفة متسلسلة عدديا أي أن اللوت الأولي سيكون 0.1 ثم 0.2 ثم 0.3 وهكذا .
مع إبقاء الهدف ثلاثة أضعاف الوقف .
ليصبح الكود كما يلي :
كود PHP:#property copyright "Idea by Supaplex Programing by waddah attar"
#property link "[email protected]"
//خصائص الاكسبيرت
extern int TakeProfit=80;
extern int StopLoss=80;
extern double FirstLots=0.1;
extern bool OpenBuy=true;
extern int LotsDouble=2;
extern int MagicNumber = 2008;
int Ticket1,Ticket2;
int t1,t2,gT1,gT2;
int handle;
int init()
{
Comment("Waddah Attar Supaplex");
return(0);
}
int deinit()
{
Comment("");
return(0);
}
int start()
{
Procces_1();
return(0);
}
//****************************************************************************************************************
// الوظيفة الخاصة بفتح عقد الشراء مع مضاعفة إن اقتضى الأمر
void OpenBUYOrder(double Lots,int Magic)
{
double sl,tp;
sl=Ask-StopLoss*Point;
tp=Ask+TakeProfit*Point;
if (Lots==FirstLots)
{
Ticket1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,sl,tp,"",Magic,0,Green);
if(Ticket1>0)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots,sl,3,sl+StopLoss*Point,sl-TakeProfit*Point,"",Magic,0,Green);
Sleep(5000);
}
gT2=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_SELLSTOP,Lots,sl,3,sl+StopLoss*Point,sl-(TakeProfit*Point),"",Magic,0,Green);
Sleep(5000);
}
}
else
{
Alert("خطأ شراء "," Err = ",GetLastError()," Price = ",Ask," Lots = ",Lots);
}
}
}
// الوظيفة الخاصة بفتح عقد البيع مع مضاعفة إن اقتضى الأمر
void OpenSELLOrder(double Lots,int Magic)
{
double sl,tp;
sl=Bid+StopLoss*Point;
tp=Bid-TakeProfit*Point;
if (Lots==FirstLots)
{
Ticket1=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl,tp,"",Magic,0,Red);
if(Ticket1>0)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots,sl,3,sl-StopLoss*Point,sl+TakeProfit*Point,"",Magic,0,Green);
Sleep(5000);
}
gT1=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_BUYSTOP,Lots,sl,3,sl-StopLoss*Point,sl+(TakeProfit*Point),"",Magic,0,Green);
Sleep(5000);
}
}
else
{
Alert("خطأ بيع "," Err = ",GetLastError()," Price = ",Bid," Lots = ",Lots);
}
}
}
// الوظيفة الرئيسية
int Procces_1()
{
double slot,ssl,stp,bw;
// في حال لا يوجد صفقات حالية وكان هناك صفقات معلقة فاحذفها لأنه لا داعي لها
if (MyRealOrdersTotal(MagicNumber)==0 && MyPendingOrdersTotal(MagicNumber)==2)
{
DeletePendingOrders(MagicNumber);
return(0);
}
// في حال لا يوجد صفقات حالية أو صفقات معلقة فقم بفتح صفقة بيع أو صفقة شراء حسب رغبة المستخدم
if (MyRealOrdersTotal(MagicNumber)==0 && MyPendingOrdersTotal(MagicNumber)==0)
{
if (OpenBuy)
{
OpenBUYOrder(FirstLots,MagicNumber);
}
else
{
OpenSELLOrder(FirstLots,MagicNumber);
}
return(0);
}
// في حال تم فتح صفقة بيع أو شراء يجب وضع صفقات معلقة معاكسة لها نوعا واتجاها
if (MyRealOrdersTotal(MagicNumber)==2 && MyPendingOrdersTotal(MagicNumber)==0)
{
OrderSelect(t1,SELECT_BY_TICKET,MODE_TRADES);
//slot=OrderLots()*LotsDouble;
slot=OrderLots()+FirstLots;
ssl=OrderStopLoss();
stp=OrderTakeProfit();
if (OrderType()==OP_BUY)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_SELLSTOP,slot,ssl,3,ssl+StopLoss*Point,ssl-TakeProfit*Point,"",MagicNumber,0,Green);
Sleep(5000);
}
gT2=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_SELLSTOP,slot,ssl,3,ssl+StopLoss*Point,ssl-(TakeProfit*Point),"",MagicNumber,0,Green);
Sleep(5000);
}
}
if (OrderType()==OP_SELL)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_BUYSTOP,slot,ssl,3,ssl-StopLoss*Point,ssl+TakeProfit*Point,"",MagicNumber,0,Green);
Sleep(5000);
}
gT2=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_BUYSTOP,slot,ssl,3,ssl-StopLoss*Point,ssl+(TakeProfit*Point),"",MagicNumber,0,Green);
Sleep(5000);
}
}
}
return(0);
}
// وظيفة لحساب عدد الصفقات الحالية
int MyRealOrdersTotal(int Magic)
{
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 (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
{
if (t1==-1)
{
t1=OrderTicket();
}
else
{
if (t2==-1)
{
t2=OrderTicket();
}
}
c++;
}
}
return(c);
}
// وظيفة لحساب عدد الصفقات المعلقة فقط
int MyPendingOrdersTotal(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() && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP))
{
c++;
}
}
return(c);
}
// وظيفة لحذف الصفقات المعلقة
int DeletePendingOrders(int Magic)
{
int total = OrdersTotal();
for (int cnt = total - 1; cnt >= 0; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
150 - 50
النتيجة جيدة نوعا ما تستحق المتابعة لأنها أرباح دون مخاطرة شديدة .
الآن اعتماد الطريقة التي اقترحها الأخ وجدي تماما سنعمل عليها معا
يمكنكم إجراء الاختبارات بأنفسكم وإبداء أية ملاحظات أو مقترحات .
تابعونا ...
- 25-01-2008, 10:47 AM #2
رد: اكسبيرت Waddah Attar Wajdy
جزاك الله كل خير
ان شاء الله اجرب الاكسبيرت وابلغك بأي مقترحات
وان شاء الله نتوصل لآفضل الاهداف بأقل المخاطر
وأعتقد بعد ذلك انه سيكون ممتاز جداً ان يكون هذا الاكسبيرت مساند لاكسبيرت waddah attar win
لآن احدهما يربح في حالة الترند والآخر يربح في الارتداد والتذبذب
وبذلك نقول للخسائر (وداعاً)
بإذن الله طبعاًآخر تعديل بواسطة wajdyss ، 25-01-2008 الساعة 10:54 AM
- 25-01-2008, 11:13 AM #3
رد: اكسبيرت Waddah Attar Wajdy
اخي وضاح
يبدو ان الزيادة بطريقة المتسلسلة العددية غير مجدية (كما هي حالياً)
لذلك عندي اقتراحين:
الاول) جعل الزيادة متوفرة حسب ما نراه مناسباً (20 متغير خارجي مثلاً) ونضع اللوت كما نريد 1 ثم 1 ثم 2 ثم 3مثلاً (حتى التوصل لآفضل نتيجة) أو نضعها في مصفوفة بداخل الكود.
الثاني) جعل الاستوب متغير خارجي كما هو الآن ، ولكن نغير في الهدف بحيث لا نجعله بالنقاط بل بالزيادة على رأس المال (1 أو 2 %) لكل صفقة ، ثم نبدأ من جديد (كما هو الحال في اكسبيرت waddah attar win)
مارأيك؟آخر تعديل بواسطة wajdyss ، 25-01-2008 الساعة 11:20 AM
- 25-01-2008, 11:52 AM #4
رد: اكسبيرت Waddah Attar Wajdy
الاقتراح الأول ممكن ولكن الصعوبة تكمن في معرفة الاكسبيرت أين هو الآن ولأي مضاعفة سوف ينتقل .
على العموم لا سيء صعب برمجيا إن شاء الله .
الاقتراح الثاني غير ممكن منطقيا .
لأنه عندما يكون الوقف بالنقاط والهدف بالدولار فهنا ينشيء عدم توازن وخصوصا في المضاعفات الكبيرة .
لذلك إما أن يكون الاثنين بالنقاط أو بالدولار .
ما رأيك
- 25-01-2008, 02:15 PM #5
رد: اكسبيرت Waddah Attar Wajdy
اخي وضاح
وجدت الحل
فالحل هو متسلسلة هندسية اساسها (1.26) ولكن يلزمنا متغيرين اثنين الاول double لتخزين القيمة الاصلية والثاني int لتخزين القيمة الصحيحة للوت (ثم يمكنك ان تقسم النتيجة الاخيرة على عشرة وتضعها في متغير اللوت lots لكي تبدأ بـ 0,1 اذا اردت)
مثال
وهكذا حتى 18 أو 20 مضاعفة (متغير خارجي)
(يجب ان ننتبه لحجم الحساب)
وهناك شيء آخر : لكي تنجح هذه المضاعفات (كما هي عندي في ملف الاكسل) يجب ان يكون الهدف 100 نقطة والاستوب 20
وان شاء الله تكون الارباح حليفنا
ما رأيك؟آخر تعديل بواسطة wajdyss ، 25-01-2008 الساعة 02:34 PM
- 26-01-2008, 04:20 PM #6
رد: اكسبيرت Waddah Attar Wajdy
أخي العزيز
يجب عليك أن تحدد الشروط التي تريدها بدقة وأن تكون متناسبة مع حركة أحد الأزواج .
فمثلا هدف 100 نقطة وستوب 20 لو أردنا اسقاطه على أحد الأزواج لوجدنا أن ذلك صعب .
فمثلا المجنون مستحيل لأن الوقف 20 نقطة يعتبر مجزرة للحساب .
أما اليورو مثلا فممكن بصعوبة وخصوصا أن الهدف 100 نقطة كبير نوعا ما أيضا .
يجب أن يكون تفكيرك منطلق من الحركة الصحيحة للأزواج وليس فقط شيء حسابي نقوم به على جدول اكسيل .
أيضا هناك شيء هام جدا .
أي طريقة نريد استخدامها يجب دراسة العامل الزمني فيها .
فليس من المعقول مثلا أن أنتظر 10 أيام وأنا أضاعف وأجد رصيدي قد أصبح 60 % مثلا لأربح في الأخير 70 نقطة فقط .
أرجو منك أن تعيد النظر في الطريقة التي تدرسها مع الأخذ بعين الاعتبار هذه الأمور .
- 26-01-2008, 09:56 PM #7
رد: اكسبيرت Waddah Attar Wajdy
اخي الكريم
هذا الجدول ممتاز لليورو ين ، حيث يتحرك يومياً بمعدل 130 نقطة (بمعنى سيعوض جميع الصفقات الخاسرة يومياً او في اليوم الذي يليه بإذن الله)
وكذلك جيد للباوند دولار
ثم هناك شيء آخر: وهو اننا نستطيع تعديله حسب كل عملة بما نراه مناسباً .
لو سمحت ارفق الاكسبيرت (مفتوح المصدر) حسب التعديل وسنجربه ونبلغك بالنتائج والاقتراحات
بالانتظار
وشكراً مقدماً
- 12-12-2008, 07:34 AM #8
رد: اكسبيرت Waddah Attar Wajdy
ما هى أفضل اعدادات لذلك الاكسبيرت ؟
- 12-12-2008, 07:50 PM #9
رد: اكسبيرت Waddah Attar Wajdy
بارك الله فيك
المواضيع المتشابهه
-
اكسبيرت Waddah Attar Supaplex منقح وخالي من الأخطاء
By وضاح عطار in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 126آخر مشاركة: 24-01-2017, 04:27 PM -
اكسبيرت المسابقة Waddah Attar Win 2008
By وضاح عطار in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 145آخر مشاركة: 15-09-2013, 09:12 PM -
Waddah Attar win
By currencies in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 0آخر مشاركة: 13-11-2009, 11:44 AM -
خاص بالسيد وضاح عطار بخصوص اكسبيرت waddah attar win
By mostafafawzyzaki in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 0آخر مشاركة: 23-10-2008, 11:25 PM -
اكسبيرت Waddah Attar Strong بعد التطويرات الهامة
By وضاح عطار in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 89آخر مشاركة: 20-05-2008, 02:22 AM