كيف تكون الداله صحيحه وانا مجربها على الاكسبيرت الخاص بك للبارابولك سار ولم تشتغل
الباك تيست على فريم الدقيقه
الكود موجود داخل اكسبيرتك فى المرفقات حتى لا يكون الخطأ من عندى
تفضل
Printable View
لاحظ شرط فتح الصفقات الذي وضعته
لكن لنفرض الآن أن الإكسبرت بدأ عمله ولم يتم فتح أي صفقه بعد بالتالي لن يتحقق هذا الشرط أبدا لأن العمليه الحسابيه الموجوده في الداله لن تعملكود PHP:
if(lastordertime()>20){
لذلك يمكنك إضافة شرط آخر
حتى تتأكد عند بداية فتح أول صفقه تكون الشروط محققهكود PHP:
if(lastordertime()>20||lastordertime()==0){
السلام عليكم ممكن مساعدة في ايجاد هذا الكود
https://forum.arabictrader.com/t154773.html#post2514902
اخي الكريم راح ارفق لك الاكسبيرت اتمنى انك توضحلي وين الخطاْاقتباس:
ممكن كود الريسك ريشو: اللي هو إغلاق جميع الصفقات المفتوحة اذا وصلت لنسبة خسارة معينة من الحساب .
سوف تقوم بعمل دالة لإغلاق الصفقات أولا
كود PHP:
void CloseAllOrders()
{
for (int cnt = 0 ; cnt <=OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),3*D);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePri ce(),3*D);
}
}
}
}
ثم سوف تكون شروط الإغلاق
كود PHP:
if(AccountProfit()/AccountBalance())*100<=LossPercent&&CloseAfterLoss Percent==true){
CloseAllOrders();
}
ومتغيرات الإكسبرت الخارجيه
كود PHP:
extern bool CloseAfterLossPercent=false;
extern int LossPercent=-50;
اخي اسامه اريد منك ان تصحح لي ان كنت قد اخطات في هذا الاكسبيرت وبالذات عند استخدام كود الاستوب المتحرك والايفن واداره راس المال ..لاني استخدمتهم اكثر من مره في نفس الاكسبيرت ...ياريت تعطيني اخظائي
اخي اسامه اريد منك ان تصحح لي ان كنت قد اخطات في هذا الاكسبيرت وبالذات عند استخدام كود الاستوب المتحرك والايفن واداره راس المال ..لاني استخدمتهم اكثر من مره في نفس الاكسبيرت ...ياريت تعطيني اخظائي وتضيف على الاكسبيرت خاصيه المضاعفات...ولكم جزيل الشكر والتقدير.
يمكنك بدلا من إستخدام دالة التريلينج ستوب والبريك إيفن أكثر من مره أن تضع شرط مباشرة بأن يكون الماجيك نمبر يساوي ماجيك 1 أو 2 أو 3 أو 4
بالتالي لن تحتاج إلى كتابة الداله إلا مره واحده فقط
كود PHP:
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber1||OrderMagicNumber()==Mgicnumber2||OrderMagicNumber()==Mgicnumber3||OrderMagicNumber()==Mgicnumber4)
ساحاول عمل ذلك...لكن بالنسبه للمضاعفات اريدها ان تكون بهذا الشكل مثلا انا اقوم بفتح عقد معلق من نوع sell-stop عند االساعه 17 على بعد 60 نقطه وربح 200 نقطه فاذا تفعل وكانت الخساره قد وصلت 50 نقطه يقوم الاكسبيرت باستخدام المضاعفات وذلك بفتح عقدين من نوع buy-stop بهدف 200 واذا عاكس وكانت الخساره لكل عقد 100 نقطه يقوم بفتح 3 او 4 عقود مره اخرى من نوع sell-stop بهدف احدده انا وهكذا يبقي يضاعف حتي يصل الى رقم محدد من المضاعفات احددها من اعد ادات الاكسبيرت ياريت تكون فهمت ماقصدت وهو الاكسبيرت جاهز يبقى اضافه الكود بالطريقه التي شرحتها مسبقا...
اوعلم ينتفع به .
الاخ اسامه الفاضل جزاك الله كل خير لما تقدمه لاخوانك فضلا وليس امرا كيف يمكن اضافه تنبيه مستمر على داله الشراء هذه بحيث اريد الاكسبيرت يعطيني جرس مستمر عند تحقيق الشروط وطبعا سوف اشغل ان يسالني قبل فتح الصفقه
وتقبل ودي واحترامي وشكرا مقدماكود PHP:
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,b,3,bsl,bt,"",MagicNumber,0,Green );
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
طلب اخر استاذ اسامه الفاضل وجزاك الله كل خير
اذا اردت ان اقول شمعه رتبه واحد ليست شمعه لموزين (شمعه طويله جدا )كيف يمكن التعبير برمجييا عن ذلك وتقبل ودي وشكرا
اخ اسامه قمت بدمج اكواد الاستوب المتحرك والايفن كما قلت ولكن لاحظت ان نتائج الباكتيست تختلف عما قبل الدمج رغم عدم وجود اخطاء.
اما بالنسبه لدمج اكواد اداره المال فقد حاولت ولكن لااعرف اذا كنت على صح او لا ........في المرفقات
الأفضل أن تجعل الكود بهذا الشكل
بعد أن يتفعل الأمر المعلق يضع أمر معلق آخر مضاعف إذا كان الصفقه المفتوحه بيع يفتح شراء معلق وإذا كانت الصفقه المفتوحه شراء يفتح بيع معلق
مثال
سوف تحتاج أولا لمعرفة نوع آخر صفقه فتحت حتى يكون الأمر المعلق صفقه عكسيه
ثم لمعرفة عدد الأوامر المعلقه الحاليه بحيث عندما يضع الأمر المعلق المضاعف لا يضع أوامر أخرىكود PHP:
int LastOrderType(){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber){
return(OrderType());
}
}
return(0);
}
ثم دالة لمعرفه حجم آخر لوت حتى يكون اللوت التالي مضاعفكود PHP:
int PendingOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol()&&OrderType()>OP_SELL)
{
c++;
}
}
return(c);
}
ثم ستكون شروط الدخول في الصفقهكود PHP:
double LastOrderLot(){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magicnumber){
return(OrderLots());
}
}
return(0);
}
كود PHP:
if(MyOrdersTotal(Magicnumber)>0&&PendingOrdersTotal(Magicnumber)==0){
if(LastOrderType()==OP_SELL){
double BuyPrice=Ask-Step*Point*Q;
double BuyTP=BuyPrice+Takeprofit*Point*Q;
double BuySL=BuyPrice-Stoploss*Point*Q;
ticket=OrderSend(Symbol(),OP_BUYSTOP,LastOrderLot()*2,NormalizeDouble(BuyPrice,Digits),3,BuySL,BuyTP,"",Magicnumber,0,Red);
while(ticket<0){
ticket=OrderSend(Symbol(),OP_BUYSTOP,LastOrderLot()*2,NormalizeDouble(BuyPrice,Digits),3,BuySL,BuyTP,"",Magicnumber,0,Red);Sleep(1000);
}
}
if(LastOrderType()==OP_BUY){
double SellPrice=Ask-Step*Point*Q;
double SellTP=SellPrice-Takeprofit*Point*Q;
double SellSL=SellPrice+Stoploss*Point*Q;
ticket=OrderSend(Symbol(),OP_BUYSTOP,LastOrderLot()*2,NormalizeDouble(SellPrice,Digits),3,SellSL,SellTP,"",Magicnumber,0,Red);
while(ticket<0){
ticket=OrderSend(Symbol(),OP_BUYSTOP,LastOrderLot()*2,NormalizeDouble(SellPrice,Digits),3,SellSL,SellTP,"",Magicnumber,0,Red);Sleep(1000);
}
}
}
أخى العزيز الغالى - مستر دولار
فضلا وتكرما منك ، لا أمرا
لى سؤال هل ممكن تشغيل هذا المؤشر على اكثر من ميتاتريدر لشركات مختلفه ( مثلا لأربع او خمس شركات مختلفه) وإظهار ناتجه على أى منهم ؟
مرفق المؤشر
شكرا مقدما