النتائج 4,381 إلى 4,395 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 30-09-2013, 11:51 PM #4381
السلام عليكم
بارك الله فيك اخى مستر دولار
لقد وجدت الدالة في الاكسبير الذي قدمته لى
لكن للاسف لم اعرف كيفية نسخه و مكان وضعه
مع العلم ان الصفقات التى اريد تحريك الستوب الى مكان الدخول
يتم الدخول اليها يدويا
فلا اعرف ان كان هذا ياثر في صياغة الدالة ام لا
- 01-10-2013, 12:53 PM #4382
- 01-10-2013, 03:13 PM #4383
يعطيك ألف عافية حبيبنا ،،، بالنسبة للمشكلة الثانية تم حلها بنجاح
بالنسبة للمشكلة الأولى نحن أخذنا وقت آخر صفقة تم اغلاقها .. وهذا المقياس ليس دقيق ..
فمثلاً قد تكون آخر صفقة تم فتحها لم تغلق بعد ( والتي اغلقت ربما تكون صفقة قبل ساعات وساعات ) .. وكذلك هناك حالة ( يمكن أن يكون هناك صفقة بيع وصفقة شراء تدخلان للسوق في نفس الوقت مثلاً عند الساعة 1 ظهراً بالتمام 1.00 قد يكون هناك صفقة بيع وشراء وبالتالي منع أي صفقة مباشرة يعني أن صفقة واحدة فقط هي التي سوف تدخل السوق ) .
فما هو الحل برأيك عزيزي ؟
- 01-10-2013, 04:45 PM #4384
رد:موضوع مخصص للأسئلة البرمجية
الأخ العزيز الاستاذ أسامة بعد التحية
صممت اكسبرت يقوم بفتح صفقتي buy limit و صفقة sell limit في وقت واحد طبقا لشروط معينة ولكني اسأل حضرتك عن كيفية كتابة الاكواد الخاصة عند تفعل أحد هذه الاوامر يقوم بالغاء الامر الآخر بمعنى عندي تفعل buy يقوم بحذف الامر المعلق الاخر sell limit وفي حالة تحقيق الاهدف الانتظار مره اخرى للدخول اما في حالة ضرب الاستوب لوز يقوم من نفس نقطة ضرب الاستوب لوز فتح صفقة معاكسة بضعف اللوت السابق بمعني يا استاذ أسامة في حالتنا هذه تفعلت صفقة buy وضربت استوب يقوم الاكسبرت بفتح صفقة sell من نفس نقطة الاستوب لوز للصفقة السابقة بلوت مضاعف وفي حالة الحصول منها على الهدف الامر انتهى اما في حالة ضرب الاستوب لوز مره اخرى يقوم الاكسبرت من نفس نقطة ضرب الاستوب لوز بفتح امر معاكس buy من نفس نقطة ضرب الاستوب لوز للصفقة السابقة وهكذا لحين اللوصول للهدف وعندئذ العودة من جديد عند انتظباق الشروط يفتح buy limit و sell limit وهكذا معلش تعبت حضرتك معي وفي انتظار الدوال البرمجية وجزاك لله كل خير
- 01-10-2013, 07:13 PM #4385
السلام عليكم
شكرا اخى الكريم Jmeel
لم اعرف صياغة دالة تحريك السعر + اضافتها الى اختيارات الاكسبير
لو ممكن الدالة
- 02-10-2013, 06:14 AM #4386
رد:موضوع مخصص للأسئلة البرمجية
تفضل هذه هي الدالة
كود PHP:void MoveTrailingStop()
{
int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
كود PHP:if(TrailingStop>0)MoveTrailingStop();
كود PHP:extern int TrailingStop=0;
extern int TrailingStep=0;
- 02-10-2013, 09:26 AM #4387
- 02-10-2013, 05:38 PM #4388
أستاذ محمد الأستاذ اسامه اعطاك دالة تعود بتوقيت فتح آخر صفقة اغلقت ، اعمل نسخه منها ثم غير بدل History الى MODE_TRADE و ORDERSTRADE فتستعود لك بتوقيت افتتاح آخر صفقة ولازالت شغاله ، سيكون لدينا دالتين في هذه الحالة ، ثم ستعدل الشرط الى مقارنة مع الدالتين في التوقيت بدلا من الدالة الواحدة ، هذه الطريقة الأسهل .
- 02-10-2013, 08:40 PM #4389
- 02-10-2013, 10:16 PM #4390
رد:موضوع مخصص للأسئلة البرمجية
=======
في الأول حتحتاج دالة بسيطة لحذف المعلق بعد تفعيل احدهم
كود PHP:int TotalOrderByType(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNo&&OrderType()==type){
cnt++;
}
}
}
return(cnt);
}
كود PHP:If(TotalOrderByType(OP_BUY)>0 && TotalOrderByType(OP_SELLSTOP)>0) // Delete SellStop
هذه الدالة
كود PHP:double LastOrderProf(int type){
for(int i= OrdersHistoryTotal ()-1; i>=0; i--){
OrderSelect(i,SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderType()==type){
return(OrderProfit());
}
}
return(0);
}
كود PHP:If(LastOrderProf(OP_BUY)<0) // OPSELL
واهلا بك .
- 02-10-2013, 11:07 PM #4391
أخي الكريم الاستاذ جميل أولا بشكرك لتعبك معي بس صراحة الامر غير واضح معي سوف أقوم بالتوضيح أكثر
اولا عند تحقق الشروط في عمل الاكسبرت يقوم بتعليق التالي :
Sell Limit
Buy Limit
وهذه الاوامر كل افتتاح شمعه جديده فاذا انتهت الشمعه ولم يتم تفعيل أحد هذه الاوامر يتم حذفها وتعليق أوامر جديدة عن اسعار جديدة
في حالة تفعل هذه الاوامر وليكن Buy Limit وأصبح امر Buy
هنا لابد من الاتي
حذف الامر المعلق السابق Sell Limit ووضع أمر معلق جديد عند سعر الاستوب لوز للامر Buy ولكن هذه المرة تعليق Sell Stop بضعف اللوت للصفقة المفتوحة الحالية Buy
هنا احتمالين
الاحتمال الاول تحقيق الامر المفتوح الحالي وهو Buy لهدفة وهنا يتم حذف الامر المعلق Sell Stop وانتهى الأمر
الاحتمال الثاني عدم تحقيق الأمر المفتوح الحالي وهو Buy لهدفة وتم ضرب الاستوب لوز هنا سوف يتم تفعل الامر المعلق Sell Stop بضعف اللوت لكي يصبح لدينا أمر Sell وهنا لابد فورا من تعليق أمر معلق Buy Stop عند نقطة الاستوب لوز للامر المفتوح الحالي Sell بضعف اللوت للأمر المفتوح وهكذا أخي الكريم
بمعني
عند افتتاح كل شمعة يتم تعليق أمرين
Sell Limit و Buy Limit والانتظار لحين تفعل احدهم فان لم يتم تفعيل احدهم يتم الالغاء وتعليق أوامر جديدة عند افتتاح الشمعة الجديدة
اما اذا تم تفعيل احدهم يتم وضع أمر معلق بضعف اللوت للامر المفتوح وعند سعر الاستوب لوز للامر المفتوح ولكن هذه المرة هو عكس الامر المفتوح Stop بمعنى إن تم تفعيل الامر Sell يتم وضع امر معلق Buy Stop عند سعر الاستوب لوز للصفقة المفتوحة الحالية Sell وهكذا أخي الكريم لحين الوصول للهدف ان شاء الله
أرجو التكرم بوضع الدالات المناسبة بالكامل وجزاك الله خيرا
- 03-10-2013, 05:31 AM #4392
رد:موضوع مخصص للأسئلة البرمجية
يمكنك أن تقوم بتعريف متغير لحفظ الشمعه التي تم فتح صفقه فيها
كود PHP:static datetime Time0;
كود PHP:if(Time0!=Time[0])
كود PHP:Time0=Time[0];
- 03-10-2013, 06:35 AM #4393
رد:موضوع مخصص للأسئلة البرمجية
أنت شرحت الشروط بكل تفصيل باقي فقط أن تحويل هذه الأوامر إلى كود بنفس الطريقه التي شرحتها
قم بعمل دالة لمعرفة عدد الأوامر المعلقة حسب نوعها
كود PHP:int orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()&&OrderType()==type && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
}
return(cnt);
}
ستحتاج أولا عمل دالة لمعرفة قيمة ستوب الأمر المفتوح وحجم اللوت له
كود PHP:double StopLossOrder(int type)
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
{
return(OrderStopLoss());
}
}
return(0);
}
double LotsOrder(int type)
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
{
return(OrderLots());
}
}
}
كود PHP:void DeletePendingOrder(int type)
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
{
OrderDelete(OrderTicket());
}
}
}
كود PHP:if(orderscnt(OP_BUY)>0&&orderscnt(OP_SELLSTOP)==0)
{
DeletePendingOrder(OP_SELLLIMIT);
OrderSend(Symbol(),OP_SELLSTOP,LotsOrder(OP_BUY)*2,StopLossOrder(OP_BUY),0,"EA",MagicNumber,0,Red);
}
if(orderscnt(OP_SELL)>0&&orderscnt(OP_BUYSTOP)==0)
{
DeletePendingOrder(OP_BUYLIMIT);
OrderSend(Symbol(),OP_BUYSTOP,LotsOrder(OP_SELL)*2,StopLossOrder(OP_SELL),0,"EA",MagicNumber,0,Blue);
}
كود PHP:if(orderscnt(OP_BUY)+orderscnt(OP_SELL)==0)
{
DeletePendingOrder(OP_BUYSTOP);
DeletePendingOrder(OP_SELLSTOP);
}
- 03-10-2013, 02:49 PM #4394
- 03-10-2013, 03:01 PM #4395
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM