المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : اضافة بسيطة



KaRiM
14-03-2018, 07:49 PM
السلام عليكم
يرجى من الاستاذ حسن اضافة خاصية مضاعفة اللوت عند الصفقة الخاسرة في الاكسبرت المرفق
و شكرا

KaRiM
15-03-2018, 09:15 AM
دالة مضاعفات الضرب

نقوم بعمل المتغيرات الخارجية التالية :


input double Lots=0.01,
LotsMP=2,
MaxLots=5;


نقوم بعمل دالة فرعية لمعرفة تفاصيل آخر صفقة مغلقة كالتالي :


double LastOrder(string info,int type=-1)
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol(),
mm=OrderComment();
int mn=OrderMagicNumber(),
ty=OrderType();
double lo=OrderLots(),
op=OrderOpenPrice(),
cp=OrderClosePrice(),
pt=OrderProfit(),
tp=OrderTakeProfit(),
sl=OrderStopLoss();
datetime om=OrderOpenTime(),
cm=OrderCloseTime();

if(sy==Symbol()&&mn==MagicNo)
{
if(ty==type||type==-1)
{
if(info=="Lots")return(lo);
else if(info=="OpenPrice")return(op);
else if(info=="ClosePrice")return(cp);
else if(info=="Profit")return(pt);
else if(info=="Type")return(ty);
else if(info=="TP")return(tp);
else if(info=="SL")return(sl);
else if(info=="OpenTime")return(om);
else if(info=="CloseTime")return(cm);
else if(info=="Comment")return(mm);
}
}
}
return(0);
}


ثم نقوم بإضافة شروط مضاعفات الضرب بدالتي الشراء والبيع كالتالي :


void SellOrder()
{
double NewLots,TP,SL;
if(LotsMp>0)
{
if(LastOrder("Profit")<0)NewLots=MathMin(NormalizeDouble(LastOrder("Lots")*LotsMP,2),MarketInfo(Symbol(),MODE_MAXLOT));
if(LastOrder("Profit")>=0)NewLots=Lots;
}
else NewLots=Lots;
if(NewLots>=MaxLots)NewLots=Lots;
if(Stoploss!=0){SL=Bid+Stoploss*point;}else SL=0;
if(Takeprofit!=0){TP=Bid-Takeprofit*point;}else TP=0;
tk=OrderSend(Symbol(),OP_SELL,NewLots,NormalizeDou ble(Bid,Digits),5*Q,SL,TP,"Kira-h",MagicNo,0,Red);
}

void BuyOrder()
{
double NewLots,TP,SL;
if(LotsMp>0)
{
if(LastOrder("Profit")<0)NewLots=MathMin(NormalizeDouble(LastOrder("Lots")*LotsMP,2),MarketInfo(Symbol(),MODE_MAXLOT));
if(LastOrder("Profit")>=0)NewLots=Lots;
}
else NewLots=Lots;
if(NewLots>=MaxLots)NewLots=Lots;
if(Stoploss!=0){SL=Ask-Stoploss*point;}else SL=0;
if(Takeprofit!=0){TP=Ask+Takeprofit*point;}else TP=0;
tk=OrderSend(Symbol(),OP_BUY,NewLots,NormalizeDoub le(Ask,Digits),5*Q,SL,TP,"Kira-h",MagicNo,0,Blue);
}


كم افهم كيفية اضافة هذا الكود الى الاكسبرت ؟؟
اين بالضبط؟؟
و شكرا

kira-h
15-03-2018, 09:21 PM
وعليكم السلام
مرفق الاكسبيرت

KaRiM
15-03-2018, 09:38 PM
وعليكم السلام
مرفق الاكسبيرت
شكرا جزيلا لك استاذنا

kira-h
15-03-2018, 10:58 PM
بالتوفيق إن شاء الله

KaRiM
18-03-2018, 08:22 PM
وعليكم السلام
مرفق الاكسبيرت
للاسف استاذ حسن يوجد مشكلة بسيطة و هي ان مضاعفات الشراء تعمل منفصلة عن مضاعفات البيع
يرجى اصلاح الخلل عبر جعل المضاعفات تعمل على نتيجة اخر صفقة بغض النظر عن نوعها
و شكرا مقدما لك

kira-h
19-03-2018, 02:50 AM
هذا لأنك جعلت الماجك نمبر بدالة الشراء مختلف عن الماجك نمبر بدالة البيع
جرب النسخة المرفقة

KaRiM
19-03-2018, 12:32 PM
هذا لأنك جعلت الماجك نمبر بدالة الشراء مختلف عن الماجك نمبر بدالة البيع
جرب النسخة المرفقة
شكرا جزيلا لك استاذنا

kira-h
19-03-2018, 04:26 PM
بالتوفيق ان شاء الله