النتائج 1 إلى 11 من 11
الموضوع: مساعدة فى كود برمجة بارك الله فيكم
- 14-03-2013, 01:29 AM #1
مساعدة فى كود برمجة بارك الله فيكم
السلام عليكم
لى سؤالين
الأول: كيف نستدعى باقى المؤشرات إلى الميتا إديتور بخلاف الموفنج
مثلا الموفنج
iMA(NULL,240,3,0,MODE_EMA,PRICE_WEIGHTED,1)
دى سهلة اما باقى المؤشرات إزاى؟
السؤال الثانى والأهم أريد عمل كود يعيد إنشاء أوامر بندنج إستوب تم أخذ ربحها بالفعل وكانت البداية مع إفتتاح الشمعة مع العلم أنه يوجد بالأعلى أمر باى مفعل وفوقيه بالمسافة الفاصلة أمر باى معلق وبالأسفل أسفل الإفتتاح هناك أيضا أمر سيل مفعل وأسفله بالمسافة المحددة أمر سيل معلق , يعنى المطلوب أن الإكسبرت يعيد فتح الصفقات التى تمت وانتهت إلا الصفقات التى من نفس النوع التى مازالت معلقة أو مفعلة وذلك بدون التعارض مع صفقات الإكسبرت الأخرى
ومعلش مش هعرف أرفق الإكسبرت لعدم موافقة صاحبة وهوة أساسا إكسبرت يودى فى داهية بس أنا بحاول أصلحه يمكن ينفع
والله المستعانآخر تعديل بواسطة mohamed86 ، 14-03-2013 الساعة 01:32 AM
- 14-03-2013, 02:34 AM #2
رد:مساعدة فى كود برمجة بارك الله فيكم
دا مثال لكود البيع اللى المطلوب تكرار العمليات كل ما يرجع السعر لنقطة الإفتتاح
كود:void SellPendingOrder_3() { for (int i=2; i<=5; i++){ if (SellOrder && total(OP_SELLSTOP)>=2 && Bid<=open_price+pip*point && total(OP_SELL)>=2 && (Bid-last_price(OP_SELLSTOP))>i*pip*point) { double price = last_price(OP_SELLSTOP)+spread*point+NormalizeDouble(pip*(i-1),0)*point; double TP=Bid-NormalizeDouble(pip,0)*point; OrderSend(Symbol(), OP_SELLSTOP, sellstop, price, 4, 0, TP, "aaa", magic1, 0, Red); } } }
- 14-03-2013, 11:11 AM #3
رد:مساعدة فى كود برمجة بارك الله فيكم
هذه هى المسئولة عن هذا الشئ
كود:iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
اسم المؤشر باسم الملف بدون اى امتداد
ثم قيم مدخلات المؤشر بالترتيب
ثم رقم خط الانديكس رقم الناتج الذى تنتظر خروجه -والذى تجده فى ماركت واتش فى الميتاتريدر
ثم الازاحة عن الشمعة الحالية
وبالتوفيق ان شاء الله
- 14-03-2013, 12:32 PM #4
رد:مساعدة فى كود برمجة بارك الله فيكم
انا الصراحة لم افهم ما تريد بالظبط لكن
لكى تبحث عن الصفقات التى تمت واتهت ستستخدم او الل Loop For , والذى سيبحث فى جميع صفقات الهيستورى
اعطيك مثال لمعرفة توع اخر صفقة من هذا الاكسيبرت
كود:datetime OCT; // order close time int OT; // order typy for(int i=0; i<OrdersHistoryTotal();i++) { OrderSelect(i;SELECT_BY_POS;MODE_HISTORY); if(OrderSymbol()== Symbol() && OrderMagicNumber()==MagicNumber && OrderCloseTime() >OCT ) { OCT = OrderCloseTime(); OT = OrderType(); } }
كود:OrderSend(OrderSymbol(),OT,OrderLots(),Ask,0,OrderStopLoss(),OrderTakeProfit(),"",MagicNumber,0)
وبالتوفيق ان شاء الله
- 14-03-2013, 02:48 PM #5
جزاكم الله خيرا أخ مجد ومعلش الواحد إما يضطر بيركب الصعاب
كود الأمر المطلوب وضع دالة التكرار له هو التالى وليس الذى بالأعلى
كود:void SellPendingOrder_2() { if (SellOrder && total(OP_SELLSTOP)==1 ) { double price = last_price(OP_SELL)-NormalizeDouble(pip,0)*point-spread*point; if (total(OP_SELL)<=1)selllot=SellLot; if (MultiLot==true && total(OP_SELL)>1)selllot=multilot*last_lot(OP_SELL); if (MultiLot==false && total(OP_SELL)>1)selllot=SellLot+last_lot(OP_SELL); OrderSend(Symbol(), OP_SELLSTOP, selllot, price, 4, 0, 0, "aaa", magic1, 0, Red); } }
- 14-03-2013, 02:53 PM #6
الإكسبرت بيبدأ عند افتتاح الشمعة وطلبى هو عمل الـ loop ده لهذه الأوامر بشرط رجوع السعر للإفتتاح مرة أخرى حتى لو إنتقلنا إلى شمعة أخرى ولم تنتهى الأوامر يكون إفتتاح الشمعة الأم هى خط إرتكازنا
وأفضل تمييز هذا الجزء من العمليات بماجيك داخلى مختلف عن باقى العمليات علشان اللخبطة
بالنسبة لـ
icustom
مثلا إستدعاء مؤشر داخلى مثل الآر اس آى
أو خارجى وليكن إسمه great
- 15-03-2013, 07:38 PM #7
- 17-03-2013, 11:27 AM #8
رد:مساعدة فى كود برمجة بارك الله فيكم
اخي استدعاء اي مؤشر خارجي بالصيغة
كود PHP:double val=iCustom(NULL, 0, "SampleInd",1,0);
موضوع الشمعة الأم تخزن القيمة التي تريدها من قيم الشمعة في متغير
وتضع امر البيع او الشراء بمقارنته بقيمة المتغير .
- 18-03-2013, 01:29 AM #9
جزاكم الله خيرا
- 18-03-2013, 03:20 AM #10
رد:مساعدة فى كود برمجة بارك الله فيكم
وعليكم السلام ورحمة الله وبركاته
بالنسبه لإعادة الأوامر المعلقه المغلقه
راجع الإكسبرت المرفق
سوف تجد هذه الدالة
كود PHP:bool CheckOpenedOrders(string comment){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string com=OrderComment();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if(com==comment)return(true);
}
}
return(false);
}
void OpenClosedOrders(int type)
{
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string comment=OrderComment();double open=OrderOpenPrice();
double lott=OrderLots();double stop=OrderStopLoss();double profit=OrderTakeProfit();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
if(CheckOpenedOrders(comment)==false){
if((type==OP_BUY&&!ReverseClosedOrders)||(type==OP_SELL&&ReverseClosedOrders)){
if(Ask>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_BUYLIMIT,lott,open,3,stop,profit,comment,MagicNumber,0,Green);}
if(Ask<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_BUYSTOP,lott,open,3,stop,profit,comment,MagicNumber,0,Green);}
}
if((type==OP_SELL&&!ReverseClosedOrders)||(type==OP_BUY&&ReverseClosedOrders)){
if(Bid>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_SELLSTOP,lott,open,3,stop,profit,comment,MagicNumber,0,Green);}
if(Bid<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
OrderSend(Symbol(),OP_SELLLIMIT,lott,open,3,stop,profit,comment,MagicNumber,0,Green);}
}
}
}
}
}
إذا كنت تريد تحديد شرط وضع الأوامر المعلقه التي فتحت مع إفتتاح الشمعه فقط فسوف تضيف الشرط إلى نفس الداله
بالنسبه لإستدعاء المؤشرات الأخرى
فكما ذكر الإخوه بالنسبه للمؤشرات الخارجيه فتستخدم الداله iCustom
أما بالنسبه للمؤشرات الأخرى الموجوده في الميتاتريدر فتقريبا نفس إستدعاء مؤشر الموفينج
مثلا الآر إس آي
كود PHP:iRSI(Symbol(),0,14,PRICE_CLOSE,1);
كود PHP:iStochastic(Symbol(),0,5,3,3,0,0,MODE_CLOSE,1);
- 18-03-2013, 10:38 PM #11
شكرا يانجم جزاكم الله خيرا , إجابة موفقة بإذن الله