النتائج 3,916 إلى 3,930 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 27-05-2013, 11:03 PM #3916
رد:موضوع مخصص للأسئلة البرمجية
قم بتقسيم حجم اللوت على أكثر من صفقه
مثال
كود PHP:while(LOT>0)
{
if(LOT>MarketInfo(Symbol(),MODE_MAXLOT))
newLot=MarketInfo(Symbol(),MODE_MAXLOT);
else newLot=LOT;
OrderSend(Symbol(),OP_BUY,newLot,Ask,3,SL,TP,"EA",MagicNumber,0,Blue);
LOT-=MarketInfo(Symbol(),MODE_MAXLOT);
}
- 28-05-2013, 05:10 PM #3917
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم أستاذ اسامه
ما الخطأ في هذه الأكواد لأني أريد أن يتم إغلاق صفقات البيع و الشراء عند ملامسة السعر لخط منتصف الفبولنجر
عرفت منتصف البولنجر
كود:// double bm= iBands(NULL, 0, 20, 2, 0, PRICE_CLOSE, MODE_MAIN,0); double bm= iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0) ;
كود:if (orderstotal(OP_BUY)==1 && Close[0]==bm) { CloseBuyOrders() ; } if (orderstotal(OP_SELL)==1 && Close[0]==bm) { CloseSellOrders() ; }
كود:void CloseBuyOrders() { for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol()) { if (OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,digits),3*Q); } } } } void CloseSellOrders() { for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol()) { if (OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,digits),3*Q); } } } }
كود:int orderstotal(int type){ int cnt=0; for(int i =0;i<OrdersTotal();i++){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&& type== OrderType()){ cnt++; } } return(cnt); }
جزاك الله كل خير
- 28-05-2013, 05:55 PM #3918
رد:موضوع مخصص للأسئلة البرمجية
- 29-05-2013, 12:56 AM #3919
- 29-05-2013, 02:10 PM #3920
السلام عليكم ورحمه الله وبركاته
اريد اعرف كيف سيكون اكسبيرت فكرتي هذه؟
الفكره بسيطه جدا ولكن تحتاج شويه تركيز وزادكم الله تركيز فوق تركيزكم!
مع الافتتاح لشمعه اليوم اقوم بوضع ثلاثه اوامر معلقه فوق الافتتاح اليومي من نوع باي ستوب ولكن يكون الاول على بعد 20 نقطه
والثاني على بعد 40 نقطه والثالث على بعد 60 نقطه
وهكذا ان اردت اضافه المزيد من الاوامر المعلقه وتكون الخساره لكل منهم 20 نقطه فقط والربح لكل منهم 40 نقطه.
اهم شي عندي هو في حاله ان احد هذه الاوامر المعلقه تفعل و ضرب الربح اوالخساره ان يقوم الاكسبيرت بوضع امر معلق من جديد
بنفس موضع اومكان الذي تفعل او بمعنى اصح هو اعادة الامر الذي اغلق سواء على ربح اوخساره اعادته من جديد.
مثال للتوضيح مثلا تفعل الامر الذي على بعد 40 نقطه ثم ضرب الخساره يعني اغلق على خساره في هذه الحاله يقوم الاكسبيرت
بوضع امر معلق اخر من نوع سل ليميت بنفس مكان الامر
الاول وهو 40 نقطه من افتتاح شمعة اليوم ولكن اذا افترضنا انه اغلق الامر على ربح فسوف يقوم الاكبسيرت بفتح امر معلق من نوع باي
ليميت بنفس مكان الامر المعلق الاول.
ونفس الفكره تماما في حاله وضع اوامر معلقه من نوع سل ستوب تحت الافتتاح اليومي اي على بعد 20 و40و 60 نقطه وهكذا.
ان شاء الله وضحت الفكرهآخر تعديل بواسطة daod ، 29-05-2013 الساعة 02:29 PM
- 29-05-2013, 02:18 PM #3921
دالة
ordercloseby()
حسب ما فهمت من الوظيفة فهي تغلقة صفقة عن طريقة صفقة معاكسة لها من نفس الزوج ولكن الفراق يكون على الصفقة التي تغلق يعني
فتحت عقد 1 لوت على زوج يورو دولار شراء وعندي 1 لوت على نفس الزوج ولكن بيع
اذا اغلقت الصفقتين يدويا وكان مجموع الاغلاق يساوي -20 ولكن عند الاغلاق بالدالة السابقة يقل مجموع المحصلة فيكون 10- وسؤالي هو اذا كانت هذه الطريقة توفر نسبة خسارة فما هو العائد على البروكير او كيف يسمح البروكير بتنفيذ هذا الامر ؟؟؟
ام هي تنفع مع بروكير ecn ؟
- 29-05-2013, 05:53 PM #3922
رد:موضوع مخصص للأسئلة البرمجية
الأخ العزيز الاستاذ الفاضل أسامة ( مستر دولار ) بعد أطيب التحية لشخصكم الكريم ،،،
أرجو التكرم بحل مشكلتي التالية :
عندي اكسبرت تقوم فكرته على المضاعفات والعمل على زوج عملة واحده فقط ولكني لا أستطيع التعديل عليه لأنه مغلق الكود ex4 قمت بالتفكير في كيفية وضع حد أقصى للمضاعفات التي يقوم بالدخول عليها وجاءت فكرتي كالتالي
عمل اكسبرت أخر ووضعة على شارت أخر لنفس العملة بحيث اضع في المتغيرات الخارجية له الحد الأقصى للوت المضاعفات ومن ثم هو يقوم بقراءة الاوامر المفتوحة من قبل الاكسبرت الأخر والبحث ان كان اللوت المفتوح اكبر من او يساوي الحد الاقصى الموضوع من قبل الاكسبرت التاني وان كان كذلك يقوم باغلاق جميع الصفقات المفتوحة والمعلقة على الشارت وقمت بالفعل بكتابة الأكواد التالية :
وهذا متغير خارجي للحد الاقصى للوت المطلوب اغلاق جميع صفقات المنصة عند الوصول له
كود PHP:extern double MaxLots=2.56;
كود PHP:int start()
{
if ( LastOrderLots()>=MaxLots && AccountProfit()>0){while(orderstotal()>0){CloseAllOrders();}}
return(0);
}
تعريف دالة خارج دالة ستارات لاغلاق جميع الصفقات الموجودة على المنصة ( معلقة + مفتوحة )
كود PHP:int CloseAllOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3*D);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3*D);
}
if (OrderType()==OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType()==OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType()==OP_BUYLIMIT)
{
OrderDelete(OrderTicket());
}
if (OrderType()==OP_SELLLIMIT)
{
OrderDelete(OrderTicket());
}
}
return(0);
}
وهذه دالة خارج ستارت لتعود لنا بقيمة اللوت للصفقات المفتوحة
كود PHP:double LastOrderLots()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
return(OrderLots());
}
}
return(0);
}
أرجو التكرم بالنظر في هذه الأكواد لاني بعد كتابتها الاكسبرت لا يتعامل ولا ينظر نهائيا للوت المفتوح على المنصة
وفكرتي استاذ اسامة باختصار عمل اكسبرت يقوم بقراءة اللوت للصفقات المفتوحة على المنصة فان كان اللوت لأحد هذه الصفقات تساوت او اكبر من MaxLots فأنه يقوم بإغلاق جميع الصفقات المفتوحة والمعلقة على المنصة بشرط صافي ربح الصفقات المفتوحة اكبر من الصفر
تقبل تحياتي
- 29-05-2013, 06:58 PM #3923
رد:موضوع مخصص للأسئلة البرمجية
بعد إذن أستاذ أسامة
----------------------
يمكنك أن تكتفي بحلقة واحدة في دالة إستارت تقوم بالبحث ومعها دالة الإغلاق
كود PHP:
int start()
{
if(OrdersTotal()>0&&AccountProfit()>0){
for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderLots()>=MaxLots){
CloseAllOrders();
}
}
}
return(0);
}
آخر تعديل بواسطة xcv114 ، 29-05-2013 الساعة 07:06 PM
- 29-05-2013, 07:28 PM #3924
- 29-05-2013, 07:31 PM #3925
رد:موضوع مخصص للأسئلة البرمجية
بس سؤال أخي xcv114
هل دالة اغلاق الصفقات خارج الدالة ستارت أقوم بتعريفها كـ Void ام int
انا قمت بتعريفها كالتالي
كود PHP:void CloseAllOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3*D);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3*D);
}
if (OrderType()==OP_BUYSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType()==OP_SELLSTOP)
{
OrderDelete(OrderTicket());
}
if (OrderType()==OP_BUYLIMIT)
{
OrderDelete(OrderTicket());
}
if (OrderType()==OP_SELLLIMIT)
{
OrderDelete(OrderTicket());
}
}
return(0);
}
- 29-05-2013, 07:43 PM #3926
رد:موضوع مخصص للأسئلة البرمجية
نعم أخي void هي الصحيحة وذلك لإن الدالة لا تعود بأي ناتج
int تعني أن الدالة ستعود برقم صحيح
double تعني أن الدالة ستعود برقم عشري
string تعني أن الدالة ستعود بنص
ويمكنك تخفيف الدالة لتكون أسرع بالشكل ده
كود PHP:
void CloseAllOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3*D);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3*D);
}
if (OrderType()>1)
{
OrderDelete(OrderTicket());
}
}
return(0);
}
- 29-05-2013, 07:51 PM #3927
جزاك الله ألف شكر أخي xcv114
معلش استحملني فأنا في خطواتي الأولى في البرمجة بـ MQL4
- 29-05-2013, 10:41 PM #3928
سؤال
عندما اخزن قيمة متغير او متغيرات او حتى رسالة عن طريق الامر print()
في ملف ال log هل من الممكن ان اظهرها مرة أخرى على الشارت ؟
يعني لنفرض انني خزنت قيمة
static x= 10
ثم تم تغيير القيمة الى 30 مثلا
وبعد غلق برنامج التداول وفتحه سوف ترجع القيمة x = 10
كما كانت ولكن اريد عندما افتح البرنامج مرة اخرى استعيد اخر قيمة ل x والمخزنة في ملف ال log فهل يمكن ان استعيد ذلك ؟
- 30-05-2013, 05:18 AM #3929
- 30-05-2013, 05:36 AM #3930
رد:موضوع مخصص للأسئلة البرمجية
حاليا أغلب البروكرات لا تسمح بإستخدام هذه الميزه وهي في الأساس كانت موجوده في نفس النافذة التي تقوم بفتح الصفقه منها سوف تجد خيار CloseBy إذا كان البروكر يسمح بهذه الميزه وبالتأكيد هي لن تفسد إلا إذا كان لديك صفقتين عكسيتين تريد إغلاقهم وليس شرط أن يكون حجم اللوت متساوي من الممكن أن يكون لديك صفقة بحجم لوت أكبر من الأخرى .
أما ما الفائده التي ستعود على البروكر لا يوجد فائده حسب علمي وبالتالي سوف تجد أغلب البروكرات قامت بإلغاء هذه الخاصيه
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM