النتائج 7,216 إلى 7,230 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 26-03-2016, 09:16 PM #7216
- 27-03-2016, 05:36 AM #7217
آخر تعديل بواسطة femtogold4 ، 27-03-2016 الساعة 05:41 AM
- 27-03-2016, 12:12 PM #7218
- 28-03-2016, 08:12 PM #7219
- 28-03-2016, 08:22 PM #7220
نعم الطريقة صحيحه تماما ولا غبار عليها
يمكنك أيضا بدلا من إستخدام المصفوفات يمكنك المقارنة مباشرة بين الصفقات بحيث تحفظ ربح كل صفقة بالتي تليها
مثال
كود PHP:double profit1,profit2;
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();
int type=OrderType();
double lots=OrderLots();
if(OrderSymbol()==Symbol()&&OrderType()<=OP_SELL)
{
if(OrderType()==OP_BUY)profit1=(Bid-OrderOpenPrice())/Point;
else profit1=(OrderOpenPrice()-Ask)/Point;
profit1=OrderProfit();
for(int j=i-1;j>=0;j--)
{
OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()<=OP_SELL)
{
if(OrderType()==OP_BUY)profit2=(Bid-OrderOpenPrice())/Point;
else profit2=(OrderOpenPrice()-Ask)/Point;
if(profit2+profit1>45)
{
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
else
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
if(type==OP_BUY)
{
OrderClose(ticket,lots,Bid,3);
}
else
{
OrderClose(ticket,lots,Ask,3);
}
}
}
}
}
}
- 29-03-2016, 01:31 AM #7221
الله يعطيك العافية وصلت الفكرة , استاذ اسامة ..
لكن واجهت مشكلة ..
كنت استخدم دالة LastOrderPrice
كود PHP:double LastOrderPrice(int type){ for(int i =0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderType()==type) { return(OrderOpenPrice()); } } return(0);}
الان بوجود عدة مجموعات , بعد وضع رقم تيكيت الصفقة الرئيسية في الصفقات الهيدج او التبريد
كيف اقدر اعمل المقارنة او البحث لاستخراج , قيمة افتتاح اول صفقتين من كل مجموعة
وشكرا جزيلا
- 29-03-2016, 03:37 PM #7222كود PHP:
double Su[5];
Su[0]=1+2;
Su[1]=1+3;
Su[2]=1+4;
Su[3]=1+5;
Su[4]=1+6;
كود PHP:for(int i=0;i<5;i++)
{
if( Close[1]>Su[i]&& Su[i]>=Close[0] )
{
}
}
استخدم المستويات على شكل مصفوفه
اريد حين يتم تنفيذ على احد المستويات يتم كتابة اسم المستوى في كومينت الصفقة مثل Su[2]
حاولة استخدام Su[i] لكن يكتب لي قيمة المستوى ,
وشكرا جزيلا
- 29-03-2016, 05:22 PM #7223
استسمح الدكتور اسامة في الجواب
انظر اسفله اخي الكريم ستكون دالة الشراء الاساسية هكذا
كود PHP:int ticketb = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,sl,tp, IntegerToString(ticketb),Magic,0,Green);
بعد ذلك للبحث عن الصفقات والتحكم فيها من خلال الكومنت الذي احتفظنا بها بهذا الشكل
كود PHP:void OrderByTicket(){
int Myticket ;
for (int cnt=0; cnt<OrdersTotal(); cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
Myticket==StringToInteger(OrderComment());
{
If(Myticket== OrderTicket());
//Do some thing …..
}
}
}
اتبع نفس منطق الدالة التي كتبتها انت ولكن بدل الاحتفاظ بقيمة OpenPrice نحتفظ بالكومنت
هذا بالنسبة للسؤال الاول اما السؤال الثاني فستحتاج اللى دالة
كود PHP:ObjectName();
تحياتي للجميع
- 29-03-2016, 08:40 PM #7224
يجب ان تعكس اللوب وتبدأ من OrderTotal -1 الى الصفر لان الصفقة الرئيسية هي الصفقة الاولى
- 30-03-2016, 01:33 AM #7225
بارك الله فيك أستاذي
لم أفهم طريقة عمل المؤشر ولكن بعد التجربة لاحظت تغير قيمة البريك ايفن عند كل حركة للسعر صعودا وهبوطا
ما أريده هو عمل هدف إجمالي بعد نقطة التعادل 0 نقطة لصفقات الشراء والبيع معا
يعني مثل هذه الدالة التي تعمل على الشراء منفصل عن البيع أريدها على جميع الصفقات كيف ذلك
كود PHP:double Av_Prices(int type) { double Price;double lots; for(int i=0;i<=OrdersTotal();i++) { bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderType()==type) { Price+=OrderOpenPrice()*OrderLots(); lots+=OrderLots(); } } if(lots!=0)return(Price/lots); else return(0); } void AvBreakEven() { double ProfitS=Av_Prices(OP_SELL)-(Takeprofit*point); double ProfitB=Av_Prices(OP_BUY)+(Takeprofit*point); for(int cnt=0;cnt<OrdersTotal();cnt++) { bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); double orderstop=OrderStopLoss(); double openprice=OrderOpenPrice(); int ticket=OrderTicket(); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo) { if(OrderType()==OP_SELL) { bool m1=OrderModify(ticket,openprice,orderstop,ProfitS,0,Blue); } if(OrderType()==OP_BUY) { bool m2=OrderModify(ticket,openprice,orderstop,ProfitB,0,Red); } } } }
كود PHP:double All_Av_Prices() { double Price;double lots; for(int i=0;i<=OrdersTotal();i++) { bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL){ Price+=OrderOpenPrice()*OrderLots(); lots+=OrderLots(); } } if(lots!=0)return(Price/lots); else return(0); } void All_AvBreakEven() { double ProfitS=Av_Prices(OP_SELL)-MainProfit*point; double ProfitB=Av_Prices(OP_BUY)+MainProfit*point; double LossS=Av_Prices(OP_SELL)+MainProfit*point; double LossB=Av_Prices(OP_BUY)-MainProfit*point; for(int cnt=0;cnt<OrdersTotal();cnt++){ bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); double orderstop=OrderStopLoss(); double openprice=OrderOpenPrice(); int ticket=OrderTicket(); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){ bool m1=OrderModify(ticket,openprice,LossS,ProfitS,0,Blue); bool m2=OrderModify(ticket,openprice,LossB,ProfitB,0,Red); } } }
كل ما أريده هدف إجمالي بعد نقطة التعادل لكل الصفقاتآخر تعديل بواسطة femtogold4 ، 30-03-2016 الساعة 01:37 AM
- 30-03-2016, 02:28 AM #7226
الله يعطيك العافية اخووي goldfile .. ما قصرت
صار لي عدة شهور احاول برمجة الفكرة الى اكسبيرت , ومن الاسبوع السابق تفرغت للفكرة واحاول اجد حلول لجميع الخطوات
ومن كثر التفكير , الاستفسار السابق لم اعرف اصيغه صح << المعذره
وبسبب كثرة التفكير احس اني بعقد المسألة ,
لذلك سوف اشرح لك فكرة الاكسبيرت وارجو المساعدة في ايجاد الحلول , واعطاء الاكواد لكل حل
في كل مجموعة الصفقة تتفعل من كل مستوى مرة واحدة فقط
بعد فتح عدة صفقات ( هدف المجموعة , مجمل ناتج قيمة الصفقات تكون بالموجب )
المستويات ليست مؤشر بل معادلة حسابية
تتغير قيمة المستويات مع كل شمعة ( لذلك لا استطيع استخدام مسافة ثابتة )
واستخدم في تعريف المستويات هذا الكود
كود PHP:double Su[5];
Su[0]=1+2;
Su[1]=1+3;
Su[2]=1+4;
Su[3]=1+5;
Su[4]=1+6;
ارجوا ان وصلت لك الفكرة بالطريقة الصحيحة
وشكر جزيلاآخر تعديل بواسطة Profit Box ، 30-03-2016 الساعة 02:31 AM
- 30-03-2016, 02:16 PM #7227
- 31-03-2016, 04:26 PM #7228
السلام عليكم
شوف اخي الكريم المؤشر الذي ارفقه الدكتور اسامة من اروع ما رأيت في البريك ايفن يمكنك استخدامه بكامل السهولة مع اي اكسبريت تريد ولذلك
ارفقه الاخ اسامة وهو مفتوح المصدر , لا حظ بمجرد وضعه على الشارت يعطيك على اليمين سعر البريك ايفن وعلى يساره الربح بالدولار انظر الصورة
من داخل المؤشر احفظ قيمة BreakEven وكذلك Equity باستخدام الدالتين الظريفتن
كود PHP:GlobalVariableSet() ;
GlobalVariableGet() ;
كود PHP:GlobalVariableSet("BreakEven_Equity"+Symbol()+AccountName(),sum) ;
GlobalVariableSet("BreakEven_Level"+Symbol()+AccountName(),level0) ;
ثم من داخل الاكسبريت اعمل الاتي لاسترجاع القيم هكذا بكل يسر
كود PHP:iEquity = GlobalVariableGet("BreakEven_Equity"+Symbol()+AccountName()) ;
BreakLevel = GlobalVariableGet("BreakEven_Level"+Symbol()+AccountName()) ;
ثم بعد ذالك دالة الموديفاي وانا اكتبها في الغالب بهذا الشكل
كود PHP:void ModifyStopLoss(double stoploss) {
bool ret;
ret = OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,OrderTakeProfit(),0,CLR_NONE);
if (ret == false)
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
كود PHP:void BreakEven()
{
double price = BreakLevel ;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(Ask > OrderOpenPrice() && iEquity >=0 && OrderStopLoss()< OrderOpenPrice() )
if(OrderType()==OP_BUY)
ModifyStopLoss(BreakLevel) ;
if(OrderType()==OP_SELL)
if(Bid < OrderOpenPrice() && iEquity >=0 && OrderStopLoss()> OrderOpenPrice() )
ModifyStopLoss(BreakLevel) ;
}
}
- 31-03-2016, 04:37 PM #7229
السلام عليكم
اخي الكريم Profit Box بهذا الشكل انت تريد عمل اكسبريت كامل وانا لااستطيع ذلك يمكن الدكتور اسامة او احد الاخوة , اما اذا كنت بدأت العمل على الاكسبريت و تحتاج مساعدة في جزء معين منه او الاستفسار بخصوص
مشكلة اعترضتك فيمكنني مساعدتك الامر ليس صعب ولكن توكل على الله واعمل الخطوات الاولى وستجد المساعدة والدعم في منتدانا الغالي حتى تحصل على ما تريد
تقبل خالص تحياتي واعتذاري ايضا
اخي للكريم
- 01-04-2016, 04:43 AM #7230
الله يعطيك العافية .. ما قصرت
الحمدالله انا انتهيت من الاكسبيرت بس ينفذ مجموعة وحده , وحطيته على سيرفر وبتابع النتائج ..
حاليا بحاول اطوره انه ينفذ عدة مجموعات في نفس الوقت وواجهتني مشكلة وارجوا المساعدة
اريد ربط الصفقات عبر النمبر ماجيك
للصفقات الرئيسية في خانة النمبر ماجيك وضعت رقم التكيت لاعطاء كل صفقة رئيسية نمبر ماجيك خاص ( ارجوا التصحيح ان أخطأت )
كود PHP:OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3*Q,0,0,"EA",OrderTicket(),0,Red);
واريد استخدم دالة البحث عن عدة الصفقات المفتوحة لكل مجموعة
كود PHP:int orderscnt() { int cnt=0; for(int i =0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){ cnt++; } } } return(cnt); }
وشكرا جزيلا
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM