اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex (https://fx-arabia.com/vb/index.php)
-   منتدى المؤشرات و الاكسبيرتات (https://fx-arabia.com/vb/forumdisplay.php?f=6)
-   -   موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4 (https://fx-arabia.com/vb/showthread.php?t=34302)

اسلام العوامى 04-06-2016 01:48 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة بهاء الدين (المشاركة 873250)
السلام عليكم
في ىالمحاضرة 9 من دروس البرمجة الاحترافية حاولت التطبيق على المنصة البرنامج لكن البرنامج لا يفتح صفقات و يظهر الخطا130 .كود البرنامج كما يلي .ارجو المساعدة من الاخوة المبرمجين لمعرفة الخطا بالتحديد

extern string F = "fast ma setting";
extern int fperiod = 10;
extern int fshift = 0;
extern int fmethod = 0;
extern int fapplied = 0 ;
extern string S = "slow ma setting";
extern int speriod = 50;
extern int sshift = 0;
extern int smethod = 0;
extern int sapplied = 0;
extern string e = "ea managment";
extern int Takeproft = 50;
extern int Stoploss = 20;
extern double Lot = 0.1;
extern int Magic = 112255;
int T;


//--------------------------------------------------------------------------------------------------------------
int start()
{
double tiksize = MarketInfo(Symbol(),MODE_TICKSIZE);

T=1; if(Digits==5||Digits==3){T=10;}


double fmalast = iMA(Symbol(),0,fperiod,fshift,fmethod,fapplied,2);
double fmanow = iMA(Symbol(),0,fperiod,fshift,fmethod,fapplied,1);
double smalast = iMA(Symbol(),0,speriod,sshift,smethod,sapplied,2);
double smanow = iMA(Symbol(),0,speriod,sshift,smethod,sapplied,1);
if(fmalast<smalast&&fmanow>smanow)

OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-(Stoploss*Point*T),Ask+(Takeproft*Point*T),NULL,Magic,0,clrAliceBlue);

if(fmalast>smalast&&fmanow<smanow)

OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+(Stoploss*Point*T),Bid-(Takeproft*Point*T),NULL,Magic,0,clrRed);


return (0);
}
//---------------------------------------------------------------------------------------------------------------

،،،اهلا بك اخي الفاضل ، قم بعمل التعديلات الموجوده بالاقتباس باللون الاحمر وسيعمل الاكسبيرت بشكل سليم،،،

،،،تحياتي،،،

بهاء الدين 04-06-2016 04:08 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اشكرك اخي و بارك الله فيك

Pips Hunter 04-06-2016 05:19 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
السلام عليكم
اخى الكريم اسلام
عندى استفسار وهو ان عندى مؤشر رقمي مهمته هو حسابه بعض البيانات مثل قيمة الموفنج 200 على فريمات مختلفة فى نفس الوقت
احاول ان اعمل باك تست له ولكن المشكلة اثناء الباك تست ان البيانات التى يعطيها المؤشر كلها غلط عدا بيانات نفس الفريم الى التست عليه فقط رغم انه فى الواقع والحقيقة غير كدة وبيحسب كل الفريمات فى وقت واحد
لذلك الباك تست بيخلى المؤشر لايعمل بشكل صحيح الا على الفريم الى التست شغال عليه فقط ،، رغم انه يعمل على 4 فريمات فى وقت واحد فى الحالة الطبيعيه وهو 1 - 5 - 15 - 30 دقيقة
فهل يوجد حل برمجي لهذه المشكلة ؟؟

اسلام العوامى 04-06-2016 05:54 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Pips Hunter (المشاركة 873277)
السلام عليكم
اخى الكريم اسلام
عندى استفسار وهو ان عندى مؤشر رقمي مهمته هو حسابه بعض البيانات مثل قيمة الموفنج 200 على فريمات مختلفة فى نفس الوقت
احاول ان اعمل باك تست له ولكن المشكلة اثناء الباك تست ان البيانات التى يعطيها المؤشر كلها غلط عدا بيانات نفس الفريم الى التست عليه فقط رغم انه فى الواقع والحقيقة غير كدة وبيحسب كل الفريمات فى وقت واحد
لذلك الباك تست بيخلى المؤشر لايعمل بشكل صحيح الا على الفريم الى التست شغال عليه فقط ،، رغم انه يعمل على 4 فريمات فى وقت واحد فى الحالة الطبيعيه وهو 1 - 5 - 15 - 30 دقيقة
فهل يوجد حل برمجي لهذه المشكلة ؟؟

،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،اهلا بك اخي الفاضل ، يجب الاطلاع علي كود المؤشر لمعرفة المشكلة وبالتالي ايجاد حل لها،،،

،،،تحياتي،،،

Pips Hunter 04-06-2016 06:02 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 873280)


،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،اهلا بك اخي الفاضل ، يجب الاطلاع علي كود المؤشر لمعرفة المشكلة وبالتالي ايجاد حل لها،،،

،،،تحياتي،،،

تفضل اخى اسلام
فى المؤشر 8 strings
MA1
MA2
MA3
الي اخري وفكرة عمل المؤشر انه يحسب مدي بعد السعر الحالى ارتفاعا او انخفاضا عن خط الموفنج لفريم معين
من 1 الي 8 على 8 فريمات مختلفة لمعرفة اتجاة الترند العام

Pips Hunter 04-06-2016 06:03 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
1 مرفق
المؤشر فى المرفقات

rami.signals 23-06-2016 08:23 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
السلام عليكم

هل من مستجيب لسؤالي لو تكرمتوا
ما خليت غوغل ومنتديات ومبرمجين وشركات إلا و سألتهم و لا يوجد رد حتى الأن

أريد كود تبريد الصفات ياجماعة طلعت روحي وما كنت حصل هذا الكود أرجو المساعدة

اسلام العوامى 23-06-2016 10:22 PM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
اقتباس:

المشاركة الأصلية كتبت بواسطة rami.signals (المشاركة 876132)
السلام عليكم

هل من مستجيب لسؤالي لو تكرمتوا
ما خليت غوغل ومنتديات ومبرمجين وشركات إلا و سألتهم و لا يوجد رد حتى الأن

أريد كود تبريد الصفات ياجماعة طلعت روحي وما كنت حصل هذا الكود أرجو المساعدة

،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،اهلا بك اخي الفاضل ، الكود موجود بالمشاركة علي الرابط التالي،،،

http://www.fx-arabia.com/vb/showpost...&postcount=559

،،،تحياتي،،،

rami.signals 24-06-2016 01:17 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
أستاذ إسلام العوامي

بداية الأمر أشكرك كل الشكر على الرد و انا أتابع فيديوهاتك على اليوتيوب للبرمجة والشكر و التقدير لك على هذه الدروس

لكن الكود الذي أريد هو للتبيريد
و إليك الشرح
1- عندي أكسبرت مفتوح أريد إضافة بعض التعديلات عليه وهي كالتالي

1- عنما يفتح الاكسبرت صفقة بيع مثلا ب 1 لوت في حال خسرت الصفقة 30 أو 40 نقطة فسيقوم الأكسبرت بفتح صفقة بيع أخرى بقيمة 1.4 لوت مثلا و هكذا وفي حال عكس الصفقتين الأولى 80 نقطة والثانية 40 نقطة فسيقوم الاكسبرت بفتح صفقة 1.96 وهكذا تكون المتتالية وسيقوم الأكسبرت بتحريك الهدف لجميع الصفقات بحيث أخرج بربح نهائي 10 نقاط أو 15 ن
هذا الكود الذي أريده أولا

ثانيا : أريد كود أن لايسمح الأكسبرت إلا بفتح زوج واحد في حال تحققت شروط الدخول مع العلم أنني أضع الأكسبرت على جميع الشارتات ( المشكلة التي أوجاهها الأن أن الأكسبرت يفتح عدة أزواج مع بعض لأنه يجد تحقق الشروط في عدة أزواج

بارك الله فيك أستاذ إسلام وطموحي أن أصبح مبرمج وإنشاء الله سأصل على يدك

rami.signals 24-06-2016 01:27 AM

رد: موضوع مخصص للاسئلة والاستفسارات الخاصة بدورة تعليم البرمجة الاحترافية بلغة mql4
 
input int MagicNumber=1982; //Magic Number
input double Lots=0.1; //Fixed Lots
input double StopLoss=50; //Fixed Stop Loss (in Points)
input double TakeProfit=150; //Fixed Take Profit (in Points)
input int TrailingStop=15; //Trailing Stop (in Points)
input int Slippage=3;


//+------------------------------------------------------------------+
//| expert OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if(TotalOrdersCount()==0)
{
int result=0;
if((iRSI(NULL,PERIOD_H1,14,PRICE_CLOSE,0)<50) && (iRSI(NULL,PERIOD_H4,14,PRICE_CLOSE,0)<50) && (iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0)<50)) // Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage ,0,0,"RAMI V2_5M BUY AUTO",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
int MyOrderSelect=OrderSelect(result,SELECT_BY_TICKET) ;
int MyOrderModify=OrderModify(OrderTicket(),OrderOpenP rice(),NormalizeDouble(TheStopLoss,Digits),Normali zeDouble(TheTakeProfit,Digits),0,Green);
}
}
if((iRSI(NULL,PERIOD_H1,14,PRICE_CLOSE,0)>50) && (iRSI(NULL,PERIOD_H4,14,PRICE_CLOSE,0)>50) && (iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0)>50)) // Here is your open buy rule
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippag e,0,0,"RAMI V2_5M SELL AUTO",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
int MyOrderSelect=OrderSelect(result,SELECT_BY_TICKET) ;
int MyOrderModify=OrderModify(OrderTicket(),OrderOpenP rice(),NormalizeDouble(TheStopLoss,Digits),Normali zeDouble(TheTakeProfit,Digits),0,Green);
}
}
}

for(int cnt=0;cnt<OrdersTotal();cnt++)
{
int MyOrderSelect=OrderSelect(cnt,SELECT_BY_POS,MODE_T RADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)

if(OrderType()==OP_BUY)
{
if((iRSI(NULL,0,14,PRICE_CLOSE,0)>800)) //here is the close buy condition
{
int MyOrderClose=OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(),Slippage,Red);
}
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
int MyOrderModify=OrderModify(OrderTicket(),OrderOpenP rice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
}
}
}
}
else
{
if((iRSI(NULL,0,14,PRICE_CLOSE,0)<-800)) // here is the close sell condition
{
int MyOrderClose=OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(),Slippage,Red);
}
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
int MyOrderModify=OrderModify(OrderTicket(),OrderOpenP rice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(), 0,Red);
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| expert TotalOrdersCount function |
//+------------------------------------------------------------------+
int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
int MyOrderSelect=OrderSelect(i,SELECT_BY_POS,MODE_TRA DES);
if(OrderMagicNumber()==MagicNumber) result++;

}
return (result);
}

//+------------------------------------------------------------------+
//| expert Start function
//+------------------------------------------------------------------+

void drawshap(string name,color LineColor,double Price1,double Price2,datetime Time1,datetime Time2)
{
if(ObjectFind(name) == -1)
{
ObjectCreate(name, OBJ_RECTANGLE, 0, Time1,Price1,Time2,Price2);
ObjectSet(name, OBJPROP_COLOR, LineColor);
ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(name, OBJPROP_WIDTH, 2);
}
else if(ObjectGet(name,OBJPROP_TIME1)!=Time1||ObjectGet (name,OBJPROP_PRICE1)!=Price1){
ObjectDelete(name);
}
}









//+------------------------------------------------------------------+

double lastOpenPrice(){
datetime d =0;
double xt =0;
int total = OrdersTotal();

for (int cnt = 0 ; cnt <= total ; cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol()&&OrderMagicNumber()==Magi cNumber)
{
if (OrderOpenTime()>d) {d=OrderOpenTime(); xt=OrderOpenPrice();}
}
}
return(xt);
}


الساعة الآن 08:23 AM

Powered by vBulletin® Copyright ©2000 - 2024

جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com