النتائج 3,421 إلى 3,435 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 06-03-2013, 08:47 PM #3421
أرجو ان تفيدك هذه الطريقة فهى ستقوم بتنفيذ الشرط عن طريق وضع ماجيك جديد بحيث لا يتم فتح عقود أخرى وكذلك هناك دالة للبحث فى الهيستورى عن العقود التى تم غلقها بهذا الماجيك بحيث لا يفتح عقود أخرى إذا تم غلق هذا العقد حسب طريقتك يمكنك استخدامه او لا - وأضفت extern int Code=1; حتى إذا أردت فتح صفقات جديدة فى نفس اليوم حتى نتغلب على الماجيك الذى تم وضعه فى الصفقات السابقة لهذا اليوم
وأرجو ان يفيدنا أ/ أسامة أكثر إذا كان له ملاحظات .
كود://+------------------------------------------------------------------+ #property link "" extern int Code=1; int Real_Sell, Real_Buy, MagicSell, MagicBuy, HistorySell, HistoryBuy, Oks, Okb; string comm ; //+------------------------- int init() { Code=Code*2; return(0); } //+----------------------------------- //| expert deinitialization function | //+----------------------------------- int deinit() { return(0); } //+----------------------------------- //| expert start function //+----------------------------------- int start() { //---- History(); Real_Open(); int Maa=Day()+Month()+Year() ; MagicSell=1+Code+Maa ; MagicBuy=2+Code+Maa ; if ( Oks==0 && Real_Sell>Real_Buy && HistorySell<1 && Real_Buy>0 ) { comm="SELL - "+MagicSell; OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,comm,MagicSell,Red); } if ( Okb==0 && Real_Buy>Real_Sell && HistoryBuy<1 && Real_Sell>0 ) { comm="Buy - "+MagicBuy; OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,comm,MagicBuy,Green); } return(0); } //+------------------------------------------------------------------+ int Real_Open() { int total=OrdersTotal(), c, a, b ; Oks=0; Okb=0; for (int cnt=0 ; cnt<total ; cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if ( OrderSymbol()==Symbol() && ( OrderType()==OP_BUY || OrderType()==OP_SELL)) { c++; if ( OrderType()==OP_SELL ){ a++; } if ( OrderType()==OP_BUY ) { b++; } Real_Sell=a; Real_Buy=b ; if ( OrderMagicNumber()==MagicSell ) Oks=1; if ( OrderMagicNumber()==MagicBuy ) Okb=1; } } return(c); } int History() { int total=OrdersHistoryTotal(), c, a, b ; HistorySell=0; HistoryBuy=0; for (int cnt=total ; cnt>=0 ; cnt--) { OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY) ; if ( OrderSymbol()==Symbol() && ( OrderType()==OP_BUY || OrderType()==OP_SELL ) ) { c++; if ( OrderMagicNumber()==MagicSell ) { a++; } if ( OrderMagicNumber()==MagicBuy ) { b++; } HistorySell=a ; HistoryBuy=b ; } } return(c); }
- 06-03-2013, 09:43 PM #3422
رد:موضوع مخصص للأسئلة البرمجية
هذا الخطأ سيحدث عندما يحاول الإكسبرت عمل مودفاي للأمر ولكن أحيانا لا يفتح الأمر ويحدث خطأ بالتالي لا يستطيع عمل مودفاي له
لذلك ضع الشرط
كود PHP:if(Ticket>0)OrderModify(Ticket,OrderOpenPrice(),SL,TP,0);
كود PHP:&&orderscnt()>0
بالنسبه لفتح الصفقه بمجرد فتح الميتاتريدر يمكنك إضافة شرط
كود PHP:&&High[0]==Low[0]
- 06-03-2013, 09:48 PM #3423
- 06-03-2013, 09:52 PM #3424
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
يمكنك تعريف متغير مثلا عندما يتحقق شرط فتح الأمر الإضافي تجعل قيمة المتغير = 1
وبعد أن تنفذ أمر فتح الصفقه تجعل قيمة المتغير مره أخرى = 0
مثال
كود PHP:static int OpenOrder;
if(OpenOrder==1)
{
// buy
OpenOrder=0;
}
if(Condition==true)
{
Openorder=1;
}
- 07-03-2013, 12:08 AM #3425
رد:موضوع مخصص للأسئلة البرمجية
بارك الله فيك أستاذ مستر دولار
كنت أبحث عن هذا الحل...
لنفترض دخول صفقة بعد تقاطع موفينجين بهدف وستوب تابثين
ما يحدث هو عند ضرب الهدف أو الستوب تفتح صفقة أخرى وهكذا... وأنا أريد صفقة واحدة ولا يفتح صفقة أخرى إلا بعد تحقق تقاطع جديد
إذا كان الكود بمشاركتك سيحل المشكلة، فأرجو أن تضيفه لي بالمثال المرفق لمعرفة الطريقة
شكرا جزيلا أستاذي القدير
كود PHP:void TechnicalAnalysis()
{
if (iMA(NULL, NULL,Periode1,0,MODE_EMA,PRICE_CLOSE,0) < iMA(NULL, NULL,Periode2,0,MODE_EMA,PRICE_CLOSE,1))
{
BuyOrder();
}
}
void BuyOrder()
{
int expire = TimeCurrent();
double price = NormalizeDouble(Ask, NDigits);
double SL = price - Stoploss*PipValue*Point;
if (Stoploss == 0) SL = 0;
double TP = price + Takeprofit*PipValue*Point;
if (Takeprofit == 0) TP = 0;
int ticket = -1;
if (ECNBroker)
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "My Expert", MagicNo, 0, Blue);
else
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, "My Expert", MagicNo, 0, Blue);
if (ticket > -1)
{
if (ECNBroker)
{
OrderSelect(ticket, SELECT_BY_TICKET);
bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Red);
if (ret == false)
Print("OrderModify() error - ", ErrorDescription(GetLastError()));
}
}
else
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
}
آخر تعديل بواسطة kira-h ، 07-03-2013 الساعة 12:15 AM
- 07-03-2013, 12:17 AM #3426
- 07-03-2013, 04:31 PM #3427
الف شكر لك اخ اسامه على الاكسبرت الاكثر من رائع ويا ريت تساعدني في عمل داله لمعرفه متى يتكون تقاطعين خاطئين لزياده احتمال التاكيد اذا تكرمت
الاكسبرت يشتغل على الباك تست ولكن عند وضعه على حساب ديمو لا ياخذ عقود لكن هذا ليس مهم كالداله وما يجيبها غير رجالها مشكور
- 07-03-2013, 11:50 PM #3428
رد:موضوع مخصص للأسئلة البرمجية
لن تحتاج هذا الكود
لكن ستحتاج فقط إلى تعديل الشروط أنت تريد الدخول بعد تقاطع خطي الموفينج لذلك ستقوم بتعديل الشروط بحيث تقارن بين الموفينج في الشمعه السابقه والشمعه التاليه وتتأكد من التقاطع
مثال
كود PHP:void TechnicalAnalysis()
{
if (iMA(NULL, NULL,Periode1,0,MODE_EMA,PRICE_CLOSE,1) < iMA(NULL, NULL,Periode2,0,MODE_EMA,PRICE_CLOSE,1)&&
iMA(NULL, NULL,Periode1,0,MODE_EMA,PRICE_CLOSE,1) > iMA(NULL, NULL,Periode2,0,MODE_EMA,PRICE_CLOSE,1))
{
BuyOrder();
}
}
- 07-03-2013, 11:58 PM #3429
- 08-03-2013, 12:02 AM #3430
أخى الكريم أ / أسامة
هذه الدالة تقوم بحساب عدد العملات المفتوحة فإذا كان هناك عقود لليورو مفتوحة وعقود للين الناتج هيكون 2 عملة مفتوحة المشكلة انه اذا تم فتح يورو ثم ين ثم يورو يكون ناتج الدالة 3 وليس 2 فأرجو المساعدة فى حل هذه المشكلة
وجزاك الله خيرا
كود:int Real_Symb() { int N=-1; string S; for( int cnt=0; cnt<=OrdersTotal(); cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if ( ( OrderType()==OP_BUY || OrderType()==OP_SELL) ) if ( OrderSymbol()!=S ) { N++; S=OrderSymbol(); } } return(N); }
- 08-03-2013, 12:36 AM #3431
رد:موضوع مخصص للأسئلة البرمجية
تأكد من تفعيله بشكل صحيح وسوف يعمل وتأكد من عدم وجود أخطاء تظهر عند عمل الإكسبرت
بالنسبه للداله فيمكنك عملها بالشكل الآتي
كمثال على الإكسبرت السابق
قمت أولا بتعريف متغير خارجي لتحديد عدد الخساره اللازمه لفتح صفقه
كود PHP:extern int LostNumber=2;
كود PHP:double order[1][4];
بالنسبه للشراء
كود PHP:if ((ma22<=ma11&&ma2>ma1)&&Time0!=Time[0] ){
if(orderscnt()<1){
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;}
if(Lost>=LostNumber){
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),3*Q,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
order[0][0]=0;
Lost=0;
}
else {
order[0][0]=1;
order[0][1]=Ask;
order[0][2]=SL;
order[0][3]=TP;
}
PlaySound("Alert.wav");
Time0=Time[0];
}
}
كود PHP:if ((ma22>=ma11&&ma2<ma1)&&Time0!=Time[0] ){
if(orderscnt()<1){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
if(Lost>=LostNumber){
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),3*Q,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
order[0][0]=0;
Lost=0;
}
else {
order[0][0]=2;
order[0][1]=Ask;
order[0][2]=SL;
order[0][3]=TP;
}
PlaySound("Alert.wav");
Time0=Time[0];
}
}
كود PHP:if(order[0][0]==1)
{
if(Bid>=order[0][3])
{
// tp reached
Lost=0;order[0][0]=0;
}
if(Bid<=order[0][2])
{
//sl reached
Lost++;order[0][0]=0;
}
}
if(order[0][0]==2)
{
if(Ask<=order[0][3])
{
// tp reached
Lost=0;order[0][0]=0;
}
if(Ask>=order[0][2])
{
//sl reached
Lost++;order[0][0]=0;
}
}
- 08-03-2013, 12:43 AM #3432
يتحقق الشرط اذا تفعل امر معلق بيع ستوب مثلا الى بيع والمطلوب أن يعلق امر معلق شراء وليس بيع واذا تفعل شراء معلق الى شراء المطلوب تعليق عقد بيع ، وهنا المشكلة ولأنه لو كان يعلق شراء بدل الشراء المفعل او بيع بدل البيع المفعل كان الأمر بالنسبة لي سهل من خلال دالة توازن بين الطرفين . اذا نظرت الة كود الأكسبيرت ابحث عن الحرف SSSSS سيكون بنفس المكان الذي اعنيه . تحياتي لك أستاذي .
- 08-03-2013, 12:48 AM #3433
رد:موضوع مخصص للأسئلة البرمجية
قمت مستر دولار بالتعديل في النسخة 4.2
ولا يوجد اي اخطاء ومع ذلك لايدخل صفقات بتحقق شروط التقاطع وفي مرة وحيدة دخل صفقة
برجاء مراجعة الكود في الاكسبرت
وهل ممكن عدم دخول صفقات ان خاصية الانزلاق او slippage غير موجودة ام هناك خطا بالفعل في التعديل؟
شكرا استاذنا الغالي & تحياتي
- 08-03-2013, 01:56 AM #3434
أستاذي العزيز
تقاطع الموفينج فقط كمثال وما ذكرته واضح
لكن هناك مؤشرات لا ينطبق عليها هذا الشرط أو حتى مقارنة الاغلاق والافتتاح مع المؤشر
إذن فالبديل هو أن نقول للاكسبيرت إذا ضربت هدف (أو ستوب) صفقة الشراء فلا تفتح صفقة أخرى إلا عند فرصة البيع ... وهكذا هل يوجد كود يفعل هذا ؟
شاكر سعة صدرك وربنا يجازيك كل خير
شكراآخر تعديل بواسطة kira-h ، 08-03-2013 الساعة 02:00 AM
- 08-03-2013, 02:38 PM #3435
الف شكر استاذنا الفاضل على ردودك السريعه الله يعينك علينا لكا حقيقه انت مثل جوجل بالنسبه لنا هههههه الله يجزاك كل الخير ساجر الكود ونشالله انو يكون كلو تمام
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM