رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
طيب الأفضل الآن أن تضيف مستويات المؤشر التي تقوم بالدخول منها إلى الإكسبرت
ما هو المؤشر الذي تستخدمه ؟
بالنسبه للخطأ لديك في الكود السابق الذي قمت بعمله
الداله
سوف تعود بقيمة الفرق بالنقاط فعندما إستخدمتها في الكود
كود PHP:
double d=MathAbs(Close[0]-D() );
فمثلا سيكون القيمه رقم مثل 1.4033
فعندما وضعت الشرط
كود PHP:
if ( d>=LastOrderDef *point )
سيكون شرط خاطئ كأنك تقول 1.4033 أكبر من مثلا 0.0050 أو حسب قيمة المتغير الذي وضعته
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
طيب الأفضل الآن أن تضيف مستويات المؤشر التي تقوم بالدخول منها إلى الإكسبرت
ما هو المؤشر الذي تستخدمه ؟
بالنسبه للخطأ لديك في الكود السابق الذي قمت بعمله
الداله
سوف تعود بقيمة الفرق بالنقاط فعندما إستخدمتها في الكود
كود PHP:
double d=MathAbs(Close[0]-D() );
فمثلا سيكون القيمه رقم مثل 1.4033
فعندما وضعت الشرط
كود PHP:
if ( d>=LastOrderDef *point )
سيكون شرط خاطئ كأنك تقول 1.4033 أكبر من مثلا 0.0050 أو حسب قيمة المتغير الذي وضعته
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
طيب هل تكون الداله هكذا صحيحة أستاذ أسامة
كود PHP:
double db=(Db()-Close[0] );
double ds=(Close[0] -Ds() );
/////////
if ( db>=LastOrderDef *point ) //buy
if ( ds>=LastOrderDef *point ) //sell
double Db(){
for(int i=OrdersTotal()-1; i>=0; i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
//double D= MathAbs(Bid-LastOrderOpenPrice() ) ;
if ( (Bid-LastOrderOpenPrice() )>=LastOrderDef *point ) {return(Bid );}
}
}
return(0);
}
////////////////////
double Ds(){
for(int i=OrdersTotal()-1; i>=0; i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
//double D= MathAbs(Bid-LastOrderOpenPrice() ) ;
if ( (LastOrderOpenPrice()-Bid )>=LastOrderDef *point ) {return(Bid );}
}
}
return(0);
}
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
سوف تستخدم الدالة ObjectGet لمعرفة قيم الخطوط
أولا بالنسبة لأسماء خطوط المؤشر فهي تبدأ ب RES__________1 حتى عدد الخطوط
وبالنسبه للدعم SUP__________1 حتى عدد الخطوط
فعندما تريد إستدعاء قيمة أول خط دعم مثلا سيكون
كود PHP:
double sub1=ObjectGet("SUP__________1",OBJPROP_PRICE1);
وتقوم بعمل نفس الطريقة مع باقي الخطوط
أو يمكنك إستخدام الحلقة for مباشرة ووضع قيم الخطوط في مصفوفه
مثلا
كود PHP:
double sub[Num];
for(int i=1;i<=Num;i++)
{
sub[i-1]=ObjectGet("SUP__________"+i,OBJPROP_PRICE1);
}
ونفس الطريقة بالنسبة لخطوط المقاومة ثم ستتعامل بعد ذلك مع المصفوفه كما تريد
رد:موضوع مخصص للأسئلة البرمجية
شكرا أستاذ أسامه و جزاك الله كل خير .
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة العوامى
استخدمت هذه الدالة لترسم خط على سعر ask ولكن عند اضافة مسافة بين السعر والخط بمعنى ask +10 يختفى الخط
int start()
{
int counted_bars=IndicatorCounted();
ObjectCreate("CSP",OBJ_HLINE,0,0,Ask);
ObjectMove("CSP", 0, TimeCurrent(), Ask);
ObjectSet("CSP",OBJPROP_COLOR,LimeGreen);
return(0);
}
يجب أن تحول ال 10 إلى قيمتها بالنقاط أي في اليورو دولار ستكون 0.0010 وفي الدولار ين مثلا ستكون 0.10
لذلك عندما تقوم بتحويلها ستجعلها
مرفق أيضا مؤشر يقوم بعمل هذه الطريقه راجع كوده سيفيدك
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم أستاذي العزيز
أنا أستخدم الداله التي تفضلت بها في مشاركة سابقه لحساب نقطه التعادل
كود PHP:
double BreakPoint(int type )
{
double Price;double Lots;
for(int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber && OrderType()==type )
{
Price+=OrderOpenPrice()*OrderLots();
Lots+=OrderLots();
}
}
if(Lots!=0) return(Price/Lots);
}
و أقوم بوضع شرط لغلق الصفقات المفتوحه إذا كانت صفقتان فأكثر بحيث تغلق على نقطة التعادل و زيادة 10 نقاط
كود PHP:
while ( orderscnt(OP_BUY) >1 && Bid >=BreakPoint(OP_BUY)+10*point ) {CloseBuyOrders() ; if (orderscnt(OP_BUY)==0) break ; }
while ( orderscnt(OP_SELL) >1 && Bid <=BreakPoint(OP_SELL)-10*point ) {CloseSellOrders() ; if (orderscnt(OP_SELL)==0) break ; }
و لكن في معظم الأحيان لا يتم إغلاق الصفقات كما بالشرط و تغلق على أهدافها رغم مرورها بنقطة التعادل طالما وصلت للأهداف لأنها تكون صفقات تبريد من نفس النوع و يتم دائما تعديل هدف كل صفقه ليصبح أهداف الصفقات الجديدة هدف آخر صفقه مفتوحه ..
فهل هناك خطأ ... و جزاك الله خيرا .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
السلام عليكم أستاذي العزيز
أنا أستخدم الداله التي تفضلت بها في مشاركة سابقه لحساب نقطه التعادل
كود PHP:
double BreakPoint(int type )
{
double Price;double Lots;
for(int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber && OrderType()==type )
{
Price+=OrderOpenPrice()*OrderLots();
Lots+=OrderLots();
}
}
if(Lots!=0) return(Price/Lots);
}
و أقوم بوضع شرط لغلق الصفقات المفتوحه إذا كانت صفقتان فأكثر بحيث تغلق على نقطة التعادل و زيادة 10 نقاط
كود PHP:
while ( orderscnt(OP_BUY) >1 && Bid >=BreakPoint(OP_BUY)+10*point ) {CloseBuyOrders() ; if (orderscnt(OP_BUY)==0) break ; }
while ( orderscnt(OP_SELL) >1 && Bid <=BreakPoint(OP_SELL)-10*point ) {CloseSellOrders() ; if (orderscnt(OP_SELL)==0) break ; }
و لكن في معظم الأحيان لا يتم إغلاق الصفقات كما بالشرط و تغلق على أهدافها رغم مرورها بنقطة التعادل طالما وصلت للأهداف لأنها تكون صفقات تبريد من نفس النوع و يتم دائما تعديل هدف كل صفقه ليصبح أهداف الصفقات الجديدة هدف آخر صفقه مفتوحه ..
فهل هناك خطأ ... و جزاك الله خيرا .
وعليكم السلام ورحمة الله وبركاته
الشروط لديك صحيحه فربما الخطأ موجود في جزء آخر في الكود
إستخدم أيضا الأمر print او comment لمعرفة قيمة الداله BreakPoint وهل تعطي قيم صحيحه أو لا فإذا كانت القيم صحيحه عندها تنتقل إلى جزء آخر في الكود لمعرفة الخطأ
2 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة abou fares
السلام عليكم احبتي في الله اريد شرح كيفية تحويل مؤشر الى هيستوري حيث يظهر الاشارات السابقة لجميع الايام مثل البايفوت ومستويات الدعم والمقاومة وشكرا
وعليكم السلام ورحمة الله وبركاته
كل مؤشر يختلف كوده من مؤشر إلى آخر أخي العزيز حاول الإطلاق على بعض أكواد المؤشرات و إذا يوجد جزء في كود لم تفهم فائدته إسأل وسنجيبك
مثال راجع المؤشرات المرفقه