وعليكم السلام ورحمة الله وبركاته
نفس الكود السابق فقط بعد تحديد الأمر بإستخدام OrderSelect
قم بتعريف متغيرات وضع فيها إعدادات هذا الأمر OrderTicket , OrderOpenPrice , ... وإستخدم هذه المتغيرات بداخل الداله
Printable View
هل هذا إكسبرت أم سكربت إذا كان سكربت فلا تحتاج إلى تعديله لأنه بمجرد عمله سوف يضع الأمر المعلق ثم يتوقف عن العمل
لكن في الإسكربت لا تستخدم الدوال
كود PHP:
int init() {
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
ألسلام عليكم ورحمة الله
اريد دالة تقوم بمراقبة النقطة التالية للسعر اذا فيها عقد شراء معلق ام لا...مثلا السعر الان 1.3220 يراقب الاكسبرت النقطة 1.3221 اذا فيها عقد معلق ام لا..واذا لم تجد عقد معلق يفتح الاكسبرت عقد شراء معلق في تلك النقطة وكلما نزل السعر يراقب النقطة التالية التي بالاعلى اذا لم يوجد فيها امر مفتوح او معلق يقوم بفتح عقد معلق عندها وهكذا....ولكم جزيل الشكر.
يمكنك عمل دالة لمعرفة عدد الصفقات المفتوحه
ثم ستضع شرط قبل أمر فتح الصفقهكود PHP:
int orderscnt()
{
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()<=OP_SELL){
cnt++;
}
}
}
return(cnt);
}
كود PHP:
if(orderscnt()==0)
سوف تقوم بالبحث في الصفقات المفتوحه بإستخدام السعر
مثلا
ثم سيكون الشرط الذي تريده مثلاكود PHP:
bool IsOrderOpened(double Price)
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
double OpenPrice=OrderOpenPrice();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(NormalizeDouble(OpenPrice,digits)==NormalizeDouble(Price,digits))
{
return(true);
}
}
}
return(false);
}
كود PHP:
if(IsOrderOpened(Ask)==false)
{
// open order
}
اقتباس المشاركة الأصلية كتبت بواسطة zzeyani مشاهدة المشاركة
إنه expert advisors لكنه يقوم بفتح أوامر معلقة كلما تحرك السعر بنقطة واحدة وأ ريد تعديله لكي يفتح أمر معلق واحد فقط. ولا يفتح صفقتين في نفس الزوج نهاإيا.
يمكنك أن تجربه على eur usd.
هل يمكنك أن تقوم بتعديله على هدا إكسبيرت ولك جير الشكر
السلام عليكم ورحمة الله وبركاته
أستاذي العزيز مستر دولار تم تركيب الدالة بنجاح، لكن في أمر مهم جدا وهو يجب إلغاء شرط الاغلاق العكسي الرابح عند ظهور إشارة عكسية للصفقة الأولى اللي كانت عاكسة علينا وأصبحت موجبة :doh:
مثال توضيحي :
عند التوقيت A ظهرت إشارة شراء وتم فتح صفقة شراء b1
عند التوقيب B ظهرت إشارة بيع وتم فتح صفقة بيع s1 ولدينا الصفقة b1 خاسرة
عند التوقيت C ظهرت إشارة شراء وعليه تم إغلاق صفقة البيع s1 لأنها موجبة ولم تدخل بحساب الريكفري زون
عند التوقيت D ظهرت إشارة بيع وتم فتح صفقة بيع s2 وصفقة الشراءb1 موجبة (هنا لا يجب عمل إغلاق عكسي رابح للشراء b1 لأنه المفروض تحقق هدف الريكفري زون ثم يليه الاغلاق العكسي )
دالة الاغلاق العكسي الرابح بناء على اشارة المؤشر هي كالتالي:
وبدمجها مع دالة الركفري زون يحدث تناقض بالشروط حيث يتم دائما الاغلاق العكسي الرابح قبل تحقق هدف الركفري زونكود PHP:
//+------------------CLOSE OPPOSITE SIGNAL CONDITIONS------------------------------------------------+
void TechnicalAnalysis3()
{
double H1=iCustom(NULL, NULL, "Hَ",1,1);
double H2=iCustom(NULL, NULL, "ََH",2,1);
int cnt=OrdersTotal();
for(int i=cnt-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==OP_SELL&&OrderProfit()>0)
if(CloseOppositeSignal&&H1>H2)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);
}
}
}
return(0);
}
void TechnicalAnalysis4()
{
double H1=iCustom(NULL, NULL, "H",1,1);
double H2=iCustom(NULL, NULL, "H",2,1);
int cnt=OrdersTotal();
for(int i=cnt-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==OP_BUY&&OrderProfit()>0)
if(CloseOppositeSignal&&H1<H2)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);
}
}
}
return(0);
}
أريد العكس: يتحقق هدف الريكفري زون ثم يليه الاغلاق العكسي الرابح
فهل يوجد حل للمشكلة ؟ أم أن كل شروط الاغلاق متناقضة !
تحياتي وتقديري لشخصكم الكريم