مساعدة فى كود برمجة بارك الله فيكم
السلام عليكم
لى سؤالين
الأول: كيف نستدعى باقى المؤشرات إلى الميتا إديتور بخلاف الموفنج
مثلا الموفنج
iMA(NULL,240,3,0,MODE_EMA,PRICE_WEIGHTED,1)
دى سهلة اما باقى المؤشرات إزاى؟
السؤال الثانى والأهم أريد عمل كود يعيد إنشاء أوامر بندنج إستوب تم أخذ ربحها بالفعل وكانت البداية مع إفتتاح الشمعة مع العلم أنه يوجد بالأعلى أمر باى مفعل وفوقيه بالمسافة الفاصلة أمر باى معلق وبالأسفل أسفل الإفتتاح هناك أيضا أمر سيل مفعل وأسفله بالمسافة المحددة أمر سيل معلق , يعنى المطلوب أن الإكسبرت يعيد فتح الصفقات التى تمت وانتهت إلا الصفقات التى من نفس النوع التى مازالت معلقة أو مفعلة وذلك بدون التعارض مع صفقات الإكسبرت الأخرى
ومعلش مش هعرف أرفق الإكسبرت لعدم موافقة صاحبة وهوة أساسا إكسبرت يودى فى داهية بس أنا بحاول أصلحه يمكن ينفع
والله المستعان
رد:مساعدة فى كود برمجة بارك الله فيكم
دا مثال لكود البيع اللى المطلوب تكرار العمليات كل ما يرجع السعر لنقطة الإفتتاح
كود:
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);
}
}
}
رد:مساعدة فى كود برمجة بارك الله فيكم
اقتباس:
المشاركة الأصلية كتبت بواسطة mohamed86
السلام عليكم
لى سؤالين
الأول: كيف نستدعى باقى المؤشرات إلى الميتا إديتور بخلاف الموفنج
مثلا الموفنج
iMA(NULL,240,3,0,MODE_EMA,PRICE_WEIGHTED,1)
دى سهلة اما باقى المؤشرات إزاى؟
هذه هى المسئولة عن هذا الشئ
كود:
iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
ومدخلاته : العملة ، الاطار الزمنى الذى تريد المؤشر ان يعمل عليه
اسم المؤشر باسم الملف بدون اى امتداد
ثم قيم مدخلات المؤشر بالترتيب
ثم رقم خط الانديكس رقم الناتج الذى تنتظر خروجه -والذى تجده فى ماركت واتش فى الميتاتريدر
ثم الازاحة عن الشمعة الحالية
وبالتوفيق ان شاء الله
رد:مساعدة فى كود برمجة بارك الله فيكم
انا الصراحة لم افهم ما تريد بالظبط لكن
اقتباس:
المشاركة الأصلية كتبت بواسطة mohamed86
السلام عليكم
يعنى المطلوب أن الإكسبرت يعيد فتح الصفقات التى تمت وانتهت إلا الصفقات التى من نفس النوع التى مازالت معلقة أو مفعلة وذلك بدون التعارض مع صفقات الإكسبرت الأخرى
والله المستعان
لكى تبحث عن الصفقات التى تمت واتهت ستستخدم او الل 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)
لكن طبعا عليك ان تدخل معادلة او داله لتحدد سعر فتح الصفقة و نوعها بناء على السعر الحالى (اى مثلا هل هى امر ماركت ام امر معلق وهل الامر المعلق Limit ام Stop
وبالتوفيق ان شاء الله
رد:مساعدة فى كود برمجة بارك الله فيكم
اخي استدعاء اي مؤشر خارجي بالصيغة
كود PHP:
double val=iCustom(NULL, 0, "SampleInd",1,0);
اسم المؤشر SampleInd
موضوع الشمعة الأم تخزن القيمة التي تريدها من قيم الشمعة في متغير
وتضع امر البيع او الشراء بمقارنته بقيمة المتغير .
1 مرفق
رد:مساعدة فى كود برمجة بارك الله فيكم
اقتباس:
المشاركة الأصلية كتبت بواسطة mohamed86
السلام عليكم
لى سؤالين
الأول: كيف نستدعى باقى المؤشرات إلى الميتا إديتور بخلاف الموفنج
مثلا الموفنج
iMA(NULL,240,3,0,MODE_EMA,PRICE_WEIGHTED,1)
دى سهلة اما باقى المؤشرات إزاى؟
السؤال الثانى والأهم أريد عمل كود يعيد إنشاء أوامر بندنج إستوب تم أخذ ربحها بالفعل وكانت البداية مع إفتتاح الشمعة مع العلم أنه يوجد بالأعلى أمر باى مفعل وفوقيه بالمسافة الفاصلة أمر باى معلق وبالأسفل أسفل الإفتتاح هناك أيضا أمر سيل مفعل وأسفله بالمسافة المحددة أمر سيل معلق , يعنى المطلوب أن الإكسبرت يعيد فتح الصفقات التى تمت وانتهت إلا الصفقات التى من نفس النوع التى مازالت معلقة أو مفعلة وذلك بدون التعارض مع صفقات الإكسبرت الأخرى
ومعلش مش هعرف أرفق الإكسبرت لعدم موافقة صاحبة وهوة أساسا إكسبرت يودى فى داهية بس أنا بحاول أصلحه يمكن ينفع
والله المستعان
وعليكم السلام ورحمة الله وبركاته
بالنسبه لإعادة الأوامر المعلقه المغلقه
راجع الإكسبرت المرفق
سوف تجد هذه الدالة
كود 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);