النتائج 1,516 إلى 1,530 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 22-01-2012, 03:50 PM #1516
- 22-01-2012, 09:49 PM #1517
- 23-01-2012, 03:22 AM #1518
- 23-01-2012, 03:31 AM #1519
- 23-01-2012, 04:03 PM #1520
سؤالك عام لكن سأذكر مثال
مثلا تحققت شروط الدخول وسوف نقوم بحساب حجم اللوت
كود PHP:if(RSIEURUSD<30)Orders++;
if(RSIUSDCHF<30)Orders++;
if(RSIGBPUSD<30)Orders++;
Lots=Lots/Orders;
if(RSIEURUSD<30)OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(MarketInfo("EURUSD",MODE_ASK),digits),3,0,0,"MR.dollar EA",MagicNumber,0,Blue);
if(RSIUSDCHF<30)OrderSend("USDCHF",OP_BUY,Lots,NormalizeDouble(MarketInfo("USDCHF",MODE_ASK),digits),3,0,0,"MR.dollar EA",MagicNumber,0,Blue);
if(RSIGBPUSD<30)OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(MarketInfo("GBPUSD",MODE_ASK),digits),3,0,0,"MR.dollar EA",MagicNumber,0,Blue);
ثم حجم اللوت التالي سيكون حجم اللوت / عدد الأزواج التي حققت الدخول
- 23-01-2012, 04:13 PM #1521
وعليكم السلام ورحمة الله وبركاته
أنصحك بهذا الكتاب
https://forum.arabictrader.com/t119065.html
وبالنسبه للأكواد فأفضل طريقة هو أن تقوم بالإطلاع على المؤشرات والإكسبرتات المفتوحة الكود ستكون أفضل وسيله للتعلم
الإكسبرت الأول لديك أخطاء في برمجته فهذا ليس إكسبرت أنصحك بمراجعة هذا الموضوع به خطوات عمليه لبرمجة إكسبرت يمكنك أن تأخذ الفكره الاساسيه وتغير شروط الدخول التي تريدها
https://forum.arabictrader.com/t97945.html
فأول خطأ لديك في الإكسبرت هو هذا السطر
كود PHP:#property indicator_chart_window
ثم حتى تعرف سبب خطأ عمل الإكسبرت فيجب أن تتأكد أولا هل السبب هو خطأ برمجي أم خطأ في شروط الدخول إذا كان خطأ برمجي فيجب أن يظهر لك رقم الخطأ في خانة Journal عند عمل باك تست للإكسبرت
ثم يمكنك معرفة نوع الخطأ عن طريق رقم الخطأ من
http://docs.mql4.com/constants/errors
أما إذا كان خطأ في شروط الدخول في هذه الحاله يجب أن تراجع شروط الدخول مره أخرى لتتأكد منها
جرب مراجعة الإكسبرت وعمله بعد التعديل والإطلاع على الملاحظات السابقه ثم أخبرني بالنتيجه
- 23-01-2012, 05:18 PM #1522
- 23-01-2012, 07:57 PM #1523
- 24-01-2012, 06:29 PM #1524
اخي اسامة ممكن عرض اكسبيرت يعمل على اكثر من زوج
- 24-01-2012, 07:54 PM #1525
- 24-01-2012, 11:56 PM #1526السلام عليكم ورحمة الله
اخي مستر دولار والاخوة الكرام اليكم الفكرة التالية
عند افتتاح شمعة الساعة مثلا وبمجرد ان يتحرك السعر فوق او تحت سعر الافتتاح يفتح الاكسبرت عقد على حسب التحرك .يعني اذا تحرك السعر فوق سعر الافتتاح يفتح صفقة شراء واذا تحرك السعر تحت سعر الافتتاح سيفتح صفقة بيع, طيب الان ممكن يطلع السعر فوق الاقتتاح ويرجع ينزل تحته كذا مرة. الحل هنا ان يغلق الاكسبرت الصفقة السابقة اذا توفر الشرط الجديد اي اذا طلع السعر فوق الافتتاح يفتح صفقة شراء واذا رجع هبط تحت الافتتاح يغلق الشراء ويفتح البيع واذا رجع صعد مرة اخرى يغلق البيع ايضا ويفتح شراء وهكذا...,والهدف هو اغلاق الشمعة او هدف محدد.وبالتالي نكون استفدنا من المسافة بين الافتتاح والاغلاق لكل شمعة.
والمشكلة ستكون اذا تحرك السعر مرات كثيرة حول سعر الافتتاح وسنضع هنا مضاعفات اي كلما السعر يعطي اشارة خاطئة ندخل الصفقة القادمة بلوت مضاعف.
الطيب السؤال هنا كم اقصى عدد من المرات يمكن ان يمر السعر بنقطة الافتتاح ذهابا وايابا؟اذا اربع مرات او خمسة على الاكثر فهذا شي جيد.
فلا بد للسعر ان يحدد اتجاه وتغلق فيه الشمعة وهدفنا هو الاستفادة من حجم الشمعة اي بين الافتتاح والاغلاق.فاذا كانت صاعدة تكون صفقة الناجحة شراء والعكس صحيح.
حاولت ابرمج الفكرة وهذا الكود
كود PHP:int SL,TP;
double point =MarketInfo("EURUSD",MODE_POINT);
//----
if (point>Open[0]){
CloseSellOrders();
if (orderstotal()<1){
if(!LastOrderProfit()&&UseDoubleLots==true){
Lots=LastLot()*2;
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,Ask+TakeProfit*Point,"wahab",MagicNumber,0,Blue);
}
else
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,Ask+TakeProfit*Point,"wahab",MagicNumber,0,Blue);
}
}
if (point<Open[0]){
CloseBuyOrders();
if (orderstotal()<1){
if(!LastOrderProfit()&&UseDoubleLots==true){
Lots=LastLot()*2;
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,Bid-TakeProfit*Point,"wahab",MagicNumber,0,Red);
}
else
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,Bid-TakeProfit*Point,"wahab",MagicNumber,0,Red);
}
}
//----
return(0);
}
- 25-01-2012, 12:25 AM #1527
السلام عليكم ورحمة الله أستاذ اسامة
حاولت إرجاع مؤشر tsr إلى إكسبريت لاكن لم تفلح كل محاولاتي
إتبعت الكورس بتاعك للإكسبريتات https://forum.arabictrader.com/t93679.html
لاكن المشكلة في الشرط البيع و الشراء الذي يبعث إلى OrderSend لم أتمكن من كتابته بالشكل الصحيح
أرجوا من فضلك إلقاء نظرة عليه وجزاك الله خيرا
كود PHP://+------------------------------------------------------------------+
//| Tsr EA.mq4 |
//| Copyright 2011 Cher Amine |
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011 Cher Amine"
#property link "[email protected]"
extern string MM_Parameters = "---------- Money Management";
extern double Lots = 1;
extern string S5="---------------- Order Management";
extern int StopLoss=50;
extern int TakeProfit=50;
extern int MagicNumber=2533;
//---- input parameters
extern int period=15;
extern int method=3; // MODE_SMA
extern int price=0; // PRICE_CLOSE
double Uptrend[];
double Dntrend[];
double ExtMapBuffer[];
double prevtrend;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
double WMA(int x, int p)
{
return(iMA(NULL, 0, p, 0, method, price, x));
}
//----------
//----------
int start()
{
int counted_bars = IndicatorCounted();
if(counted_bars < 0)
return(-1);
int x = 0;
int p = MathSqrt(period);
int e = Bars - counted_bars + period + 1;
double vect[], trend[];
ArrayResize(vect, e);
ArraySetAsSeries(vect, true);
ArrayResize(trend, e);
ArraySetAsSeries(trend, true);
for(x = 0; x < e; x++)
{
vect[x] = 2*WMA(x, period/2) - WMA(x, period);
}
for(x = 0; x < e-period; x++){
ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);
}
//////////////////////////////////////////////////////////////////////////////////////////////
for(x = e-period; x >= 0; x--)
{
trend[x] = trend[x+1];
if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;
if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;
//////////////////////////////////////////////////////////////////////////////////////////
if (trend[x]>0)
{ Uptrend[x] = ExtMapBuffer[x];
if (trend[x+1]<0) {Uptrend[x+1]=ExtMapBuffer[x+1];
}
Dntrend[x] = EMPTY_VALUE;
}
/////////////////////////////////////////////////////////////////////////////////////////////////
else
/////////////////////////////////////////////////////////////////////////////////////////////////
if (trend[x]<0)
{
Dntrend[x] = ExtMapBuffer[x];
if (trend[x+1]>0) {Dntrend[x+1]=ExtMapBuffer[x+1];}
Uptrend[x] = EMPTY_VALUE;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
double SL,TP;
////---- BUY
if (trend[x]>0&&trend[x+1]<0){
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"Cher90 EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
}
////---- SELL
if (trend[x]<0&&trend[x+1]>0){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"Cher90 EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
}
}
//--- Thanks Mr.Dollar :D
- 25-01-2012, 04:28 AM #1528
السلام عليكم
أخي أسامه قمت بالإطلاع على موضوع "تصميم إكسبرت لمؤشر البارابوليك سار"
وقمت بتصميم إكسبيرت إعتمادا على الدوال المستخدمه في إكسبيرت الباربوليك ولكني حذفت بعض الدوال .. و الإكسبيرت يفتح صفقة شراء عند حدوث تقاطع بين خط التنكن سن و الكيجن سن بحيث يكون خط التنكن السن أعلى خط الكيجن بعد الإختراق و بشرط وجود السعر فوق سحابة الكوموسبان .
وقمت بعمل باك تيست عادي للإكسبيرت و ظهر لي الخطأ رقم 148 و الذي يعني أن عدد الصفقات المفتوحه أكبر من المسموح لها من قبل البروكر . فكيف أستطيع أن أتغلب على هذا الخطأ ؟؟ و كيف أعرف أن الإكسبيسرت يفتح الصفقات بناءا على الشروط الموضوعه فيه ؟؟؟
و هل من طريقه لأستطيع جعل الهدف قليل 5 نقاط مثلا ؟؟
وهل هناك فرق بين ال TakeProfit و ال TP لأني لو لم أضع TP خارج الداله ستارت يظهر لي أخطاء بعدم تعريفها ؟؟؟
رجاء الإطلاع على الإكسبيرت
وجزاك الله خيرا
عندما قمت بعمل باك تيست لنفس الإكسبيرت و نفس الإعدادات و نفس اللوت و لكن على منصه أخرى وهي منصة التريد أعطى الخطأ 131 الخاص بحجم تداول غير صالح ؟؟؟؟
بينما كان الباك تيست الأول على منصة الباري .آخر تعديل بواسطة dentist_hussein ، 25-01-2012 الساعة 04:33 AM
- 25-01-2012, 07:30 AM #1529
أخي أسامه هل هذا الكود يجعل الإكسبيرت يعمل على المنصات الرباعيه فقط و هل يمكن تعديله لجعله يعمل على الرباعيه و الخماسيه ؟؟
كود:int init() { if(Digits<4) { point=0.01; digits=2; } else { point=0.0001; digits=4; } return(0); }
- 25-01-2012, 05:20 PM #1530
الخطأ لديك في شرط الدخول الرئيسي
كود PHP:if (point>Open[0]){
كود PHP:double point =MarketInfo("EURUSD",MODE_POINT);
يعني مثلا في اليورو دولار سيكون 0.0001 و الدولار ين 0.01
فإذا كان الإفتتاح مثلا هو 1.4030
فهل في رأيك هذه المقارنه صحيحه 0.0001> الإفتتاح
هذا هو معنى الكود الذي قمت بكتابته
لكن الطريقة الصحيحه
هي أن نقارن السعر الحالي بسعر الإفتتاح
كود PHP:if(Bid>Open[0])
كود PHP:if(Bid<Open[0])
أيضا جزء آخر بعيدا عن هذا الشرط
عندما قمت بكتابة هذا السطر
كود PHP:double point =MarketInfo("EURUSD",MODE_POINT);
فأنصحك مباشرة جعلها بهذا الشكل
كود PHP:double point =MarketInfo(Symbol(),MODE_POINT);
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM