شكرا جريلا أخي على المساعده جزاك الله كل خير
Printable View
هذه الداله أيضا تفي بالغرض هي الأخرى أخي أسامه ؟؟؟؟
ثم إذا أردت فتح شراء إذا كانت آخر صفقه أغلقت خساره و نوع آخر صفقه شراء يكون الكود :كود PHP:
string last;
for(int i=OrdersHistoryTotal();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) last="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) last="loss";
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) last="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) last="loss";
break;
}
}
وسؤالي هنا هل إستخدامي لنوع الصفقه في الشرط السابق يعبر عن نوع آخر صفقه مغلقة ؟؟؟ أم أني أحتاج لعمل داله أخرى لحساب نوع آخر صفقه مغلقة ؟؟؟ غير هذه الدالهكود PHP:
if( last=="loss" && OrderType()==OP_BUY ) //buy
و كيف أقوم بعمل هذه الداله أخي أسامه والتي تحسب أو تفحص نوع آخر صفقه مغلقة كانت بيعا أم شراء سواء كان مازال صفقات أخرى مفتوحه أم كانت هي آخر صفقه ؟؟؟كود PHP:
int orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()&&OrderType()==type && (MagicNumber==OrderMagicNumber()) ){
cnt++;
}
}
}
return(cnt);
}
وشكرا جزيلا ..
نعم يمكنك إستخدام هذا الكود ستكون نفس النتيجه
ويجب أن تقوم بعمل داله أخرى لمعرفة نوع آخر صفقه أغلقت بيع أو شراء
أو يمكنك عمل تعديل في الكود الذي أرفقته وتعريف متغير يحفظ نوع آخر صفقهكود PHP:
int lastordertype(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()OrderMagicNumber()==MagicNumber){
return(OrderType());
}
}
return(-1);
}
كود PHP:
string last; int type
for(int i=OrdersHistoryTotal();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
type=OrderType();
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) last="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) last="loss";
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) last="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) last="loss";
break;
}
}
السلام عليكم ورحمه الله وبركاته
ممكن مساعدة
كيف يتم استدعاء last high و last low من مؤشر ال zigzag لاستخدامه في عمل أسكر يبت
يعني محتاج اخر قمة وآخر قاع
ولكم جزيل الشكر
تمام أخي أسامه ,,,
لو قمت بعمل الداله
سوف أستدعي نوع آخر صفقه بهذا الكود :كود PHP:
int lastordertype(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()OrderMagicNumber()==MagicNumber){
return(OrderType());
}
}
return(-1);
}
__________________كود PHP:
if( lastordertype()==OP_BUY ) //buy
ولكن إذا قمت بعمل تعديل على الداله كما تفضلت :
سيكون إستدعاء نوع آخر صفقه بهذا الكود :كود PHP:
string last; int type
for(int i=OrdersHistoryTotal();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
type=OrderType();
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) last="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) last="loss";
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) last="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) last="loss";
break;
}
}
_______________كود PHP:
if( OrderType()==OP_BUY ) //buy
لكن في حالة أردت أن أستخدم كود يستدعي نوع آخر صفقه و كود نوع الصفقه الحاليه سوف أستخدم هاتين الدالتين :
- الداله التي تحسب نوع الصفقه الحاليه :
وهذا الكود يكون خاص بإستدعاء نوع الصفقه الحاليه :كود PHP:
int orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()&&OrderType()==type && (MagicNumber==OrderMagicNumber()) ){
cnt++;
}
}
}
return(cnt);
}
والداله التي تحسب نوع آخر صفقه مغلقه :كود PHP:
if( OrderType()==OP_BUY ) //buy
ليكون هذا الكود خاص بإستدعاء نوع آخر صفقه مغلقه :كود PHP:
int lastordertype(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()OrderMagicNumber()==MagicNumber){
return(OrderType());
}
}
return(-1);
}
هل فهمي صحيح ؟كود PHP:
if( lastordertype()==OP_BUY ) //buy
وجزاك الله خيرا
تم التعديل ومرفق صورة للخطـأ الذى يظهر عند فتح الصفقة .
https://forum.arabictrader.com/attac...9&d=1339425850
وعليكم السلام ورحمة الله وبركاته
كمثال
كود PHP:
double lasthigh,lastlow;
for(int i=0;i<Bars;i++){
double zig=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zig==High[i])lasthigh=zig;
if(zig==Low[i])lastlow=zig;
if(lasthigh!=0&&lastlow!=0)break;
}
السلام عليكم ورحمة الله تعالى وبركاته
تحياتي للجميع :eh_s(7):
بحاول أعمل دالة لإغلاق جميع الصفقات المفتوحة بعد شرط معين لكن مش عارف ليه بيقفل بس الصفقات الشراء
وده الكود إلي كتبته وانا شايف نظريا مافيش خطأ مع العلم إن في الجورنال برضه مافيش أخطاء يعني الدالة نفسها مش بتقفل غير صفقات الشراء :016:
كود PHP:
void close_all_orders()
{
if ( OrdersTotal()==6)
{
for ( int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderType()==OP_BUY)double B=Bid;
if (OrderType()==OP_SELL) B=Ask;
OrderClose(OrderTicket(),OrderLots(),B,5,CLR_NONE);
}
}
}
وسؤال فني , كنت بعمل إكسبيرت على مدار يومين وعملت كومبايل وعامل حفظ وعامل باكتست اكتر من مرة يعني الكود والشغل كله محفوظ و100% تاني يوم كنت بشتغل فجأة إتقطعت الكهربا ولم جت فتحت الإكسبيرت لقيت الصفحة بيضا والكود كله إتمسح حتى الكود الإفتراضي إلي بيكون موجود لما نفتح إكسبيرت جديد إتمسح
حد إتعامل مع مشكلة زي دي وياريت لو ليها حل وأقدر أسترجع الشغل تدلوني وشكرا مقدما على كل الاحوال
تحياتي :eh_s(7):
حقيقه لا أرى أي سبب آخر قد يكون المشكله في ظهور الخطأ
إذا كان الإكسبرت يفتح بعض الصفقات فربما السبب هو في عدد المحاولات فإذا حلت المشكله فقم بزيادة عدد المحاولات حتى يظل يحاول فتح الصفقه والسبب غالبا في هذه الحاله هو سرعة الحركه وإختلاف سعر فتح الصفقه عن السعر الحالي
لذلك إستخدمت RefreshRates
وعليكم السلام ورحمة الله وبركاته
الداله صحيحه لا يوجد بها أخطاء . جرب تعريف متغير ticket وقم بحفظ رقم التيكيت بعد إختيار الصفقه ب OrderSelect وإستخدمه في أمر إغلاق الصفقه
بالنسبه للخطأ فالسبب غالبا تقني من الجهاز نفسه في المرات القادمه عندما تقوم ببرمجة إكسبرت إجعل ملف كود الإكسبرت والذي تقوم بالتطوير فيه في مجلد مختلف عن الميتاتريدر
الحل الآن يمكنك إستخدام ملف الإكسبرت التنفيذي ex4 قم بكسره وسوف تجد الكود سليم
بارك الله فيك يا أستاذ أسامة :eh_s(7):
جربت ونفس المشكلة ده حتى فتحت إكسبيرت جديد وعملت الكود البسيط ده ونفس المشكلة بيعمل قفزات وجربت ميتا إيديتور لشركة تانية برضه نفس المشكلة
كود PHP:
int start()
{
if (OrdersTotal()<6)OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",0,0,CLR_NONE);
if (OrdersTotal()==6)close_all_orders();
return(0);
}
//+------------------------------------------------------------------+
void close_all_orders()
{
for ( int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
OrderClose(OrderTicket(),OrderLots(),Bid,5,CLR_NONE);
}
}
الملف المرفق 327665
حتى ملف الـ ex4 إختفى :0006: لكن الحمد لله قبل شوية خلصت بحدود 90 % من الكود إلي كنت عامله المرة التانية بتكون اسهل :asvc: