1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ابواحمد222
عفوا مستر دولار انا ابحث عن اي موضوع برمجي يوجد به اضافه برمجه TrailingStop والمعادلات المسئووله عن اضافه هذه الخاصيه من باب التعلم ليس اكثر وشكرا على سعه صدرك اخي الفاضل واعتذر مره اخرى
دي دالة التريلنج أستوب من إكسبيرت من عمل أستاذ أسامة (مستر دولار )
كود PHP:
void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
وتقوم بتعريف متغيرين خارجين مثلاً
كود PHP:
extern int TrailingStop=40;
extern int TrailingStep=10;
وتضع في دالة إستارت
كود PHP:
if(TrailingStop>0)MoveTrailingStop();
مرفق إكسبيرت أستاذ أسامة للإطلاع
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
نعم قد تزيد بطئ الإكسبرت خصوصا إذا كان عدد الصفقات المفتوحه كبير لكن غالبا لن يكون هذا البطئ ملحوظ
أنت إستخدمت الحلقه
كود PHP:
for(i=OrdersTotal();i>0;i--){
CloseOrders();}
ولست بحاجة لإستخدامها لأن الداله CloseOrders بها الحلقه بداخلها للبحث عن الصفقات وقد يتم إغلاق كل الصفقات من أول مره بالتالي لن تحتاج إلى إستخدام الحلقه الخارجيه
جزاك الله خيرا ، تم حذفها وبالفعل انا استخدمت الحلقة داخل دالة CloseOrders ولكن في بعض الأحيان وجدت ان الدالة لاتقوم بإغلاق كل الصفقات المفتوحة على المنصة والسبب كان من تعريف خطـأ داخل دالة الإغلاق
كود PHP:
int _total=orderstotal();
كود PHP:
int _total=OrdersTotal();
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم اخ اسامه
عندي مشكله بسيطه بالاكسبيرت وهو عند حذف الصفقات
هو مبرمج ان يحذف جميع الصفقات المعلقه عند نهايه الاسبوع ولكن عندما ارفع عدد اللوت يقوم احيانا اوفي بعض الاسابيع بحذف بعض الصفقات وليس كلها في وسط الاسبوع اي ليس كماهو مبرمج .....هل من تعديل و تفسير؟
رد:موضوع مخصص للأسئلة البرمجية
كود PHP:
#property copyright "Copyright 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int K_Period_=5;
extern int D_Period_=3;
extern int Slowing_=3;
extern int StopLoss_=6;
extern int TakeProfit_=10;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,1)>20 && OrdersTotal()==0)
OrderSend(Symbol(),OP_BUY,0.01,Ask,30,Ask-100*Point,Ask+700*Point,"",15000,0,Green);
if (iStochastic("EURUSD",PERIOD_M5,5,3,3,0,0,0,1)<80 && OrdersTotal()==0)
OrderSend(Symbol(),OP_SELL,0.01,Bid,30,Bid+700*Point, Bid-100*Point,"",15000,0,Red);
//----
return(0);
}
//+------------------------------------------------------------------+
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
جزاك الله كل خير مستر دولار وجعل مثواك الجنه ان شاء الله
رد:موضوع مخصص للأسئلة البرمجية
هل هذه الداله صحيحه
اريد ان اجعل البرنامج لا يفتح صفقه جديده الا ان يمر 20 دقيقه على الصفقه السابقه التى اغلقت
كود PHP:
double lastordertime(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
double it=Time[i];
double tn=(TimeCurrent())-(it)/60;
return(tn);
}}
الاستدعاء
كود PHP:
if(lastordertime()>20){
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة wikileaks
من فظلكم كيف يمكن برمجة هذا؟
كل صفقه لها تلينغ ستوب خاص بها علما ان الإكسبيرت يمكن ان يفتح اكثر من صفقه في نفس الوقت ؟
عدد نقاط تريلينغ ستوب لكل صفقه = (فارق النقاط بين الدخول و ستوب لوز)
اذا كنت تسأل عن برمجة كود تريلنج استوب
ففى الاعلى الاخ الفاضل واضع مشاركه عن التريلنج استوب
https://forum.arabictrader.com/t3761...ml#post2510954
ولاكن يوجد فى البرنامج الميتا تريدر خاصية التريلنج استوب بالنقاط التى تحددها فلماذا تبحث عن اكسبيرت خارجى لعملها