استاذي الكريم اسامة والله العظيم انت مرجع قيم وذخر حقيقي للمنتدى بارك الله فيك اخي الكريم ونور طريقك
تصور اني امر على هذا الموضوع كلما سنحت لي الفرصة لاتمتع بافكارك الجميلة واكوادك الممتعة
تقبل مني اسمى عبارات التقدير والمحبة استاذي الغالي
Printable View
السلام عليكم ورحمة الله تعالى وبركاته
كيف اجبر الاكسبرت على عدم فتح صفقة اخرى الا بعد مرور 5 ثواني او 6
استعملت سابقا الدالة(sleep(5000
بعد ارسال الامر ليتوقف الاكسبرت 5 ثواني لكني لاحضت في بعض الاحيان ان الاكسبرت يتجمد راسلت الدعم واخبرني ان اتجنب الدالة سليب
هل هناك طريقة اخرى بارك الله فيك
سؤال للاخوة الخبراء
كيف اجعل اللوت فى الاكسبيرت يكون بناءا على نسبة مخاطرة معينة من الحساب لانه احيانا تكون الستوبات متغيرة احيانا 50 نقطة واحيانا 100 نقطة على حسب شروط الاستراتيجية
اريد ان اجعل المخاطرة متساوية دائما
يعنى اذا كانت المخاطرة المطلوبة 50 دولار ورصيد الحساب 1000 دولار
فعندما يكون الستوب 50 نقطة يتم الدخول الصفقة بواحد دولار للنقطة
وعندما يكون الستوب 25 نقطة يتم دخول الصفقة ب2 دولار للنقطة
وعندما يكون الستوب 100 نقطة يتم دخول الصفقة بنصف دولار للنقطة ...وهكذا تكون المخاطرة متساوية فى كل الصفقات وهى 50 دولار فى حالة الخسارة
تحياتى
قم بعمل دالة تحسب توقيت فتح آخر صفقه ثم قارنها بالتوقيت الحالي
مثال
ثم سيصبح الشرطكود PHP:datetime LastOrderOpenTime()
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderOpenTime())
}
}
return(0);
}
كود PHP:if(TimeCurrent()-LastOrderOpenTime()>=5)
مثال
حيث RiskToLoss هي الخسارة بالدولار التي تريدهاكود PHP:if(Digits==5||Digits==3)pt=10;
else pt=1;
pip_value= MarketInfo(Symbol(),MODE_TICKVALUE)*pt;
if(pip_value==0)pip_value=1;
double lots=NormalizeDouble(RiskToLoss/StopLoss/pip_value,2);
و StopLoss هو عدد نقاط الاستوب لوز
شكرا استاذ مستر دولار
انا اضفت الكود لكن الاكسبيرت لم يتعرف على pt و pip_value عموما انا عملتلهم تعريف خارجى double pt,pip_value;
لكن فى الباك تست حجم الصفقات الخاسرة متغيرة يفترض انها تكون متساوية يعنى مثلا احيانا يكون الستوب 170 نقطة وحجم العقد4.50 وصفقات اخرى حجم العقد مقارب لكن الستوب صغير
ممكن القاء نظرة على هذا الكود لاكسبيرت تقاطع السعر للموفينج انا كتبت الكود به
كود://+------------------------------------------------------------------+
//| ppp.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern double MagicNumber ;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
double ma1,ma2,ma3;
ma1=iMA(NULL,0,15,0,MODE_SMA,PRICE_CLOSE,1);
ma2=iMA(NULL,0,15,0,MODE_SMA,PRICE_CLOSE,2);
ma3=iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,1);
double Speed=MathAbs(ma3-Close[1])/Point;
Comment(Speed);
double Speed2=Speed+400;
double SL,TP;
if ( ma1>ma3&&Close[2]<ma2&&Close[1]>ma1 ){
SL=Ask-Speed2*Point;
TP=Ask+Speed2*Point;
double pt,pip_value;
if(Digits==5||Digits==3)pt=10;
else pt=1;
pip_value= MarketInfo(Symbol(),MODE_TICKVALUE)*pt;
if(pip_value==0)pip_value=1;
double lots=NormalizeDouble(50/SL/pip_value,2);
//////////////
OrderSend(Symbol(),OP_BUY,lots,Ask,3,SL,TP,"klk",MagicNumber,0,Blue);
PlaySound("Alert.wav");}}
//+------------------------------------------------------------------+
السلام عليكم أخي اسامة وصباح الخيرات في فجر يوم جديد
أتمنى من الله أن يرزقك أنت وأهلك الصحة والعافية لما تقدمة من خير لنا في منتدانا الغالي المتداول العربي
لدي سؤال وارجوا من الله أن يوفقك بالرد الشافي الذي يثلج صدري فيه
أريد داله او طريقه معينة لاغلاق جميع الصفقات الموجوده على المنصة بضغطة واحده ( معلق + مفتوح )
لاني استخدم سكربتات كثيره لاغلاق الصفقات ولكن للأسف تتاخر حتى اغلاق اخر صفقة لمدة قد تصل إلى 5 ثواني
فاذا في طريقة معينة او دالة لاسكربت تقوم بالاغلاق الفوري اكون لك من الشاكرين
علماً بأن المنصة التي اتعامل معاها لا تستخدم خاصية Close By أو Multiple Close By
فما الحل يا باشا ؟؟؟؟؟
وجزاك الله عنا كل خير
كيف اكتب التاك بروفيت والاستوب لوز لكتلك الاوامر
OP_BUYSTOP
OP_BUYLIMIT
OP_SELLSTOP
OP_SELLLIMIT
يعنى الامر هذا مثلاكيف اضع التاك بروفيت والاستوب لوس لكل الاوامر الاربعةكود PHP:OrderSend(Symbol(),OP_SELLLIMIT,.......................................................... ,0,0,0000000000000000);
وماذا اكتب مكان الزيرو ... هل نفس الكود لكل الاوامر معا ؟
يعنى هل بيختلفوا فى الصيغه ؟
أرجوا المساعدة
جزاك الله خير استاذ اسامة ولكن سرعة اتصالي بالانترنت عالية واظن سرعة اتصالي بسرفر البروكر ايضا كبيرة ولكن الصفقات لا تغلق دفعة واحده
أتوقع استاذ أسامة لا توجد أخطاء في الاسكربت وهو مرفق لطلب حضرتك ولكن أنا أبحث عن وسيله أخرى تغلق جميع الصفقات في اقل من ثانية مهما كان عددها المفتوح او المعلق في المنصة
لان حضرتك تعلم ما هي الـ 5 ثواني في التأخير لاغلاق جميع الصفقات لاستراتيجية اسكالبنج
وشكرا لك
الهدف والأستوب لوز يحدد بناء على سعر دخول الصفقه زائد أو ناقص الهدف أو الأستوب حسب نوع الأمر طبعا
مثلا لو كان سعر أمر الشراء وكان سعر الأمر المعلق هو هاي الصفقه السابقه
فسوف يصبح الأمر
نفس الفكره تنطبق على جميع الأوامر المعلقه لكن بالنسبه لأمر البيع المعلق فسوف يصبح الهدف هو سعر الدخول ناقص عدد نقاط الهدف والأستوب هو سعر الدخول زائد عدد نقاط الاستوب لوزكود PHP:double SL,TP;
double price=High[1];
if(StopLoss!=0)SL=price-StopLoss*Point;
if(TakeProfit!=0)TP=price+TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(price,Digits),3,SL,TP,"EA",MagicNumber,0,Blue);