النتائج 3,886 إلى 3,900 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 22-05-2013, 03:55 PM #3886
- 23-05-2013, 04:09 AM #3887
رد:موضوع مخصص للأسئلة البرمجية
تفضل هذه الداله ستقبل الأرقام الصحيحه والأرقام العشريه
كود PHP:double BinaryNumber(double Number)
{
string FloatValue;
int IntPart=Number;
double FloatPart=Number-IntPart;
int Reminder,Binary;
int i=1;
while(IntPart>0)
{
Reminder=IntPart%2;
Binary=Binary + (i*Reminder);
IntPart=IntPart/2;
i=i*10;
}
int Repeats;
if(FloatPart>0)
{
while(FloatPart!=1&&Repeats<50)
{
Repeats++;
FloatPart*=2;
if(FloatPart<1)
{
FloatValue=FloatValue+"0";
}
else if(FloatPart>=1)
{
FloatValue=FloatValue+"1";
FloatPart--;
}
}
}
return(Binary+StrToDouble("."+FloatValue));
}
- 23-05-2013, 04:11 AM #3888
رد:موضوع مخصص للأسئلة البرمجية
ستستخدم نفس دالة التريلينج ستوب لكن بدلا من أن تقارن الأستوب لوز للصفقه بالسعر الحالي ستقرن سعر وضع الأمر المعلق مع السعر الحالي وإذا كان السعر أكبر مثلا من المسافه المحدده يتم تعديل الأمر OrderModify
لكن تقوم بتغيير سعر الأمر المعلق وليس الأستوب لوز
أذكر أني قمت بعمل نفس الداله سابقا في سؤال سابق جرب عملها
- 23-05-2013, 11:23 AM #3889
- 23-05-2013, 11:28 AM #3890
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم استاذى الكريم
وجزاك الله خير على المساعدة الكريمة
استاذى الكريم
كنت اطمع من كرمك بعمل هذه الدالة
بطريقة
يوجد صفقة بيع وتعليق صفقة بيع لميت
على بعد مسافة الاستيب
مع تحرك صفقة البيع الى 10 نقاط يتحرك الامر المعلق الى اسفل
ولو كانت الصفقة شراء يتم تعليق صفقة شراء لميت
ومع تحرك السعر الى الربح 10 يتحرك الصفقة المعلة كل 10 نقاط
ارجو المساعدة الكريمة من شخصك الكريم فى عمل هذه الدالة
وجزاك الله عنا كل خير
كود PHP:void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_SELL)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*pt,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*pt,Digits))
{
if((NormalizeDouble(OrderOpenPrice(),Digits)<NormalizeDouble(Bid-TrailingStop*pt,Digits)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*pt,Digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*pt,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*pt,Digits))
{
if((NormalizeDouble(OrderOpenPrice(),Digits)>(NormalizeDouble(Ask+TrailingStop*pt,Digits))))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*pt,Digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
- 23-05-2013, 04:07 PM #3891
الاخ العزيز الذي استفدت منه كثيرا الاستاذ أسامه
أعلم يا اخي اني أحبك كثيرا في الله لاني استفدت كثيرا في تعلم البرمجةعلى يدك وعلى كل الاكسبرتات مفتوحة الكود التي تضعها بمشاركاتك جزاك الله عني وعن كل مستفيد منها كل الخير
طلب صغير لو تكرمت وهو أولى طلباتي البرمجية من حضرتك او الأخوة المبرمجين أعضاء الموقع الكرام
قمت بتصميم اكسبرت بسيط وهو أولى اكسبرتاتي لعلها تكون بداية خير ان شاء الله ولكن وقفت ومش قادر اكمل لعجزي الشديد في المحاولات وسهر الليالي لايجاد حل لمثل تلك الاكواد التي احتاج من حضرتك حلها لي بارك الله فيك
فكرتي تتلخص في
1- احتاج الدالة المسؤلة عن احتساب الربح السابق لاخر صفقات مغلقة بواسطة الاكسبرت لمعرفة هل خسرت ام ربحت
2- احتاج الدالة المسؤلة عن مضاعفة الصفقات الخسرانه بالمتوالية الحسابية 1 2 4 8 16
فيا ريت تساعدني في ذلك
واحب اوضح فكرتي أكثر لحضرتك كالتالي
1- عند افتتاح شمعة ساعه يقوم الاكسبرت بالبحث عن هل يوجد صفقات مفتوحه من قبله ام لا فان كان الجواب لا يقوم بفتح صفقة جديده حسب شروط الدخول بيع او شراء باللوت المبدئي كمتغير خارجي من متغيرات الاكسبرت يعني ألا يكون هناك اي صفقات مفتوحه اطلاقا
2- في حالة الوصول للربح المطلوب TakeProfit او ضرب StopLoss يقوم الاكسبرت بفتح صفقة جديدة مع افتتاح الشمعه الجديدة ( شمعة الساعة ) ولكن اذا كانت الصفقة السابقة ضربت StopLoss يقوم بالدخول بلوت ضعف اللوت السابق اما لو حققت الهدف فيدخل على حسب اللوت المبدئي من جديد وهكذا
بمعنى أوضح يكون شروط الدخول العادي (( بدون مضاعفات ))
أ - لا يوجد أي صفقات مفتوحة من قبل الاكسبرت
ب - ان تكون الصفقة السابقة حققت هدفها
ج - لا يفتح اي صفقات جديدة مع بداية شمعة الساعه طالما يوجد صفقة مفتوحه لم تحقق هدف او خسارة
أما شروط الدخول مضاعفات 1 2 4 8 16 ..... الخ فهي كالتالي
أ- لا يوجد أي صفقات مفتوحة من قبل الاكسبرت
ب- الصفقة السابقة سواء كانت بيع او شراء ضربت StopLoss
كما أرجو التكرم بوضح الأكواد البرمجية وترك مكان فارغ لوضع شروط الدخول بيع وشراء فيه
جزاك الله خير استاذ أسامة
تقبل خالص تحياتي
- 23-05-2013, 08:53 PM #3892
رد:موضوع مخصص للأسئلة البرمجية
الأخ العزيز استاذ أسامة راجعت مشاركاتك وردودك مع باقي الاخوة الاعضاء ووصلت إلى ضالتي
ولكن
دائما الاكسبرت لا يفتح أي صفقات ويظهر لي خطأ في الجورنال 4051
invalid lots amount for ordersend function
سوف ارفق الكود طمعا في كرمك لتعليم باقي الاعضاء
جزاك الله خير
المطلوب تحديدا من الاكسبرت هو
- عند افتتاح كل شمعة جديدة يقوم بالبحث عن
هل يوجد صفقات مفتوحة ام لا
هل تم اغلاق الصفقة السابقة بربح ام خسارة
فان كان يوجد صفقات مفتوحة فلا يقوم بفتح أي صفقة جديدا اطلاقا
أما اذاكانت لا توجد أي صفقات مفتوحة فيقوم الاكسبرت بالبحث في الصفقات المغلقة هل اغلقت بربح ام خسارة فان اغلقت بربح فيقوم الاكسبرت بفتح صفقة جديدة باللوت المبدئي Lot أما ان كانت أخر صفقة خاسرة فيقوم بفتح صفقة جديدة بالمضاعفات 1 2 4 8 16 NewLot
بانتظار ردك أخي الكريم
كود PHP://+------------------------------------------------------------------+
//| Buy Multiplication Order conditions |
//+------------------------------------------------------------------+
if(OP>MAX && T!=Time[0]&& orderstotal()<1 && LastOrderProfit()<0 )
{
NewLot=LastOrderLots()*Multiplier;
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,NewLot,NormalizeDouble(Ask,digits),3*D,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"waleed EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
T=Time[0];
}
//+------------------------------------------------------------------+
//| Sell Multiplication Order conditions |
//+------------------------------------------------------------------+
if (OP<MIN && T!=Time[0] && orderstotal()<1 && LastOrderProfit()<0)
{
NewLot=LastOrderLots()*Multiplier;
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,NewLot,NormalizeDouble(Bid,digits),3*D,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"Waleed EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
T=Time[0];
}
//+------------------------------------------------------------------+
//| Buy Order conditions |
//+------------------------------------------------------------------+
if(OP>MAX && T!=Time[0] && orderstotal()<1)
{
if (StopLoss==0)SL=0;else SL=Ask-StopLoss*point;
if (TakeProfit==0)TP=0; else TP=Ask+TakeProfit*point;
OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,digits),3*D,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"Waleed EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
T=Time[0];
}
//+------------------------------------------------------------------+
//| Sell Order conditions |
//+------------------------------------------------------------------+
if (OP<MIN && T!=Time[0] && orderstotal()<1)
{
if (StopLoss==0)SL=0; else SL=Bid+StopLoss*point;
if (TakeProfit==0) TP=0; else TP=Bid-TakeProfit*point;
OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,digits),3*D,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"Waleed EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
T=Time[0];
}
- 24-05-2013, 12:02 AM #3893
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
تفضل هذا كمثال
كود PHP:void MoveTrailingPending()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_SELLLIMIT)
{
if(NormalizeDouble(OrderOpenPrice(),Digits)>NormalizeDouble(Bid+Step*pt,Digits))
{
OrderModify(OrderTicket(),NormalizeDouble(Bid+Step*pt,Digits),OrderStopLoss(),OrderTakeProfit(),0,Blue);
}
}
else if(OrderType()==OP_BUYLIMIT)
{
if(NormalizeDouble(OrderOpenPrice(),Digits)<NormalizeDouble(Ask-Step*pt,Digits))
{
OrderModify(OrderTicket(),NormalizeDouble(Ask-Step*pt,Digits),OrderStopLoss(),OrderTakeProfit(),0,Red);
}
}
}
}
}
- 24-05-2013, 12:08 AM #3894
رد:موضوع مخصص للأسئلة البرمجية
أولا سوف تحتاج إلى دالة لمعرفة ربح آخر صفقة
مثال
كود PHP:double LastOrderProfit()
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderProfit());
}
}
return(0);
}
مثال
كود PHP:double LastOrderLot()
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
return(OrderLots());
}
}
return(0);
}
مثلا إذا كان الأمر القادم شراء
كود PHP:double NewLot;
if(LastOrderProfit()<0)NewLot=LastOrderLot()*2;
else NewLot=FirstLot;
OrderSend(Symbol(),OP_BUY,NewLot,NormalizeDouble(Ask,Digits),3,SL,TP,"EA",MagicNumber,0,Blue);
- 24-05-2013, 12:58 AM #3895
رد:موضوع مخصص للأسئلة البرمجية
- 24-05-2013, 01:41 PM #3896
شكرا استاذ اسامه والله العظيم برنس
ربنا يخليك لينا يا استاذنا
وأرجو تقبل أسئلتي الكثيره المرات القادمة لأني بدأت جديا في طريق تعلم البرمجة
جزاك الله خيرآخر تعديل بواسطة waleedgadelmola ، 24-05-2013 الساعة 01:51 PM
- 24-05-2013, 02:40 PM #3897
- 24-05-2013, 02:57 PM #3898
- 24-05-2013, 03:00 PM #3899
- 24-05-2013, 03:20 PM #3900
رد:موضوع مخصص للأسئلة البرمجية
استاذ سمير
انا اريد ان اقرا البيانات لليوم السابق عن طريق المنصة الى ملف اكسل وقمت بتنفيذ شرح الاستاذ مستر دولار ولكن البيانات التي تظهر هي لليوم الحالي مرفق الصورة انا احتاج
الافتتاح + والاغلاق + والهاي + واللو لليوم السابق
ولكم جزيل الشكر المقدمآخر تعديل بواسطة ziyadiah ، 24-05-2013 الساعة 03:24 PM
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM