رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة mostafa400
هذا كان السؤال الاساسى وقد أجبتنى بهذه الدالة ولكنها لم تعمل
كود:
{ int N=0; string S[1];
for( int cnt=0; cnt<=OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
bool SymbCount=false;
for (int i=0; i<ArraySize(S); i++)
{
if( S[i]==OrderSymbol() )
{
SymbCount=true;
break;
}
}
if(SymbCount==false)
{
S[N]=OrderSymbol();
ArrayResize(S,ArraySize(S)+1);
N++;
}}
} return(N);
}
ما هو الأمر الذى يرتب أسماء العملات أبجديا لأنى جربت أمر ArraySort ولم يرتبها فهو يرتب الأرقام فقط تصاعديا أو تنازليا لكن النصوص لا يرتبها ؟
تفضل هذه الدالة ستحسب بشكل صحيح قمت بتجربتها
كود PHP:
int Real_Symb()
{
static int N;
string S[1];
for( int cnt=0; cnt<OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string symbol=OrderSymbol();
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
bool SymbCount=false;
for (int i=0; i<ArraySize(S); i++)
{
if( S[i]==symbol )
{
SymbCount=true;
break;
}
}
if(SymbCount==false)
{
S[N]=OrderSymbol();
ArrayResize(S,ArraySize(S)+1);
N++;
}
}
}
return(N);
}
لا يوجد دالة ترتب أسماء العملات أبجديا لكن يمكنك تحويل إسم العمله إلى كود الحرفي الخاص بها بإستخدام الداله
فمثلا
كود PHP:
int SymbolsCharCode;
for(int j=0;j<StringLen(Symbol());j++)
{
SymbolsCharCode+=StringGetChar(Symbol(),j);
}
ثم ستقارن بين أسماء العملات كارقام
طبعا ستقوم بتعريف المتغير SymbolsCharCode كمصفوفه تضع بها جميع اسماء العملات
وستستخدم الحلقه for للبحث عن الصفقات المفتوحه والمقارنه بينها
الأمر معقد قليلا لكن قم بعمل محاوله
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
أنت أضفت شروط الإغلاق
كود PHP:
if(CloseBuy=true;
if(CloseSell=true;
هذا خطأ
الكود الذي كتبته لك كان كمثال فقط
لكن عندما ستكتب الكود الكامل سيكون
كود PHP:
bool CloseBuy=true,CloseSell=true;
for(int i=1;i<=CheckBarsNumber;i++)
{
if(Close[i]>Open[i])CloseBuy=false;
if(Close[i]<Open[i])CloseSell=false;
}
if(CloseBuy==true)
CloseBuyOrders;
if(CloseSell==true)
CloseSellOrders;
تم التعديل ولكن يظهر هذا الخطا
'CloseBuyOrders' - variable not defined
'CloseSellOrders' - variable not defined
كيف اقوم بتعريف هذين المتغيران
مع اني واضع هذا التعريفات
extern bool CloseBuy=true;
extern bool CloseSell=true;
extern int CheckBarsNumber =1;
شكري وامتناني
الاخ/ MR.DOLLAR .. سؤال بسيط ان تكرمتم .. ؟
السلام عليكم روحمة الله وبركاتة ..
انا استخدم برنامج forex generator v4.5 .. واريد ان اضع شرط ما .. وهو ..
http://www5.0zz0.com/2013/03/18/23/370868298.png
" حدد اعلي هاي بين آخر 16 شمعة من الحالية " او "حدد ادنى لوو بين آخر 16 شمعة من الحالية" .. بس كدة
ان تكرمتم جزاكم الله خيرا .. اريد هذا الشرط في ملف .ea4 حتى يتثني الية معرفة الكيفية واضافته في forex generator ضمن البوك الحالي للاكسبيرت الخاص ..
انا اعرف اني استطيع ان استخدم الكود التالي
كود PHP:
High[iHighest (NULL,0,MODE_HIGH,candles,4)]
او
كود PHP:
Low[iLowest (NULL,0,MODE_LOW,candles,4)]
ولكن ما اريدة هو كيفية ادخال هذا الكود كابلوك في برنامج forex generator .. ؟
جزاكم الله خيرا واعانكم لما فية الخير والصلاح ..
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة fxsmartsniper
تم التعديل ولكن يظهر هذا الخطا
'CloseBuyOrders' - variable not defined
'CloseSellOrders' - variable not defined
كيف اقوم بتعريف هذين المتغيران
مع اني واضع هذا التعريفات
extern bool CloseBuy=true;
extern bool CloseSell=true;
extern int CheckBarsNumber =1;
شكري وامتناني
قمت بتعديله لك
لن تحتاج إلى تعريف متغيرات خارجيه بإسم CloseBuy , CloseSell
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة 3mr 3bdeen
السلام عليكم روحمة الله وبركاتة ..
انا استخدم برنامج forex generator v4.5 .. واريد ان اضع شرط ما .. وهو ..
http://www5.0zz0.com/2013/03/18/23/370868298.png
" حدد اعلي هاي بين آخر 16 شمعة من الحالية " او "حدد ادنى لوو بين آخر 16 شمعة من الحالية" .. بس كدة
ان تكرمتم جزاكم الله خيرا .. اريد هذا الشرط في ملف .ea4 حتى يتثني الية معرفة الكيفية واضافته في forex generator ضمن البوك الحالي للاكسبيرت الخاص ..
انا اعرف اني استطيع ان استخدم الكود التالي
كود PHP:
High[iHighest (NULL,0,MODE_HIGH,candles,4)]
او
كود PHP:
Low[iLowest (NULL,0,MODE_LOW,candles,4)]
ولكن ما اريدة هو كيفية ادخال هذا الكود كابلوك في برنامج forex generator .. ؟
جزاكم الله خيرا واعانكم لما فية الخير والصلاح ..
وعليكم السلام ورحمة الله وبركاته
لم اقم بتجربة برنامج Forex Generator حقيقة فلن أستطيع أن أجيبك إن شاء الله أحد الإخوه من قام بإستخدامه يجيبك
2 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
قمت بتعديله لك
لن تحتاج إلى تعريف متغيرات خارجيه بإسم CloseBuy , CloseSell
بالفعل شكرا لك يا هندسة
جاري التجربة
ولكن الاكسبرت في بعض الاحيان وليس جميعها (بصوة عشوائية) يقوم بفتح صفقات متعددة تقريبا من نفس السعر او بفرق 1 او 2 بيب
اريد مستر دولار شرط عام بحيث مثلا يسمي
max trade =1
بحيث ان لا يفتح الا صفقة واحدة علي الشارت الواحد لاي زوج وذلك لمنع التكرار لهذا الاكسبرت او اي اكسبرت اخر
ولا يفتح صفقة اخري الي بتحقق الشروط من جديد بعد اغلاق الصفقة السابقة
فما هذا الكود العام
شكرا وبارك الله علي مساعدتك الدائمة :015:
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة mostafa400
للأسف الدالة تعمل بشكل جيد عند فتح الصفقات لكن إذا تم إغلاق صفقة لا يتم حذفها من العدد - static int N; هى السبب
نعم ملاحظتك صحيحه
جرب هذا الكود
كود PHP:
int Real_Symb()
{
int TotalSymbols=0;
string S[];
ArrayResize(S,1);
S[0]="";
for( int cnt=0; cnt<OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string symbol=OrderSymbol();
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
bool SymbCount=false;
for (int i=0; i<ArraySize(S); i++)
{
if( S[i]==symbol )
{
SymbCount=true;
break;
}
}
if(SymbCount==false)
{
Alert(TotalSymbols,"==",ArraySize(S));
S[TotalSymbols]=symbol;
ArrayResize(S,ArraySize(S)+1);
TotalSymbols++;
}
}
}
return(TotalSymbols);
}
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم ورحمة الله وبركاته
تحية طيبة أستاذي القدير مستر دولار :asvc:
واجهتني مشكلة ببعض المنصات حيث الأمر OrderModify لا يتفعل في بعض الأحيان مما يسبب خسائر فادحة بعدم تفعيل SL و TP
وبالتالي فكرت في إغلاق أوتوماتيكي من قبل الاكسبيرت كعمل إحتياطي
وبذلك قمت بإضافة الكود التالي :
كود PHP:
void CloseBuyOrdersHiddenTP()
{
int total=OrdersTotal();
for (int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+Takeprofit*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
return(0);
}
void CloseBuyOrdersHiddenSL()
{
int total=OrdersTotal();
for (int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&Bid<(OrderOpenPrice()-Stoploss*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
return(0);
}
void CloseSellOrdersHiddenTP()
{
int total=OrdersTotal();
for(int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL&&Ask<(OrderOpenPrice()-Takeprofit*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
void CloseSellOrdersHiddenSL()
{
int total=OrdersTotal();
for(int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL&&Ask>(OrderOpenPrice()+Stoploss*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
وتعريفها داخل الدالة OnEveryTick
كود PHP:
void OnEveryTick()
{
CloseBuyOrdersHiddenTP();
CloseSellOrdersHiddenTP();
CloseBuyOrdersHiddenSL();
CloseSellOrdersHiddenSL();
}
بعد عمل الكمبايل لا يوجد أخطاء بالاكسبيرت
سؤالي هل يوجد خطأ في الأكواد ؟ وهل فعلا سيعمل الاكسبيرت بالاغلاق الأوتوماتيكي حسب الهدف والستوب المحددين بالرغم من عدم حصول أمر موديفاي الصفقة ؟؟؟
علما أن الأوامر المستخدمة بالاكسبيرت هي أوامر معلقة باي ستوب وسيل ستوب
بانتظار ردك أستاذي وجزاك الله عنا كل خير :eh_s(7):
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة kira-h
السلام عليكم ورحمة الله وبركاته
تحية طيبة أستاذي القدير مستر دولار :asvc:
واجهتني مشكلة ببعض المنصات حيث الأمر OrderModify لا يتفعل في بعض الأحيان مما يسبب خسائر فادحة بعدم تفعيل SL و TP
وبالتالي فكرت في إغلاق أوتوماتيكي من قبل الاكسبيرت كعمل إحتياطي
وبذلك قمت بإضافة الكود التالي :
كود PHP:
void CloseBuyOrdersHiddenTP()
{
int total=OrdersTotal();
for (int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+Takeprofit*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
return(0);
}
void CloseBuyOrdersHiddenSL()
{
int total=OrdersTotal();
for (int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&Bid<(OrderOpenPrice()-Stoploss*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
return(0);
}
void CloseSellOrdersHiddenTP()
{
int total=OrdersTotal();
for(int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL&&Ask<(OrderOpenPrice()-Takeprofit*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
void CloseSellOrdersHiddenSL()
{
int total=OrdersTotal();
for(int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL&&Ask>(OrderOpenPrice()+Stoploss*PipValue*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
وتعريفها داخل الدالة OnEveryTick
كود PHP:
void OnEveryTick()
{
CloseBuyOrdersHiddenTP();
CloseSellOrdersHiddenTP();
CloseBuyOrdersHiddenSL();
CloseSellOrdersHiddenSL();
}
بعد عمل الكمبايل لا يوجد أخطاء بالاكسبيرت
سؤالي هل يوجد خطأ في الأكواد ؟ وهل فعلا سيعمل الاكسبيرت بالاغلاق الأوتوماتيكي حسب الهدف والستوب المحددين بالرغم من عدم حصول أمر موديفاي الصفقة ؟؟؟
علما أن الأوامر المستخدمة بالاكسبيرت هي أوامر معلقة باي ستوب وسيل ستوب
بانتظار ردك أستاذي وجزاك الله عنا كل خير :eh_s(7):
نعم الأوامر صحيحه
لكن فقط أضف شرط بسيط
كود PHP:
void OnEveryTick()
{
if(TakeProfit>0)
{
CloseBuyOrdersHiddenTP();
CloseSellOrdersHiddenTP();
}
if(StopLoss>0)
{
CloseBuyOrdersHiddenSL();
CloseSellOrdersHiddenSL();
}
}
بحيث لا تعمل الداله إلا في حالة وضعت هدف أو ستوب لوز
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
نعم الأوامر صحيحه
لكن فقط أضف شرط بسيط
كود PHP:
void OnEveryTick()
{
if(TakeProfit>0)
{
CloseBuyOrdersHiddenTP();
CloseSellOrdersHiddenTP();
}
if(StopLoss>0)
{
CloseBuyOrdersHiddenSL();
CloseSellOrdersHiddenSL();
}
}
بحيث لا تعمل الداله إلا في حالة وضعت هدف أو ستوب لوز
رائع أستاذي الحبيب :icon26:
جاري التجربة
:eh_s(7):