النتائج 1 إلى 15 من 154
الموضوع: في كود اغلاق الصفقات
- 12-01-2016, 08:58 AM #1
في كود اغلاق الصفقات
السلام عليكم
كثرت الاسئلة ولكني لا اسأل غالبا الا بعد بحث ومحاولات للحل بدون جدوى
مثلا وضعت هذا الكود
الذي يجب ان يحذف اي صفقة أو امر بمجرد تغير الربح أو الخسارة
لكنه لا ينفذ في كثير من الأحيان
عند انشاء صفقات احيانا لا يحذفها
وعند تعطيل الاكسبيرت واشاء صفقات وأوامر معلقة .. ثم شغلت .. يحذف البعض فقط
(هدفي النهائي .. احتاج تريلينج ستوب للربح والخسارة في مجمل الحساب .. منذ انشاء اول صفقة الى ان تنتهي جلسة التداول )
كود:if (profit()<0 || profit()>0 ){ close_Orders(); }
https://forum.arabictrader.com/t233129.html
كود:void close_Orders(){ for(int i=0;i<OrdersTotal();i++){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); //if(OrderSymbol()==Symbol()){ if (OrderType()==OP_BUY) { bool close= OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3); } if (OrderType()==OP_SELL) { close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3); } if(OrderType()>OP_SELL) { close=OrderDelete(OrderTicket()); } } }
وهذه لحساب الربح والخسارة
كود:double profit(){ double c; for(int i=0;i<OrdersTotal();i++){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); //if(OrderSymbol()==Symbol()){ c+=OrderProfit(); } // } return(c); }
- 12-01-2016, 03:23 PM #2
كود إغلاق الصفقات يجب أن يكون بحلقة عكسية .. أي تبدأ من OrdersTotal-1 وحتى الصفر .
- 12-01-2016, 03:28 PM #3
أيضا للاحتياط قم باستدعاء وظيفة الإغلاق أكثر من مرة لضمان التنفيذ ... وخصوصا مع بروكرات السبريد الثابت والريكوت .
- 12-01-2016, 04:54 PM #4
جزاك الله خير على التنبيه
عدلته لهذا
كود:for(int i=OrdersTotal()-1;i>=0;i--){
وحاولت ربطه بالوقت مع التيك
وحاولت استخدام
while(OrdersTotal()>=0)
ولكن لم اصل لدرجة من الأمان معه فلا بد أن يبقي أوامر ما
حتى لو لم يوجد الا صفقة واحدة في الأصل .. فقد لا يغلقها
لاحظت مع هذا البروكر ان المطب عند أي زوج مرتبط مع الين .. لاادري ان كنت اتوهم
لكنه يحذفها فورا ان وضعت الاكسبيرت على شارته (مع ان شرط الكود لا يشترط الشارت نفسه )
----------------------
هل لديك اكسبيرت لعمل تريلينج ستوب للحساب كامل
شكرا لك استاذي
- 12-01-2016, 05:48 PM #5
فهمت منك الآن أن هذا الكود هو لأي عملة وليست فقط لعملة الشارت ..
ولذلك فإن كود إغلاقك فيه خطأ ويجب أن يكون هكذا ...
كود:void close_Orders(){ for(int i=0;i<OrdersTotal();i++){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); //if(OrderSymbol()==Symbol()){ if (OrderType()==OP_BUY) { bool close= OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3); } if (OrderType()==OP_SELL) { close=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3); } if(OrderType()>OP_SELL) { close=OrderDelete(OrderTicket()); } } }
- 12-01-2016, 05:51 PM #6
- 12-01-2016, 08:01 PM #7
- 12-01-2016, 08:52 PM #8
يعلم الله كم اثرت في هذه الكلمة
لأني امس تأزمت جدا
وصلت الارباح في تداول امس الى تدبيلة ونصف في بيع الاسترالي وكان هدفي القاع (الذي تحقق) ثم الشراء منه
لكني لم احافظ على الارباح وللاسف
لعلي اجد في هذه البرمجيات بديلا مناسبا (لإدارة النفسية)
----------
ما كتب بالأحمر
لاحظت انه يغلق كل الازواج ما عدا اي زوج مرتبط بالين (audjpy - chfjpy - ...) يقف عنده أو يتأخر في اغلاقه
مع انه يغلق الاوامر المعلقه له
---------
بعد قليل سأعرض عليك برنامجي
- 12-01-2016, 09:17 PM #9
- 12-01-2016, 09:26 PM #10
- 12-01-2016, 09:33 PM #11
أخي أبو ناصر اختر أحد الخيارين :
- كود جاهز يحل لك مشكلتك .
- أن أشرح لك وتكتبه بنفسك .
- 12-01-2016, 09:41 PM #12
- 12-01-2016, 09:45 PM #13
- 12-01-2016, 10:19 PM #14
ولا يهمك أخي أبو ناصر ...
سأبدأ ببعض الأسئلة :
- هل يوجد في بروكرك خاصية CloseBy أم لا .
لأنه في حال وجودها سنعتمد على إغلاق الصفقات جميعها بهيدج أولا ... ثم الإغلاق بكلوز باي تباعا ...
وهو ما يجعل الإغلاق أسرع ما يمكن وأدق ما يمكن .
في حال عدم وجود هذه الخاصية سنضطر للإغلاق صفقة صفقة .
- هل الدخول يدوي ... وعلى أي زوج متاح ... لأنه لو كان كذلك فهذا يعني عدم إمكانية استخدام الماجيك نمبر .. وأيضا يجب العمل على الحساب ككتلة واحدة ولا يمكن فصل إحداها عن الأخرى .
أخيرا البرنامج سيكون سكريبت لأننا نتعامل مع عدة أزواج في نفس الوقت ...
توكلنا على الله .
- 12-01-2016, 10:21 PM #15
نسيت أيضا أن أسألك ... هل البروكر انستانت اكسكيوشين أم ماركت اكسكيوشين .