منتديات بورصات

منتديات بورصات (https://forum.borsaat.com/)
-   منتدى المؤشرات و الاكسبرتات (https://forum.borsaat.com/f14/)
-   -   تبادل الخبرات في برمجة MQL (https://forum.borsaat.com/t933685.html)

rami.signals 26 - 06 - 2016 02:51 AM

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

1- اضافة كود تبريد الصفقات بحيث عندما يفتح أول صفقة بيع مثلا بلوت 0.10 فلو عكست الصفقة الحالية 30 نقطة مثلا سيقوم الأكسبرت بفتح صفقة بيع إضافية بلوت أعلى من السابق بعامل ضرب 1.4 يعني الصفقة التالية 0.14 لوت وفي حال عكست الصفقة الثانية 30 نقطة أخرى سيقوم الأكسبرت بفتح صفقة 0.14*1.4 = 0.19 او 0.20 ويقوم بتحريك الأهداف لكل الصفقات بحيث يخرج بربح نهائي من 10 ل 15 نقطة
2- أضافة كود أن لايأخذ أكثر من زوج واحد عندما تتحقق شروط الدخول وعندما يغلق الصفقات للزوج الحالي يستطيع فتح لزوج أخر إذا تحققت الشروط
3- اضافة كود تحكم بسرعة السوق فلو كانت حركة السوق سريعة جدا بسبب خبر أو شيئ أخر أستطيع التحكم بشروط دخول الصفقة بشروط أخرى وإليك الكود المراد الأضافات عليه
اقتباس:


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)>60) && (iRSI(NULL,PERIOD_H4,14,PRICE_CLOSE,0)>40) && (iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0)>35)) // 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);
}
}









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


أبو وهج 07 - 07 - 2016 08:10 AM

رد: تبادل الخبرات في برمجة MQL
 
قمة العطاء ....
شكرا ابا ابراهيم وفقك الله

السمحان1 30 - 07 - 2016 01:17 AM

رد: تبادل الخبرات في برمجة MQL
 
السلام عليكم
هل توجد معادله تكون ابسط من هذا الكود
[PHP]if (Lots==0.0) {
if(AccountBalance()<=5) Lots = 0.01 ;
if(AccountBalance()>=25) Lots = 0.02 ;
if(AccountBalance()>=100) Lots = 0.07 ;
if(AccountBalance()>=300) Lots = 0.19 ;
if(AccountBalance()>=400) Lots = 0.51 ;
if(AccountBalance()>=1000) Lots = 1.3 ;
if(AccountBalance()>=5000) Lots = 2.6 ;
if(AccountBalance()>=15000) Lots = 6.0 ;
if(AccountBalance()>=50000) Lots = 14.0;
if(AccountBalance()>=100000) Lots = 29.0 ;
if(AccountBalance()>=200000) Lots = 50.0 ;
if(AccountBalance()>=500000) UseRiskPercent = TRUE ;} [/PHP]
هذه الشروط وضعتها للتحكم بقيمه اللوت وتعمل بشكل جيد ولكن للاسف انها تبطئ من عمل الاكسبيرت قليلا
هل يوجد معادله او كود ابسط واخف

سمير محمد ارمان 01 - 08 - 2016 01:31 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة السمحان1 (المشاركة 2174985)
السلام عليكم
هل توجد معادله تكون ابسط من هذا الكود
[PHP]if (Lots==0.0) {
if(AccountBalance()<=5) Lots = 0.01 ;
if(AccountBalance()>=25) Lots = 0.02 ;
if(AccountBalance()>=100) Lots = 0.07 ;
if(AccountBalance()>=300) Lots = 0.19 ;
if(AccountBalance()>=400) Lots = 0.51 ;
if(AccountBalance()>=1000) Lots = 1.3 ;
if(AccountBalance()>=5000) Lots = 2.6 ;
if(AccountBalance()>=15000) Lots = 6.0 ;
if(AccountBalance()>=50000) Lots = 14.0;
if(AccountBalance()>=100000) Lots = 29.0 ;
if(AccountBalance()>=200000) Lots = 50.0 ;
if(AccountBalance()>=500000) UseRiskPercent = TRUE ;} [/PHP]هذه الشروط وضعتها للتحكم بقيمه اللوت وتعمل بشكل جيد ولكن للاسف انها تبطئ من عمل الاكسبيرت قليلا
هل يوجد معادله او كود ابسط واخف

السلام عليكم اخى الكريم
بعد الوصول الى الطريقة الصحيحه من منتدى الجيران
ارجو وضع الطريقة الصحيحه هنا فى الموضوع
حتى يكون الموضوع من اسمه تبادل الخبرات
تحياتى لك

السمحان1 01 - 08 - 2016 06:59 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

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

نعم استاذي سمير شكرا لتذكيرك لي
الطريقه الصحيحه والاخف على الاكسبيرت كالتالي
[PHP]if(AccountBalance()>= 25&&AccountBalance()< 100) Lots = 0.02 ;
else if(AccountBalance()>= 100&&AccountBalance()< 300) Lots = 0.07 ;
else if(AccountBalance()>= 300&&AccountBalance()< 400) Lots = 0.19 ;
else if(AccountBalance()>= 400&&AccountBalance()< 1000) Lots = 0.51 ;
else if(AccountBalance()>= 1000&&AccountBalance()< 5000) Lots = 1.3 ;
else if(AccountBalance()>= 5000&&AccountBalance()< 15000) Lots = 2.6 ;
else if(AccountBalance()>= 15000&&AccountBalance()< 50000) Lots = 6.0 ;
else if(AccountBalance()>= 50000&&AccountBalance()< 100000) Lots = 14.0;
else if(AccountBalance()>= 100000&&AccountBalance()< 200000) Lots = 29.0 ;
else if(AccountBalance()>= 200000&&AccountBalance()< 500000) Lots = 50.0 ;
else if(AccountBalance()>= 500000) UseRiskPercent = TRUE ; [/PHP]

سمير محمد ارمان 02 - 08 - 2016 03:25 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة السمحان1 (المشاركة 2176962)
نعم استاذي سمير شكرا لتذكيرك لي
الطريقه الصحيحه والاخف على الاكسبيرت كالتالي
[PHP]if(AccountBalance()>= 25&&AccountBalance()< 100) Lots = 0.02 ;
else if(AccountBalance()>= 100&&AccountBalance()< 300) Lots = 0.07 ;
else if(AccountBalance()>= 300&&AccountBalance()< 400) Lots = 0.19 ;
else if(AccountBalance()>= 400&&AccountBalance()< 1000) Lots = 0.51 ;
else if(AccountBalance()>= 1000&&AccountBalance()< 5000) Lots = 1.3 ;
else if(AccountBalance()>= 5000&&AccountBalance()< 15000) Lots = 2.6 ;
else if(AccountBalance()>= 15000&&AccountBalance()< 50000) Lots = 6.0 ;
else if(AccountBalance()>= 50000&&AccountBalance()< 100000) Lots = 14.0;
else if(AccountBalance()>= 100000&&AccountBalance()< 200000) Lots = 29.0 ;
else if(AccountBalance()>= 200000&&AccountBalance()< 500000) Lots = 50.0 ;
else if(AccountBalance()>= 500000) UseRiskPercent = TRUE ; [/PHP]

جزاك الله كل خير
شكرا لك والى من ساعد
تحياتى لك

القيرواني 11 - 08 - 2016 11:46 PM

رد: تبادل الخبرات في برمجة MQL
 
سؤال :
هل يمكن عمل اكسبيرت يفتح صفقة معتمدا على الأشارة من أربع فريمات مثلا ؟ وشكرا لكم .

سمير محمد ارمان 13 - 08 - 2016 01:55 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة القيرواني (المشاركة 2186697)
سؤال :
هل يمكن عمل اكسبيرت يفتح صفقة معتمدا على الأشارة من أربع فريمات مثلا ؟ وشكرا لكم .

السلام عليكم
ممكن ان شاء الله
فى خانة الفريم يتم وضع التوقيت المطلوب
مثال على مؤشر الموفينج
[PHP] double Mov1_200=iMA(Symbol(),PERIOD_D1,200,0,MODE_SMA,PRI CE_CLOSE,1);


double Mov2_200=iMA(Symbol(),PERIOD_H4,200,0,MODE_SMA,PRI CE_CLOSE,1);


double Mov3_200=iMA(Symbol(),PERIOD_H1,200,0,MODE_SMA,PRI CE_CLOSE,1); [/PHP]كما مبين الموفينج 200 يعمل على فريم اليومى وهو PERIOD_D1
يعمل على فريم اربعة ساعات PERIOD_H4
يعمل ايضا على الساعة PERIOD_H1
مع التحكم فى التوقيت من الشهرى الى الدقيقة
لو تريد شرح كل طريقة عمل تظليل على الشيء المطلوب
اضغط من لوحة المفاتيح على f1
يظهر لك كتاب المساعده من mql4
يشرح لك طريقة عمل كل شئ
تحياتى لك

القيرواني 13 - 08 - 2016 07:07 PM

رد: تبادل الخبرات في برمجة MQL
 
جزاك الله خيرا وسلمت لنا.

سمير محمد ارمان 13 - 08 - 2016 07:45 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة القيرواني (المشاركة 2188008)
جزاك الله خيرا وسلمت لنا.

بالتوفيق ان شاء الله


10:24 AM

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.