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

منتديات بورصات (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)
جزاك الله خيرا وسلمت لنا.

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

القيرواني 15 - 08 - 2016 05:36 PM

رد: تبادل الخبرات في برمجة MQL
 
كيف نكتب كود OrdersTotal ؟ حتى نتحكم في عدد العقود المفتوحة . وشكرا

سمير محمد ارمان 16 - 08 - 2016 09:24 AM

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

المشاركة الأصلية كتبت بواسطة القيرواني (المشاركة 2189721)
كيف نكتب كود OrdersTotal ؟ حتى نتحكم في عدد العقود المفتوحة . وشكرا

يتم وضع هذه الدالة
خارج كل الاقواس الموجوده
[PHP] int ordestotal1_2(int type)
{
int total_2=0;
for(int b=0;b<OrdersTotal();b++){
if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagi cNumber()&&OrderType()==type){
total_2++;
}
}
return(total_2);
} [/PHP]

داخل دالة OnTick
يتم وضع كود التحكم فى عدد الصفقات ونوع الصفقات بيع او شراء

[PHP] if(ordestotal1_2(OP_BUY)==0&&ordestotal1_2(OP_SELL )==0){
open(OP_SELL,Lots(MaxRisk),Bid,TakeProfit,StopLoss ) ;
} [/PHP]

القيرواني 16 - 08 - 2016 11:58 AM

رد: تبادل الخبرات في برمجة MQL
 
شكرا ,بارك الله فيك وفي جميع القائمين على هذا المنتدى .

سمير محمد ارمان 16 - 08 - 2016 06:52 PM

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

المشاركة الأصلية كتبت بواسطة القيرواني (المشاركة 2190476)
شكرا ,بارك الله فيك وفي جميع القائمين على هذا المنتدى .

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

القيرواني 26 - 09 - 2016 03:11 PM

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

smowaled 05 - 10 - 2016 10:51 PM

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

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

بما أن المثلث يرسم على الشارت إذاً هو عبارة عن Object ولهذا تستطيع معرفة أسمه عن طريق Objects List وعندها تستطيع في الأكسبيرت أن تستخدم دالة ObjectGet كما يلي

[PHP]
color triColor=ObjectGet("YOURTRIANGLENAME", OBJPROP_COLOR);
[/PHP]

القيرواني 06 - 10 - 2016 01:36 AM

رد: تبادل الخبرات في برمجة MQL
 
شكرا جزيلا للمهندس المبرمج أخينا أبو ابراهيم " smowaled " و سعدت والله بردك ولكن ليس للاجابة فقط بل بوجودك بيننا وبعودتك للمنتدى ومتابعتك واهتمامك بهذا الموضوع .

smowaled 06 - 10 - 2016 12:39 PM

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

المشاركة الأصلية كتبت بواسطة القيرواني (المشاركة 2236986)
شكرا جزيلا للمهندس المبرمج أخينا أبو ابراهيم " smowaled " و سعدت والله بردك ولكن ليس للاجابة فقط بل بوجودك بيننا وبعودتك للمنتدى ومتابعتك واهتمامك بهذا الموضوع .

الله يجزاك كل خير على الكلام الطيب ... الواحد مع العيال والداوم والمشغال يادوب يحصل وقت والحمد لله

smowaled 07 - 10 - 2016 03:22 PM

رد: تبادل الخبرات في برمجة MQL
 
1 مرفق
دالة WebRequest وتستخدم لأرسال أو سحب بيانات من موقع على النت .. تم إضافة هذي الدالة في الأصدار 600 وكان بها مشاكل تم تعديلها في أصدار 670

[PHP]
int WebRequest(
const string method, // HTTP method
const string url, // URL
const string cookie, // cookie
const string referer, // referer
int timeout, // timeout
const char &data[], // the array of the HTTP message body
int data_size, // data[] array size in bytes
char &result[], // an array containing server response data
string &result_headers // headers of server response
);

[/PHP]

هذي الدالة لا تعمل في الباك تست ... وأيضا يجب إضافة الموقع في القائمة

http://www.borsaat.com/vb/uploaded/6...1475839109.jpg

في المرفقات مثال بسيط وهو سكريبت لسحب صفحة finance من موقع google

wahaaab 08 - 10 - 2016 10:30 PM

رد: تبادل الخبرات في برمجة MQL
 
السلام عليكم ورحمة الله
اشكرك عالموضوع الرائع اخي الكريم
لي خبره لاباس بيها في البرمجه بحيث صنعت اكسبرت يصلح للحسابات الضخمة لانه يعتمد على التعزيز والتبريد للخروج من الجهة الاخرى في حال الانعكاس..مع دوال تدير اللوتات واستراتيجبات التعامل مع انعكاس الحركه القوي...وغيرها من الخصائص...لكن ارغب في اضافه شي وهو ان الاكسبرت بمجرد ان يشتغل على الحساب يرسل رسالة الي ايميلي تحوي رقم الحساب ونوعه وكل معلوماته دون ان يقوم المستعمل بملء اي شي من الاعدادات ودون معرفته طبعا.
الشي الاخر هل تعقتد انه يمكن هزيمه السوق بمجرد استراتجيه تعتمد على ستوب وهدف وتحويلها الى اكسبرت؟..
تحياتي وتقديري.

smowaled 09 - 10 - 2016 12:24 PM

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

المشاركة الأصلية كتبت بواسطة wahaaab (المشاركة 2240241)
السلام عليكم ورحمة الله
اشكرك عالموضوع الرائع اخي الكريم
لي خبره لاباس بيها في البرمجه بحيث صنعت اكسبرت يصلح للحسابات الضخمة لانه يعتمد على التعزيز والتبريد للخروج من الجهة الاخرى في حال الانعكاس..مع دوال تدير اللوتات واستراتيجبات التعامل مع انعكاس الحركه القوي...وغيرها من الخصائص...لكن ارغب في اضافه شي وهو ان الاكسبرت بمجرد ان يشتغل على الحساب يرسل رسالة الي ايميلي تحوي رقم الحساب ونوعه وكل معلوماته دون ان يقوم المستعمل بملء اي شي من الاعدادات ودون معرفته طبعا.
الشي الاخر هل تعقتد انه يمكن هزيمه السوق بمجرد استراتجيه تعتمد على ستوب وهدف وتحويلها الى اكسبرت؟..
تحياتي وتقديري.

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

أولا لا أحب التجسس أو أخذ معلومات الغير من غير موافقة منهم "without consent" ولكن من باب العلم بالشي أو هل هي ممكنه فهنالك عدة طرق منها:
  • إذا كنت من هواة دوت نت فيمكن برمجة ملف dll وأستخدام SmtpClient Class كما في المثال
[PHP]
public static void SendMail(MailMessage Message)
{
SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 587;
client.UseDefaultCredentials = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.Credentials = new NetworkCredential("[عذراً, فقط الأعضاء يمكنهم مشاهدة الروابط! اضغط هنا للتسجيل...]", "password");
client.Send(Message);
}
[/PHP]


ولا تنسى الـ namespace وهو System.Net.Mail
  • إذا كنت ممن يفضل أستخدام Win32 مع API فتستطيع برمجة ملف dll وأستخدام دالة MAPISendMail من مكتبة Mapi32.dll ويجب أن تتأكد من أن المستخدم يعمل على ويندوز 7 أو أعلى
[PHP]
ULONG WINAPI MAPISendMail(
_In_ LHANDLE lhSession,
_In_ ULONG_PTR ulUIParam,
_In_ lpMapiMessage lpMessage,
_In_ FLAGS flFlags,
ULONG ulReserved
);
[/PHP]


بالنسبة لأستخدام أستراتيجية تعتمد على ستوب لوس وناجحة فهنالك مثال لأكسبيرت ناجح وممتاز في سوق mql لديه ستوب صغير وتيك بروفت عالي ... الفكرة فيه الـ money management فهو أذا خسر يخسر واحد في المائة وإذا كسب يكسب خمسة إلى عشرة أوكثر :thumbup:

الأكسبيرت أسمه AlgoTradeSoft وسعره الآن 30000 دولار :clapping::clapping:طبعا ما أقول أشتريه ولكن أعمل مثله وعلى فكرة البريك حقه سي بس الـ money management ممتاز

wahaaab 09 - 10 - 2016 03:19 PM

رد: تبادل الخبرات في برمجة MQL
 
2 مرفق
اشكرك اخي الكريم
في واحد اسمه Mike Benington على الفيسبوك يبيع فيه ب500 دلار..لكن ترددت في شراءه لاني لا اعتقد هو نفسه بنفس النتائج...
على العموم في صفحة الاكسبرت على الماي افكس شفت شي مش منطقي ..او ربما انا مخطئ ..لا حظ الصور...ربح اجمالي 2711 بالمية..لكن الربح الشهري 29 بالمائة..والصورة الاخرى لو تجمع نسب الربح الشهري تطلع اقل من 2711 بكثير...اما هناك شي انا مش فاهمه؟

smowaled 09 - 10 - 2016 04:17 PM

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

المشاركة الأصلية كتبت بواسطة wahaaab (المشاركة 2240707)
اشكرك اخي الكريم
في واحد اسمه Mike Benington على الفيسبوك يبيع فيه ب500 دلار..لكن ترددت في شراءه لاني لا اعتقد هو نفسه بنفس النتائج...
على العموم في صفحة الاكسبرت على الماي افكس شفت شي مش منطقي ..او ربما انا مخطئ ..لا حظ الصور...ربح اجمالي 2711 بالمية..لكن الربح الشهري 29 بالمائة..والصورة الاخرى لو تجمع نسب الربح الشهري تطلع اقل من 2711 بكثير...اما هناك شي انا مش فاهمه؟

الربح الشهري 29 بالمائة أفرج .. وإذا جمعت النسب الشهرية بيكون عندك المجموع absolute وليس compound ... يعني أنت بدأت بـ 100 بعد الشهر الأول أصبح معك 162 .. والشهر الثاني تبدأ بـ 162 الجمع العادي للنسب بيكون أقل بس هم حاسبين الأرباح ... هذا والله أعلم

فيس بوك ما يشتغل في الدوام .. نشوف خوينا Mike بعد الدوام :thumb_yello:

تحياتي وشكري لك أخي الكريم

lmonadi 10 - 10 - 2016 05:57 PM

رد: تبادل الخبرات في برمجة MQL
 
كيف احصل على اندكس مؤشر

smowaled 11 - 10 - 2016 12:12 PM

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

المشاركة الأصلية كتبت بواسطة lmonadi (المشاركة 2241757)
كيف احصل على اندكس مؤشر

ممكن ما تقدر ... يعتمد على المؤشر

البندر بيبز 14 - 11 - 2016 12:34 AM

رد: تبادل الخبرات في برمجة MQL
 
ماشاء الله

الله يزيدك من علمه

جامعها يابو ابراهيم علم وخُلق

بارك الله فيك ونفع بك

ENG.MOATASEM 15 - 11 - 2016 01:39 PM

رد: تبادل الخبرات في برمجة MQL
 
السلام عليكم جميعا
أتمنى أن تكونوا في أحسن حال ..


عندي سؤال برمجي بسيط.
إذا كنت أريد أن أحسب عدد مرات التكرار المتتاليه لهذا الكود مثلا
[PHP] if ( Close[i+1]<Open[i+1]&&Close[i+2]<Open[i+2] && Thel_DOWN1>REN*Point && Thel_DOWN2>REN*Point&& Low[i+1]<Low[i+2] ) {

k=k+1;
}[/PHP]

يعني أريد أن أحسب كم مره متتاليه حصل هذا الشرط , ماهو الكود المناسب لعمل المطلوب

gad555 25 - 11 - 2016 04:50 PM

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

cgull00 11 - 12 - 2016 12:42 PM

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

المشاركة الأصلية كتبت بواسطة smowaled (المشاركة 2240568)
وعليكم السلام ورحمة الله وبركاته

أولا لا أحب التجسس أو أخذ معلومات الغير من غير موافقة منهم "without consent" ولكن من باب العلم بالشي أو هل هي ممكنه فهنالك عدة طرق منها:
  • إذا كنت من هواة دوت نت فيمكن برمجة ملف dll وأستخدام SmtpClient Class كما في المثال
[PHP]
public static void SendMail(MailMessage Message)
{
SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 587;
client.UseDefaultCredentials = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.Credentials = new NetworkCredential("[عذراً, فقط الأعضاء يمكنهم مشاهدة الروابط! اضغط هنا للتسجيل...]", "password");
client.Send(Message);
}
[/PHP]


ولا تنسى الـ namespace وهو System.Net.Mail
  • إذا كنت ممن يفضل أستخدام Win32 مع API فتستطيع برمجة ملف dll وأستخدام دالة MAPISendMail من مكتبة Mapi32.dll ويجب أن تتأكد من أن المستخدم يعمل على ويندوز 7 أو أعلى
[PHP]
ULONG WINAPI MAPISendMail(
_In_ LHANDLE lhSession,
_In_ ULONG_PTR ulUIParam,
_In_ lpMapiMessage lpMessage,
_In_ FLAGS flFlags,
ULONG ulReserved
);
[/PHP]


بالنسبة لأستخدام أستراتيجية تعتمد على ستوب لوس وناجحة فهنالك مثال لأكسبيرت ناجح وممتاز في سوق mql لديه ستوب صغير وتيك بروفت عالي ... الفكرة فيه الـ money management فهو أذا خسر يخسر واحد في المائة وإذا كسب يكسب خمسة إلى عشرة أوكثر :thumbup:

الأكسبيرت أسمه AlgoTradeSoft وسعره الآن 30000 دولار :clapping::clapping:طبعا ما أقول أشتريه ولكن أعمل مثله وعلى فكرة البريك حقه سي بس الـ money management ممتاز


AlgoTradeSoft
http://forum.worldwide-invest.org/trading-expert-advisors-ea/31421-algotradesoft-innovative-ea.html

فيصل0 02 - 01 - 2017 11:34 PM

رد: تبادل الخبرات في برمجة MQL
 
الله يعطيك العافية

Basem1989 25 - 02 - 2017 05:40 AM

رد: تبادل الخبرات في برمجة MQL
 
لك رسالة على الخاص اخي

شكرا لك

smowaled 27 - 02 - 2017 07:47 PM

رد: تبادل الخبرات في برمجة MQL
 
تم الرد في الموضوع

http://www.borsaat.com/vb/t1057137-7.html

أستخدمنا MarketInfo(Symbol(), MODE_TICKVALUE) لمعرفة قيم النقطة في العقد الواحد للعملة .. للمزيد عن الموضوع [عذراً, فقط الأعضاء يمكنهم مشاهدة الروابط! اضغط هنا للتسجيل...]

Rock 27 - 02 - 2017 08:21 PM

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

المشاركة الأصلية كتبت بواسطة smowaled (المشاركة 2333672)
تم الرد في الموضوع

http://www.borsaat.com/vb/t1057137-7.html

أستخدمنا MarketInfo(Symbol(), MODE_TICKVALUE) لمعرفة قيم النقطة في العقد الواحد للعملة .. للمزيد عن الموضوع [عذراً, فقط الأعضاء يمكنهم مشاهدة الروابط! اضغط هنا للتسجيل...]

كل التقدير والشكر على هذا العمل الرائع

:rose:

Forex.First.Knight 14 - 04 - 2017 08:56 AM

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

سمير محمد ارمان 15 - 04 - 2017 01:45 PM

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

المشاركة الأصلية كتبت بواسطة Forex.First.Knight (المشاركة 2351914)
السلام عليكم ورحمة الله وبركاتة
اريد معرفة قيمة الهاي واللو لشمعة الاربعة ساعات الاولى من كل اسبوع
كيف يكون الكود
بارك الله فيكم جميعا

السلام عليكم
فى المرفقات مؤشر اساذى مستر دولار
يعمل كما طلبت مع اضافة باك تست
يتم وضع على فريم الاربعة ساعات
تحياتى لك

Forex.First.Knight 15 - 04 - 2017 05:44 PM

رد: تبادل الخبرات في برمجة MQL
 
بارك الله فيك استاذ سمير
لكني لاحظة ان بيحدد شمعة الساعة الاولى من كل يوم على فريم الساعة
لكنه لم يحدد شمعة الاربع ساعات الاولى من كل اسبوع على فريم الاربع ساعات

السمحان1 22 - 04 - 2017 05:16 PM

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

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

هل توجد وضيفه تغلق الاوامر المعلقه فقط بعد وقت معين من وضع الامر المعلق ويكون مثلا دقيقه واحده بعد وضعه
شاكر لكم مقدما

alsuultaan 02 - 10 - 2017 05:33 PM

رد: تبادل الخبرات في برمجة MQL
 
1 مرفق
السلام عليكم ورحمة الله وبركاته و
وكل عام وانتم بخير

لدي سؤال بخصوص الدوال المثلثية مثل الساين والكوساين والتان فلناخذ التان على سبيل المثال
1 - تان (ظل) الزاوية يعني الضلع المقابل على الضلع المجاور للزاوية فمفروض ان قيمة التان للزاوية 45 تساوي 1 صحيح ولكن عندما استعمل الدالة ( MathTan(45 فانها تعطيني نتيجة مختلفة حيث تعطيني =1.61977510954
وكذلك عند استعمال (MathCos(90 تعطيني النتيجة = 0.448073 - بينما المفروض تكون النتيجة = صفر
فاين الخلل وكيف يمكن معالجته والدوال المستعمله والمثال موجوده بالملف المرفق


2- ما هي الدالة لاستخراج معكوس التان فمثلا لدي قية ظل الزاوية ولنفرض = .1.2 واردت معرفة الزوايه فما هي الدالة التي استخدمها
وايضا دالة معرفة معكوس الكوساين
ولكم جزيل الشكر

MEZPH 31 - 10 - 2017 05:00 PM

رد: تبادل الخبرات في برمجة MQL
 
الاخ الفاضل استاذ سمير اريد مساعدتى فى صنع اكسبيرت ...

سمير محمد ارمان 01 - 11 - 2017 02:06 PM

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

المشاركة الأصلية كتبت بواسطة MEZPH (المشاركة 2431658)
الاخ الفاضل استاذ سمير اريد مساعدتى فى صنع اكسبيرت ...

يتم فتح موضوع جديد
مع شرح المطلوب عمله
مع وضع المؤشرات لو يوجد
مع وضع بعض الفرص لايف من على الشارت
تحياتى

Mr.ElSaFeR 17 - 12 - 2017 01:41 PM

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


محتاج اعدل عليه هو من برمجة الاستاذ سمير



كود:

double MH1(){
double max_H=0;
datetime T_H=0;
for(int j=0;j<Bars;j++){
 double Z=iCustom(Symbol(),0,"Zigzag",12,5,3,0,j);

  if(Z>0&&iHigh(Symbol(),0,j)==Z){max_H=Z;T_H=iTime(Symbol(),0,j);break;}
    }
 
  int BarEnd = iBarShift(NULL,0,T_H);
 
 return(max_H);
 }

//---------------------------------------------------------

double ML1(){
double max_L=0;
datetime T_L=0;
for(int j=0;j<Bars;j++){
 double Z=iCustom(Symbol(),0,"Zigzag",12,5,3,0,j);

  if(Z>0&&iLow(Symbol(),0,j)==Z){max_L=Z;T_L=iTime(Symbol(),0,j);break;}
    }
 
  int BarEnd = iBarShift(NULL,0,T_L);
 
 return(max_L);
 }

//-----------------------------------------------------------

int sell11(){
double max_H=0;
datetime T_H=0;
for(int j=0;j<Bars;j++){
 double Z=iCustom(Symbol(),0,"Zigzag",12,5,3,0,j);

  if(Z>0&&iHigh(Symbol(),0,j)==Z){max_H=Z;T_H=iTime(Symbol(),0,j);break;}
    }
 
  int BarEnd = iBarShift(NULL,0,T_H);
 
 return(BarEnd);
 }
//--------------------------------------------


int buy11(){
double max_L=0;
datetime T_L=0;
for(int j=0;j<Bars;j++){
 double Z=iCustom(Symbol(),0,"Zigzag",12,5,3,0,j);

  if(Z>0&&iLow(Symbol(),0,j)==Z){max_L=Z;T_L=iTime(Symbol(),0,j);break;}
    }
 
  int BarEndL = iBarShift(NULL,0,T_L);
 
 return(BarEndL);
 }


سمير محمد ارمان 18 - 12 - 2017 12:47 PM

رد: تبادل الخبرات في برمجة MQL
 
السلام عليكم
هى دوال تم عمله حتى اعرف منه معلومات عن مؤشر الزجزاج
MH1()
هذه الدالة تظهر لى سعر قمة اول زجزاج
ML1()
هذه الدالة تظهر لى سعر قاع اول زجزاج
الدوال الاخرى تظهر لى رقم الشمعة الموجود فيه قمة الزجزاج وقاع الزجزاج
ويتم العمل فيه فى طريقة فتح الصفقات
تحياتى

Mr.ElSaFeR 18 - 12 - 2017 09:40 PM

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

المشاركة الأصلية كتبت بواسطة سمير محمد ارمان (المشاركة 2449352)
السلام عليكم
هى دوال تم عمله حتى اعرف منه معلومات عن مؤشر الزجزاج
MH1()
هذه الدالة تظهر لى سعر قمة اول زجزاج
ML1()
هذه الدالة تظهر لى سعر قاع اول زجزاج
الدوال الاخرى تظهر لى رقم الشمعة الموجود فيه قمة الزجزاج وقاع الزجزاج
ويتم العمل فيه فى طريقة فتح الصفقات
تحياتى


شكراً لك اذا في مجال تشرحلي الاكواد دي وعلاقتها بالكود اللى بالمشاركه السابقه او توضيح ما هي شروط فتح الصفقات واسف اذا تعبك معي


كود:


  line("Panel_MH1",MH1(),Red,0);
 
  line("Panel_ML1",ML1(),Lime,0);
 
 





double Buy=ObjectGet("Panel_ML1",OBJPROP_PRICE1);

double Sell=ObjectGet("Panel_MH1",OBJPROP_PRICE1);


//if(buy11()>0&&sell11()>0&&buy11()<sell11()&&Buy>0&&Ask-Buy>=Step_Open*pt)nam_B="BUY";else{nam_B="no";}


//if(Sell>0&&Sell-Bid>=Step_Open*pt&&buy11()>0&&sell11()>0&&buy11()>sell11())nam_S="SELL";else{nam_S="no";}




if(buy11()>0&&sell11()>0&&Buy>0&&Ask-Buy>=Step_Open*pt)nam_B="BUY";else{nam_B="no";}


if(Sell>0&&Sell-Bid>=Step_Open*pt&&buy11()>0&&sell11()>0)nam_S="SELL";else{nam_S="no";}


Comment(nam_S,"    ",nam_B,"  ",buy11(),"    ",sell11(),"\n",Ask-Buy>=Step_Open*pt,"\n",Sell-Bid>=Step_Open*pt);

  {
  if(IsTradeAllowed())
        {
  if(nam_B=="BUY"&&time&&ordestotal1_2(OP_BUY)==0&&T_1!=Time[0]&&LastOrderCloseTime()<Time[0]){
  int ticket = open(OP_BUY,Lots(MaxRisk),Ask,TakeProfit,StopLoss) ;
    if(ticket <= 0) return;
    T_1=Time[0];
        }
          }
         
         
          if(IsTradeAllowed())
        {
  if(nam_S=="SELL"&&time&&ordestotal1_2(OP_SELL)==0&&T_2!=Time[0]&&LastOrderCloseTime()<Time[0]){
  int ticket = open(OP_SELL,Lots(MaxRisk),Bid,TakeProfit,StopLoss) ;
    if(ticket <= 0) return;
    T_2=Time[0];
        }
          }
               
         
        }

//--------------------------------------------

for(int m=0;m<OrdersTotal();m++){
  if(OrderSelect(m,SELECT_BY_POS,MODE_TRADES))
  if(OrderSymbol()==Symbol()&&OrderMagicNumber()== MagicNumber&&OrderType()==OP_BUY){
    openpriceb=OrderOpenPrice(); lot_b=OrderLots();
  }
 }
 
 
 for(int m=0;m<OrdersTotal();m++){
  if(OrderSelect(m,SELECT_BY_POS,MODE_TRADES))
  if(OrderSymbol()==Symbol()&&OrderMagicNumber()== MagicNumber&&OrderType()==OP_SELL){
    openprices=OrderOpenPrice(); lot_s=OrderLots();
  }
 }
 
 
 //----------------------------------------------------

if(Ask-openpriceb>=Step*pt&&ordestotal1_2(OP_BUY)>=1&&TB2!=Time[0]){//صفقات تعزيز
  open(OP_BUY,Lots(MaxRisk),Ask,TakeProfit,StopLoss) ;
  TB2=Time[0];
  }
 
 
    if(openprices-Bid>=Step*pt&&ordestotal1_2(OP_SELL)>=1&&TS2!=Time[0]){
  open(OP_SELL,Lots(MaxRisk),Bid,TakeProfit,StopLoss) ;
  TS2=Time[0];
    }
//--------------------------------------------------------
//--------------------------------------------------------


if(openpriceb-Ask>=Step*pt&&ordestotal1_2(OP_BUY)>=1&&ordestotal1_2(OP_BUY)<Max_Open&&TB2!=Time[0]){// صفقات تبريد
  open(OP_BUY,LB1,Ask,TakeProfit,StopLoss) ;
  TB2=Time[0];
  }
 
 
    if(Bid-openprices>=Step*pt&&ordestotal1_2(OP_SELL)>=1&&ordestotal1_2(OP_SELL)<Max_Open&&TS2!=Time[0]){
  open(OP_SELL,LS1,Bid,TakeProfit,StopLoss) ;
  TS2=Time[0];
    }


AMR004 21 - 12 - 2017 01:44 PM

رد: تبادل الخبرات في برمجة MQL
 
نفسي في مؤشر سهل وسلس

سمير محمد ارمان 24 - 12 - 2017 01:20 PM

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

المشاركة الأصلية كتبت بواسطة AMR004 (المشاركة 2450563)
نفسي في مؤشر سهل وسلس

السلام عليكم
مؤشر RSI
طريقة عمله البيع من منطقة 80
والشراء من منطقة 20
طبعا ممكن يكون مربح وطبعا لا
السوق لا يوجد له طريق واحد
تحياتى

salamountey 28 - 12 - 2017 08:17 AM

رد: تبادل الخبرات في برمجة MQL
 
2 مرفق
السلام عليكم ورحمة الله وبركاته
أخى سمير محمد ارمان من فضلك معايا 2 إصدار من إكسبيرت تحفه بس فجأه النسختين توقفوا عن العمل وأنا مش عارف إيه سبب المشكله وكلمت بعض الأصدقاء قالولى أغير spared فى الإعدادات الخاصه بالإكسبيرت بس بصراحه أنا مش فاهم خالص
أنا منصتى تيك ميل (Tickmill) الحساب بتاعها برو (Pro) وكمان عندى حساب فى Instafoerx فأرجو أن تساعدنى من فضلك وشكراً يعنى بيكون زى الإستاندرد يعنى اللوتات بتكون كالآتى :
Lot = $$$
0.01 = 0.10$
0.10 = 1.00$
1.00 = 10.00$
الإعدادات المذكوره ديه خاصه ب (Tickmill)

سمير محمد ارمان 30 - 12 - 2017 01:28 PM

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

المشاركة الأصلية كتبت بواسطة salamountey (المشاركة 2452390)
السلام عليكم ورحمة الله وبركاته
أخى سمير محمد ارمان من فضلك معايا 2 إصدار من إكسبيرت تحفه بس فجأه النسختين توقفوا عن العمل وأنا مش عارف إيه سبب المشكله وكلمت بعض الأصدقاء قالولى أغير spared فى الإعدادات الخاصه بالإكسبيرت بس بصراحه أنا مش فاهم خالص
أنا منصتى تيك ميل (Tickmill) الحساب بتاعها برو (Pro) وكمان عندى حساب فى Instafoerx فأرجو أن تساعدنى من فضلك وشكراً يعنى بيكون زى الإستاندرد يعنى اللوتات بتكون كالآتى :
Lot = $$$
0.01 = 0.10$
0.10 = 1.00$
1.00 = 10.00$
الإعدادات المذكوره ديه خاصه ب (Tickmill)

ارجو فتح موضوع جديد
مع شرح المطلوب
لا يتم وضع طلبات هنا
تحياتى

salamountey 30 - 12 - 2017 02:26 PM

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

Rock 11 - 01 - 2018 10:57 PM

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

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

هلا اخى سالم


كيفية فتح موضوع :

هتذهب الى أى قسم وليكن قسم الاكسيبرتات من هنا
http://forum.borsaat.com/f14/
ستلاحظ بوجود هذه الايكون ومكتوب عليها " موضوع جديد " كما يظهر بالصورة التالية
http://forum.borsaat.com/uploaded/334462_1515700583.png
او هتدخل مباشرتاً لفتح موضوع جديد من خلال الرابط التالى
http://forum.borsaat.com/newthread.php?do=newthread&f=14


بالتوفيق ، :rose::rose:

FxOver 22 - 03 - 2018 01:14 AM

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

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_DASHDOT,5,clr Red);

Rock 22 - 03 - 2018 07:35 PM

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

المشاركة الأصلية كتبت بواسطة FxOver (المشاركة 2476986)
اخي العزيز سمير
كيف يمكن عمل تنبيه لمؤشر يرسم هستوجرام على التشارت
التنبيه عند وصول او ملامسة الهستوجرام ...

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_DASHDOT,5,clr Red);



السلام عليكم
اعتقد انه يمكن استدعاء المؤشر الخارجي ب iCustom
اولا وتحديد ملامسة الهستوجرام بالمستويات المتوفرة فيه بشرط if
ثم التنفيذ بـ
كود:

Alert ("Histogram"(
بانتظار اخى سميـر لتوضيح اكثر .

عبد ربه 2018 27 - 03 - 2018 09:08 PM

رد: تبادل الخبرات في برمجة MQL
 
السلام عليكم
كيف يمكن تسريع اوامر الاكسبرت في فتح الصفقات
مثلا عندا ابرمج الاكسبرت يفتح صفقة كل 20 نقطة
لما يكون السوق يمشي عادي يفتحها الاكسبرت
لاكن عندما يكون وقت الخبر ويتغير السعر 100 نقطة او اكثر لا يمكن للاكسبرت ان يفتح صفقات مع سرعة الخبر
هل هناك حل لتسريع الاوامر

Rock 27 - 03 - 2018 09:19 PM

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

المشاركة الأصلية كتبت بواسطة عبد ربه 2018 (المشاركة 2478356)
السلام عليكم
كيف يمكن تسريع اوامر الاكسبرت في فتح الصفقات
مثلا عندا ابرمج الاكسبرت يفتح صفقة كل 20 نقطة
لما يكون السوق يمشي عادي يفتحها الاكسبرت
لاكن عندما يكون وقت الخبر ويتغير السعر 100 نقطة او اكثر لا يمكن للاكسبرت ان يفتح صفقات مع سرعة الخبر
هل هناك حل لتسريع الاوامر

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

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

يمكنك تحديد SLIPPAGE من OrderSend
بعدد نقاط اكبر فأقرب سعر متوفر بعد السعر التى قمت بتحديده سيتم اعتماده ويفتح الصفقات المطلوبة


تحياتى

عبد ربه 2018 27 - 03 - 2018 09:23 PM

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

المشاركة الأصلية كتبت بواسطة Rock (المشاركة 2478361)
وعليكم السلام ورحمة الله

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

يمكنك تحديد SLIPPAGE من OrderSend
بعدد نقاط اكبر فأقرب سعر متوفر بعد السعر التى قمت بتحديده سيتم اعتماده ويفتح الصفقات المطلوبة


تحياتى


شكرا ليك استاذنا
على الشرح

ARRESSS23 14 - 04 - 2018 12:45 AM

رد: تبادل الخبرات في برمجة MQL
 
سلام الله عليكم ،
كيف الحال إخوان ؟؟؟
انتهيت للتو من قراءة لغة MQL4 ،
للاسف المراجع قليلة جدا خصوصا بالنسبة للناس اللي لا يتقنون الانجليزي (( فقط العربية و الفرنسية )) ،
حاليا أتمرن على صياغة بعض الدوال ، و للاسف أجد صعوبات في هذا الشأن ،
هل يمكنني أن أطرح بعض الاسئلة هنا ؟؟
هل يمكنني الاستفادة من خبراتكم في البرمجة ؟؟؟

Rock 17 - 04 - 2018 01:47 AM

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

المشاركة الأصلية كتبت بواسطة ARRESSS23 (المشاركة 2484888)
سلام الله عليكم ،
كيف الحال إخوان ؟؟؟
انتهيت للتو من قراءة لغة MQL4 ،
للاسف المراجع قليلة جدا خصوصا بالنسبة للناس اللي لا يتقنون الانجليزي (( فقط العربية و الفرنسية )) ،
حاليا أتمرن على صياغة بعض الدوال ، و للاسف أجد صعوبات في هذا الشأن ،
هل يمكنني أن أطرح بعض الاسئلة هنا ؟؟
هل يمكنني الاستفادة من خبراتكم في البرمجة ؟؟؟

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

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

ARRESSS23 25 - 04 - 2018 10:05 PM

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

المشاركة الأصلية كتبت بواسطة Rock (المشاركة 2485584)
وعليكم السلام ورحمة الله وبركاته

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

شكرا حبيبي (( روووك ))) ،
آسف على تأخر ردي ،

حاليا أتدرب على صياغة بعض الدوال الاساسية في mql4 خصوصا الدوال الاساسية الخاصة بالاوامر ،

أحاول صياغة كود بسيط جدا :

الانطلاقة تكون بتنفيذ أمر شراء ،
بعد ارتفاع السعر أو انخفاضه (( مثال 20 نقطة )) يقوم الكود بتفعيل أمر بيع ثاني ،
بعد بلوغ 40 نقطة يقوم الكود بغلق أمري الشراء و البيع ،

للاسف ، أثناء التجربة في الباك تيست ، يقوم الكود بتفعيل أمر الشراء كما ينبغي ثم أمر البيع ثم الاغلاق كما ينبغي ، لكن فقط للمرة الاولى ، بعد ذلك ، يتفعل أمر اشراء فقط لا غير ،

أين الخطأ ؟؟؟

ملاحظة ، ستجد في الكود مجموعة من الدوال قبل و بعد أمر الشراء ، السبب هو ان امر الشراء لم تكن ينفذ بشكل عادي حيث كان يتم تنفيذ العديد من الاوامر عوض أمر واحد ، نفس الملاحظة تخص أوامر البيع ،

Rock 25 - 04 - 2018 11:01 PM

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

اولا بالملف المرفق عاوز اعرف انت بـ distance لم تقوم بتحديد معرف رقمي حتى تقوم بحساب ( ارتفاع 40 او 20 بيب ) يقوم بتنفيذ امر
شايفه كما هو واضح extern int distance; فقط
ولم تقوم بتعريفة بقلب البرمجة ممكن توضح كيف قدمته لتبادل الخبره .


بالنسبة لمشكله الفكره
اعتقد من وجهة نظري المتواضعه انك اولا هتحدد اخر نوع صفقة مفتوحه لو شراء
يتم النظر على دالة void بتنفيذ امر بيع بعد تحرك سعر العمله الحالى - عدد نقاط * pt
كود:

double bors = Ask-(20*pt)
ثم نكتب امر لو سعر الشراء يساوي bors وهو السعر المراد لنا بانعكاس الصفقة
هنفتح صفقة بيع
كود:

OrderSend(Symbol(),OP_SELL,LOT,Bid,slippage,STOPLOSS,Takeprofit,NULL,0,0,0);
وهكذا يستمر الاكسيبرت بمراجعه كل ما سبق ولكن هنا هينظر لدالة void بتنفيذ امر شراء

والله اعلم

Rock 25 - 04 - 2018 11:02 PM

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

ARRESSS23 25 - 04 - 2018 11:50 PM

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

المشاركة الأصلية كتبت بواسطة Rock (المشاركة 2489229)
حبيبي

اولا بالملف المرفق عاوز اعرف انت بـ distance لم تقوم بتحديد معرف رقمي حتى تقوم بحساب ( ارتفاع 40 او 20 بيب ) يقوم بتنفيذ امر
شايفه كما هو واضح extern int distance; فقط
ولم تقوم بتعريفة بقلب البرمجة ممكن توضح كيف قدمته لتبادل الخبره .


بالنسبة لمشكله الفكره
اعتقد من وجهة نظري المتواضعه انك اولا هتحدد اخر نوع صفقة مفتوحه لو شراء
يتم النظر على دالة void بتنفيذ امر بيع بعد تحرك سعر العمله الحالى - عدد نقاط * pt
كود:

double bors = Ask-(20*pt)
ثم نكتب امر لو سعر الشراء يساوي bors وهو السعر المراد لنا بانعكاس الصفقة
هنفتح صفقة بيع
كود:

OrderSend(Symbol(),OP_SELL,LOT,Bid,slippage,STOPLOSS,Takeprofit,NULL,0,0,0);
وهكذا يستمر الاكسيبرت بمراجعه كل ما سبق ولكن هنا هينظر لدالة void بتنفيذ امر شراء

والله اعلم

مشكور حبيبي روووك على الرد السريع ،

أولا ، بالنسبة للمتغير distance فأنا لم أقم بتعريفه في الكود ، أو بالاحرى تخصيص (( affecte )) قيمة له في الكود ، حيث أترك هاذ العملية حتى الباك تيست بحكم أنه خارجي extern ،

ثانيا ، النصيحة اللي قدمتها لي (( و مشكور عليها أخي )) استعملتها من قبل فلم تنجح ، و السبب أن المتغير bors من نوع double ، و هذا النوع سواء في لغة mql4 أو باقي اللغات لا يمكن أن تتساوى مع قيم أخرى ، و السبب أن الله وحده من يعلم عدد الارقام وراء الفاصلة :)
لذلك ، كان لابد من استعمال دالة normalisedouble حتى أتحكم في عدد الارقام بعد الفاصلة و أيضا operator (( أكبر من أو يساوي )) عوض استعمال ( يساوي ) ،

أتمنى أكون شرحت كما ينبغي ،،

Rock 26 - 04 - 2018 06:14 PM

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

المشاركة الأصلية كتبت بواسطة ARRESSS23 (المشاركة 2489241)
مشكور حبيبي روووك على الرد السريع ،

أولا ، بالنسبة للمتغير distance فأنا لم أقم بتعريفه في الكود ، أو بالاحرى تخصيص (( affecte )) قيمة له في الكود ، حيث أترك هاذ العملية حتى الباك تيست بحكم أنه خارجي extern ،

ثانيا ، النصيحة اللي قدمتها لي (( و مشكور عليها أخي )) استعملتها من قبل فلم تنجح ، و السبب أن المتغير bors من نوع double ، و هذا النوع سواء في لغة mql4 أو باقي اللغات لا يمكن أن تتساوى مع قيم أخرى ، و السبب أن الله وحده من يعلم عدد الارقام وراء الفاصلة :)
لذلك ، كان لابد من استعمال دالة normalisedouble حتى أتحكم في عدد الارقام بعد الفاصلة و أيضا operator (( أكبر من أو يساوي )) عوض استعمال ( يساوي ) ،

أتمنى أكون شرحت كما ينبغي ،،

هلا ياغالى
طب فى حاله استخدمناها بالشكل التالى
NormalizeDouble(bors,Digits);
هل سيتحقق المطلوب بنفس العملية السابقة

وهل تقصد من عدم تساوي مع قيم اخري انه هيصل سعر الاسك او البيد لهذا السعر بمراحل تشغيل الاكسيبرت بالتالى سيتساوي كلا منهم بنفس القيمه ؟!

ARRESSS23 26 - 04 - 2018 08:58 PM

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

المشاركة الأصلية كتبت بواسطة Rock (المشاركة 2489617)
هلا ياغالى
طب فى حاله استخدمناها بالشكل التالى
NormalizeDouble(bors,Digits);
هل سيتحقق المطلوب بنفس العملية السابقة

وهل تقصد من عدم تساوي مع قيم اخري انه هيصل سعر الاسك او البيد لهذا السعر بمراحل تشغيل الاكسيبرت بالتالى سيتساوي كلا منهم بنفس القيمه ؟!

نعم ، أعتقد ان استعملنا NormalizeDouble(bors,Digits) سينجح الامر ،

بالنسبة لسؤالك الثاني أخي روووك ، عملية التساوي ممكنة نظريا فقط ، أما عمليا فهي مستحيلة لسببين على ما أظن :

- السبب الاول رياضي بامتياز ، فالاعداد الحقيقية تحمل الكثير من الارقام بعد الفاصلة بصفة غير متناهية، خذ عندك مثال العدد ( بي ) ، فعمليا لا يمكننا اعطاء قيمة مساوية بالضبط لهذا العدد ، مادمنا نحن عاجزين عن ايجاد عدد مساوي له ، فكذلك الحاسوب اللذي نعطيه الامر بايجاد عدد حقيقي مساوي ل ( بي ) سيعجز عن ذلك بالتأكيد و النتيجة راح تطلع error ، اما ان كان المطلب ايجاد قيمة قريبة ل ( بي ) ، هنا عمليا المطلب ممكن تحقيقه سواء لنا نحن البشر ، أو بالنسبة للآلة ،

- السبب الثاني يتعلق بطبيعة السوق ، فتحرك السعر يتم بسرعة خيالية أحيانا ، بل غالبا ، لنفترض أن الزمن T0 هو الزمن اللذي سيتساوى فيه السعر مع قيمة معينة ، حواسيبنا غير مهيئة لتنفيذ أمر في هذا الزمن بالذات ، فهناك تأخر زمني لعوامل كثيرة منها سرعة النت ، الخ ،،،

لذلك من الافضل استعمال دالة normalisedouble و أيضا استبدال التساوي ب (( أكبر من أو يساوي )) أو (( أصغر من يساوي )) ،،،

بالمناسبة اكتشفت الخطأ في الكود بتاعي ، الخطأ يكمن في الدالة :
if(trade == True)
الخ
كنت مضطر لاستعمال هاذ الدالة قبل أوامر البيع ، و السبب هو تفعيل اوامر بيع كثيرة عوض أمر بيع واحد ،
للاسف لا أعلم كيف أعالج الامر و لا واحد يريد مساعدتي في باقي المنتديات :(

Rock 27 - 04 - 2018 11:27 PM

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

المشاركة الأصلية كتبت بواسطة ARRESSS23 (المشاركة 2489675)
نعم ، أعتقد ان استعملنا NormalizeDouble(bors,Digits) سينجح الامر ،

بالنسبة لسؤالك الثاني أخي روووك ، عملية التساوي ممكنة نظريا فقط ، أما عمليا فهي مستحيلة لسببين على ما أظن :

- السبب الاول رياضي بامتياز ، فالاعداد الحقيقية تحمل الكثير من الارقام بعد الفاصلة بصفة غير متناهية، خذ عندك مثال العدد ( بي ) ، فعمليا لا يمكننا اعطاء قيمة مساوية بالضبط لهذا العدد ، مادمنا نحن عاجزين عن ايجاد عدد مساوي له ، فكذلك الحاسوب اللذي نعطيه الامر بايجاد عدد حقيقي مساوي ل ( بي ) سيعجز عن ذلك بالتأكيد و النتيجة راح تطلع error ، اما ان كان المطلب ايجاد قيمة قريبة ل ( بي ) ، هنا عمليا المطلب ممكن تحقيقه سواء لنا نحن البشر ، أو بالنسبة للآلة ،

- السبب الثاني يتعلق بطبيعة السوق ، فتحرك السعر يتم بسرعة خيالية أحيانا ، بل غالبا ، لنفترض أن الزمن T0 هو الزمن اللذي سيتساوى فيه السعر مع قيمة معينة ، حواسيبنا غير مهيئة لتنفيذ أمر في هذا الزمن بالذات ، فهناك تأخر زمني لعوامل كثيرة منها سرعة النت ، الخ ،،،

لذلك من الافضل استعمال دالة normalisedouble و أيضا استبدال التساوي ب (( أكبر من أو يساوي )) أو (( أصغر من يساوي )) ،،،

بالمناسبة اكتشفت الخطأ في الكود بتاعي ، الخطأ يكمن في الدالة :
if(trade == True)
الخ
كنت مضطر لاستعمال هاذ الدالة قبل أوامر البيع ، و السبب هو تفعيل اوامر بيع كثيرة عوض أمر بيع واحد ،
للاسف لا أعلم كيف أعالج الامر و لا واحد يريد مساعدتي في باقي المنتديات :(

فهمت عليك ياغالى بما تقصده بتحرك السعر مع عدم التساوي بسبب حركه الاسواق
لنحدد الآمر بـ =<

بالنسبه لتفعيل اومر كثيره ممكن نحدد عند تحقيق المطلوب بانعكاس السعر
نعمل دايره for

int r ;
for ( r=0;r>=1;r++);
{

if (r==1)
{
break ;
double d =OrderSend("باقي الآمر")};

بحيث لو حرف r = 1 تتوقف ويفتح امر البيع او الشراء المطلوب
وكده هيفتح امر واحد فقط عندما يكون الار تساوي 1
:7:

ARRESSS23 28 - 04 - 2018 10:06 PM

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

المشاركة الأصلية كتبت بواسطة Rock (المشاركة 2490144)
فهمت عليك ياغالى بما تقصده بتحرك السعر مع عدم التساوي بسبب حركه الاسواق
لنحدد الآمر بـ =<

بالنسبه لتفعيل اومر كثيره ممكن نحدد عند تحقيق المطلوب بانعكاس السعر
نعمل دايره for

int r ;
for ( r=0;r>=1;r++);
{

if (r==1)
{
break ;
double d =OrderSend("باقي الآمر")};

بحيث لو حرف r = 1 تتوقف ويفتح امر البيع او الشراء المطلوب
وكده هيفتح امر واحد فقط عندما يكون الار تساوي 1
:7:

للاسف لم أتمكن من صيياغة هاذ الحلقة ، الكود عندك أخي روووك ، حاول ادماج هاذ الحلقة في الكود و لنر النتيجة ،

Rock 30 - 04 - 2018 11:45 PM

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

المشاركة الأصلية كتبت بواسطة ARRESSS23 (المشاركة 2490267)
للاسف لم أتمكن من صيياغة هاذ الحلقة ، الكود عندك أخي روووك ، حاول ادماج هاذ الحلقة في الكود و لنر النتيجة ،

كود:

if ( " السعر وصل بخساره 20 بيب ")
{
int r;
for(r=0;r>=1;r++)
{
if ( r==1) break ;
double d = OrderSend(Symbol(),0,0.01,Ask,10,double  stoploos , double takepro ,NULL,55522,0,clrBeige );
}

هو الكود غير جاهز هو مجرد فكره

ياسر ابوزياد 01 - 06 - 2018 12:24 AM

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

bibou2014 02 - 07 - 2018 03:32 PM

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

سمير محمد ارمان 03 - 07 - 2018 07:07 PM

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

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

تم العمل
فى المرفقات
تحياتى

عبد ربه 2018 04 - 07 - 2018 10:06 AM

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

kazamadrid 22 - 09 - 2018 01:26 PM

رد: تبادل الخبرات في برمجة MQL
 
اين يتم وضع هاذا الكود
//+------------------------------------------------------------------+
//| Check the correctness of the order volume |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
{
//--- minimal allowed volume for trade operations
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME _MIN);
if(volume<min_volume)
{
description=StringFormat("Volume is less than the minimal allowed SYMBOL_VOLUME_MIN=%.2f",min_volume);
return(false);
}

//--- maximal allowed volume of trade operations
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME _MAX);
if(volume>max_volume)
{
description=StringFormat("Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f",max_volume);
return(false);
}

//--- get minimal step of volume changing
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUM E_STEP);

int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f",
volume_step,ratio*volume_step);
return(false);
}
description="Correct volume value";
return(true);
}


01:22 PM

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