النتائج 1 إلى 15 من 41
- 09-04-2018, 06:16 PM #1
برمجة اكسبريت للاوامر المعلقة وفقا لمعادلة كيلي
السلام عليكم ورحمة الله وبركاته
اتمنى ان الاخوة المساعدة في عمل اكسبريت يقوم بوضع اوامر معلقة والدخول اعتماد على معادلة كيلي على النحو التالي :
في النافذة الخارجية يتم وضع :
1- قيمة سعر الشراء
2- قيمة سعر البيع
3- الهدف بالنقاط
4- وقف الخسارة بالنقاط
5- قيمة المخاطرة
يتم احتساب قيمة اللوت في كل خطوة يتم فيها ضرب الاستوب العكسي على النحو التالي :
على سبيل المثال تم الدخول شراء ثم عكس وضرب الاستوب وفعل صفقة البيع
الريشو = قيمة الهدف ÷ قيمة الاستوب لوز
قيمة كيلي = (( قيمة المخاطرة × قيمة الريشو ) - ( 1 - قيمة المخاطرة)) ÷ قيمة الريشو
قيمة اللوت للصفقات = (اجمالي الحساب النهائي × قيمة كيلي ) ÷ 100
الميزة في هذه الحالة اننا بالتحكم بقيمة كيلي قد نوصل المضاعفات الى اكثر من 15 مضاعفة مع الحفاظ على راس المال دون خسارة
يتبقى بعد هذا الخبير تطبيقه على مختلف الطرق للخلاص الى طريقة تكفل عدم تكرار المضاعفات بما لا يزيد عن 10 في اقصى الحالات لضمان ارباح متتالية بحول الله
- 09-04-2018, 06:23 PM #2
- 10-04-2018, 08:56 PM #3
هل من مشمر عن ساعده
- 22-04-2018, 02:54 PM #4
لله يا محسنين
- 22-04-2018, 11:51 PM #5
- 25-04-2018, 10:41 AM #6
- 25-04-2018, 08:40 PM #7
ان شاء الله يتيسر لك من يعينك اخي .
- 03-05-2018, 10:40 AM #8
- 04-05-2018, 11:15 AM #9
السلام عليكم
+1
- 20-05-2018, 11:30 AM #10
- 04-06-2018, 12:28 PM #11
- 04-06-2018, 05:29 PM #12
السلام عليكم اخي الكريم
اعتقد اكسبيرتات الاوامر المعلقة كثيرة بالمنتدى ... ما تريد هو دالة حساب اللوت وفق المعادلة التي طرحتها
ولا ايه رايك اخي الكريم وعليك ان تتذكر ان عدم الرد ليس تجاهل ولكن الظروف صعبة شوي والتفرغ للاستجابة لطلبات الاعضاء
امر شبه مستحيل
تقبل ودي
- 05-06-2018, 09:43 AM #13
وعليكم السلام ورحمة الله
نعم اخي الكريم اكسبيرتات الاوامر المعلقة كثيرة
ولكن الفكرة المختلفة هنا هي دمج هذه المعادلة لحساب اللوت وذلك لضمان الدخول في مضاعفات بشكل منسق
يكفل لنا ضمان الدخول في الصفقات بنسبة فوق 50% مارجن مع ضمان عدد مضاعفات كبيرة وكذلك معرفة افضل استوب لوز ومناسبة الهدف معه
مرفق اكسل شيت يسهل فهم الامر
- 05-06-2018, 09:57 AM #14
- 07-06-2018, 11:31 AM #15
هذه محاولة للتعديل على اكسبريت قائم
محاولة تعديل فاشلة
كود:input double Step=20, TakeProfit=20, StopLoss=20, Multiplier=2; double Rishuo; double Killy; input string MM_Parameters=" Money Management "; input double Risk=25; input double Lots=(Balance * (((Risk *(TakeProfit / StopLoss ))-(1-Risk))/ (TakeProfit / StopLoss)))/ 100;
كود://+------------------------------------------------------------------+ //| www.arabictrader.com | //| MR.dollar | //+------------------------------------------------------------------+ //Modified by Kira-h //www.forexprog.com #property copyright "MR.dollarEA, Modified by Kira-h" #property link "[email protected]" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ input bool OpenBuy=true, ContinueTrading=true, EnableTimeFilter=false; input string Start_Hour="00:00", End_Hour="23:00"; input string info_1=" Multiplier Settings "; input double Step=20, TakeProfit=20, StopLoss=20, Multiplier=2; double Rishuo; double Killy; input string MM_Parameters=" Money Management "; input double Risk=25; input double Lots=(Balance * (((Risk *(TakeProfit / StopLoss ))-(1-Risk))/ (TakeProfit / StopLoss)))/ 100; input bool MoneyManagement=false; input int MagicNumber=2035; double point; int digits,P; int lot_digits; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { if(MarketInfo(Symbol(),MODE_MINLOT)<0.1)lot_digits=2;else lot_digits=1; if(Digits==5 || Digits==3)P=10;else P=1; if(Digits<4){point=0.01;digits=2;}else{point=0.0001;digits=4;} //---- double p,TP,SL,newLot; int ticket; //---- if(EnableTimeFilter&&TimeFilter(Start_Hour,End_Hour)==false)return(0); //---- if(MoneyManagement) newLot=LotManage();else newLot=Lots; //---- if(orderscnt()==0&&!ContinueTrading) { if(OpenBuy) { if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;} if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;} ticket=OrderSend(Symbol(),OP_BUY,NormalizeDouble(newLot,lot_digits),NormalizeDouble(Ask,digits),3*P,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"EA1",MagicNumber,0,Blue); if(ticket<0)Print("Open Buy Error: "+GetLastError()); } else { if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;} if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;} ticket=OrderSend(Symbol(),OP_SELL,NormalizeDouble(newLot,lot_digits),NormalizeDouble(Bid,digits),3*P,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"EA1",MagicNumber,0,Red); if(ticket<0)Print("Open Sell Error: "+GetLastError()); } } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| FUNCTION DEFINITIONS deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason){Comment("");} //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int orderscnt(int type=-1) { int cnt=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber() && (OrderType()==type || type==-1)) { cnt++; } } } return(cnt); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool TimeFilter(string StartH,string EndH) { datetime Start=StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+StartH); datetime End=StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+EndH); if(!(Time[0]>=Start && Time[0]<=End)) { return(false); } return(true); } //+------------------------------------------------------------------+ //| FUNCTION DEFINITIONS Start function | //+------------------------------------------------------------------+ void OnTick() { Comment("Programmed By MR.dollar\n"+"www.ArabicTrader.com\n"+"Modified by Kira-h\n"+"www.forexprog.com"); if(orderscnt(OP_BUYSTOP)>0&&orderscnt()==1)CloseAll(OP_BUYSTOP); if(orderscnt(OP_SELLSTOP)>0&&orderscnt()==1)CloseAll(OP_SELLSTOP); if(orderscnt(OP_BUY)==1&&LastComment(OP_SELLSTOP)=="EA1")CloseAll(OP_SELLSTOP); if(orderscnt(OP_SELL)==1&&LastComment(OP_BUYSTOP)=="EA1")CloseAll(OP_BUYSTOP); if(orderscnt(OP_BUY)>0&&orderscnt(OP_SELL)==0) { if(LastClosedOrderInfo("Time",OP_SELL)>LastCurrentOrderInfo("Time")) { CloseAll(); } } if(orderscnt(OP_SELL)>0&&orderscnt(OP_BUY)==0) { if(LastClosedOrderInfo("Time",OP_BUY)>LastCurrentOrderInfo("Time")) { CloseAll(); } } //---- double newLot,TP,SL,price,multiplier=Multiplier; int ticket; if(orderscnt()==0&&LastClosedOrderInfo("Profit")<0) { if(LastClosedOrderInfo("Type")==OP_BUY) { if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;} if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;} newLot=NormalizeDouble(LastClosedOrderInfo("Lots",OP_BUY)*multiplier,lot_digits); ticket=OrderSend(Symbol(),OP_SELL,NormalizeDouble(newLot,lot_digits),NormalizeDouble(Bid,digits),3*P,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"EA",MagicNumber,0,Red); if(ticket<0)Print("Open Sell Stop Error: "+GetLastError()); } if(LastClosedOrderInfo("Type")==OP_SELL) { if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;} if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;} newLot=NormalizeDouble(LastClosedOrderInfo("Lots",OP_SELL)*multiplier,lot_digits); ticket=OrderSend(Symbol(),OP_BUY,NormalizeDouble(newLot,lot_digits),NormalizeDouble(Ask,digits),3*P,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"EA",MagicNumber,0,Blue); if(ticket<0)Print("Open Buy Stop Error: "+GetLastError()); } } //---- //////////////////////////////////////////////////// if(EnableTimeFilter&&TimeFilter(Start_Hour,End_Hour)==false)return; //---- if(MoneyManagement)newLot=LotManage();else newLot=Lots; //---- double p; if(orderscnt()==0&&ContinueTrading&&LastClosedOrderInfo("Profit")>=0) { if(OpenBuy) { if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;} if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;} ticket=OrderSend(Symbol(),OP_BUY,NormalizeDouble(newLot,lot_digits),NormalizeDouble(Ask,digits),3*P,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"EA1",MagicNumber,0,Blue); if(ticket<0)Print("Open Buy Error: "+GetLastError()); } else { if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;} if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;} ticket=OrderSend(Symbol(),OP_SELL,NormalizeDouble(newLot,lot_digits),NormalizeDouble(Bid,digits),3*P,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),"EA1",MagicNumber,0,Red); if(ticket<0)Print("Open Sell Error: "+GetLastError()); } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double LastClosedOrderInfo(string info,int type=-1) { for(int i=OrdersHistoryTotal()-1;i>=0;i--) { bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && (OrderType()==type || type==-1)) { if(info=="Type")return(OrderType()); else if(info=="Lots")return(OrderLots()); else if(info=="Price")return(OrderOpenPrice()); else if(info=="TP")return(OrderTakeProfit()); else if(info=="SL")return(OrderStopLoss()); else if(info=="Profit")return(OrderProfit()); else if(info=="Time")return(OrderCloseTime()); } } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double LastCurrentOrderInfo(string info,int type=-1) { for(int i=OrdersTotal()-1;i>=0;i--) { bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && (OrderType()==type || type==-1)) { if(info=="Type")return(OrderType()); else if(info=="Lots")return(OrderLots()); else if(info=="Price")return(OrderOpenPrice()); else if(info=="TP")return(OrderTakeProfit()); else if(info=="SL")return(OrderStopLoss()); else if(info=="Profit")return(OrderProfit()); else if(info=="Time")return(OrderOpenTime()); } } return(0); } string LastComment(int type=-1) { for(int i=OrdersTotal()-1;i>=0;i--) { bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && (OrderType()==type || type==-1)) { return(OrderComment()); } } return(0); } //+------------------------------------------------------------------+ //| FUNCTION DEFINITIONS Money Managment | //+------------------------------------------------------------------+ double LotManage() { double lot=MathCeil(AccountFreeMargin() *Risk/1000)/100; if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT); if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT); return (NormalizeDouble(lot,2)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseAll(int type=-1) { for(int i=OrdersTotal()-1;i>=0;i--) { bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && (OrderType()==type||type==-1)) { if(OrderType()==OP_BUY) { bool close_b=OrderClose(OrderTicket(),OrderLots(),Bid,3*P); } else if(OrderType()==OP_SELL) { bool close_s=OrderClose(OrderTicket(),OrderLots(),Ask,3*P); } else { bool del=OrderDelete(OrderTicket()); } } } } //+---------------------------------------------------------------------------------+