1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة reda-hadhod
ما شاء الله أخى الكريم أسامة كنت واثق انك سوف تقوم ببرمجت الكسبرت
هذا الاكسبرت لتقاطع عدد 2 موفنج , حاولت ان أجعلة على موفنج واحد وفشلت
أرجوا منك أخى الفاضل أن تضيف هذة الخاصية على أكسبرتك 2. MR_dollar MA Breakout v4 وهو لموفنج واحد , وبذلك سوف أعرف أين خطئى فى التعديل علية
أشكرك أخى أسامة وبارك الله فى عملك ورزقك
ودى وتقديرى
تفضل
الداله التي قمت بعملها
كود PHP:
void MovingTrailingStop()
{
int cnt,total=OrdersTotal();
double ma=iMA(Symbol(),0,MaPeriod_TS,0,MaType_TS,PRICE_CLOSE,1);
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(ma,digits)&&OrderOpenPrice()>ma)||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(ma,Digits),OrderTakeProfit(),0,Blue);
}
}
else
{
if((NormalizeDouble(OrderStopLoss(),digits)>NormalizeDouble(ma,digits)&&OrderOpenPrice()<ma)||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم ورحمة الله
أستاذي الفاضل أسامة ، محتاج اعرف طريقة استخراج قيمة اول نقطة في الباربوليك سار ، مرفق صورة ومعلم على مستوى النقطة . جزاك الله خير .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة Jmeel
السلام عليكم ورحمة الله
أستاذي الفاضل أسامة ، محتاج اعرف طريقة استخراج قيمة اول نقطة في الباربوليك سار ، مرفق صورة ومعلم على مستوى النقطة . جزاك الله خير .
وعليكم السلام ورحمة الله وبركاته
مثال
كود PHP:
double FirstBuy_Dot()
{
for(int i=1;i<Bars;i++)
{
double sar=iSAR(Symbol(),0,0.02,0.2,i);
double sar_pr=iSAR(Symbol(),0,0.02,0.2,i+1);
if(sar<Open[i]&&sar_pr>Open[i+1])
return(sar);
}
return(0);
}
double FirstSell_Dot()
{
for(int i=1;i<Bars;i++)
{
double sar=iSAR(Symbol(),0,0.02,0.2,i);
double sar_pr=iSAR(Symbol(),0,0.02,0.2,i+1);
if(sar>Open[i]&&sar_pr<Open[i+1])
return(sar);
}
return(0);
}
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم
ممكن لو سمحت يا ا اسامة او ا جميل
الكود الخاص بان يقوم الاكسبرت بالعمل باعدادات معينة set1 في ايام مثلا الاثنين والثلاثاء من كل اسبوع ثم باقي الايام ينتقل بعمل علي اعدادات set 2 اوتوماتيكيا بحيث يستدعيهم من ملف set.
وان لم يصلح هذه الفكرة او طريقة الاستدعاء,
ممكن تكون داخلية في كود الاكسبرت ,
شكرا لكما وبارك الله فيكما
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة H.O
سلام عليكم ورحمه الله وبركاته
بسم الله الرحمن الرحيم
بنسبه لهذه المشاركه هل نقوم بنسخ الكود من دالة ستارت ونضعه في هذه الحلقه ويعمل السكريبت كالاكسبرت ام هناك طريقه اخرى
ونضع الدواله الخرجيه ايضا في السكريبت ان وجدت فى الاكسبرت وهكذا
كود PHP:
while(IsStopped()==false){
}
بارك الله فيكم اخوكم ابو يوسف
وعليكم السلام ورحمة الله وبركاته
أو مثلا
كود PHP:
while(true)
{
// write the code
Sleep(1000);
}
أنا إستخدمت الداله Sleep حتى يعطي بريك بسيط للإسكربت حتى لا يهنج الميتاتريدر مثلا أو يؤثر على الرامات للجهاز
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة fxsmartsniper
السلام عليكم
ممكن لو سمحت يا ا اسامة او ا جميل
الكود الخاص بان يقوم الاكسبرت بالعمل باعدادات معينة set1 في ايام مثلا الاثنين والثلاثاء من كل اسبوع ثم باقي الايام ينتقل بعمل علي اعدادات set 2 اوتوماتيكيا بحيث يستدعيهم من ملف set.
وان لم يصلح هذه الفكرة او طريقة الاستدعاء,
ممكن تكون داخلية في كود الاكسبرت ,
شكرا لكما وبارك الله فيكما
وعليكم السلام
تحدد اليوم ثم تضع الأمر بحسب اليوم الذي تريد كمثال كود PHP:
if(DayOfWeek()==0 || DayOfWeek()==6) set;
if(DayOfWeek()==1 || DayOfWeek()==3) set1;
ومثال آخر اذا تريد تشغيل set1 كل يوم عدا يوم محدد .
كود PHP:
if(DayOfWeek() !=4 ) set1;
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة fxsmartsniper
السلام عليكم
ممكن لو سمحت يا ا اسامة او ا جميل
الكود الخاص بان يقوم الاكسبرت بالعمل باعدادات معينة set1 في ايام مثلا الاثنين والثلاثاء من كل اسبوع ثم باقي الايام ينتقل بعمل علي اعدادات set 2 اوتوماتيكيا بحيث يستدعيهم من ملف set.
وان لم يصلح هذه الفكرة او طريقة الاستدعاء,
ممكن تكون داخلية في كود الاكسبرت ,
شكرا لكما وبارك الله فيكما
وعليكم السلام ورحمة الله وبركاته
الطريقه الأسهل هي كتابة الكود مباشرة بداخل الإكسبرت
الطريقة الصعبه هي إستدعاء الإعدادات من ملف كما تريد
قمت بعمل إكسبرت بسيط به هذه الفكره بحيث يستدعي ملف بإسم Set1 ,Set2 , Set3
راجع الكود واخبرني بأي جزء لم تفهمه في الكود
يجب أن يكون ملف Set في حال الباك تست يوضع في المساره metatrader/tester/files
في حال العمل لايف يوضع في المساره metatrader/experts/files
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
سوف تضيف دالة حساب حجم اللوت
كود PHP:
double LotManage()
{
double lot = MathCeil(AccountFreeMargin() * RiskPercent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (lot);
}
ويمكنك تحديد تفعيلها أو تعطيلها من الخيارات
كود PHP:
extern bool UseMoneyManagement = false;
extern int RiskPercent = 10;
وشرط حساب حجم اللوت الجديد في حال الخساره
كود PHP:
if(LastOrderProfit()<0)
Lots=MathMax(LastOrderLot()/5,MarketInfo(Symbol(),MODE_MINLOT));
أشكرك أخي عل تعونك معي .
لقد وجدت مشكلة في هدا الكود " ,lots=MathMax(LastOrderLot()/5 "
عندما أقوم بتغيره إلى " ,lots=MathMax(LastOrderLot()*2 "
أعمل به باك تيست إدا فتح 10 صفقات خاسرة متتالية يتوقف عن العمل .
أريد أن أعف أين هية المشكلة . جزاك الله خيرا .