النتائج 1 إلى 5 من 5
- 17-08-2012, 01:13 AM #1
طلب كود من مستر دولار والخبراء او اكسبرت فيه نفس النظام
السلام عليكم ورحمة الله وبركاته
طلبي هو كود شبيه بملاحقة الربح ولاكن لمجموع الصفقات وليس كل صفقه لحالها
مثال : دخل عقد بيع ثم دخل عقد بيع ثاني مجرد ما ربح مثلا 20 نقطه للمجموع يقدم الاستوب كل صفقات الييع الى ربح 10 نقاط وكل مره يعمل تحريك الاستوب حسب عدد العقود وكمية الربح
اذا احد الاخوان عنده اكسبرت يعمل على نفس الطريقه ممكن ارفاقه
وجزاكم الله خير
- 17-08-2012, 07:38 AM #2
وعليكم السلام ورحمة الله وبركاته
في البداية ستقوم بعمل دالة لمعرفة متوسط سعر الدخول لجميع الصفقات والذي عنده يكون مجموع الربح = 0
كود PHP:double AvTP(int type){
double Price;double Lots;
for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
Price+=OrderOpenPrice()*OrderLots();
Lots+=OrderLots();
}
}
if(Price!=0&&Lots!=0) return(Price/Lots);
}
مثال
كود PHP:void ModifyAverageTrailingStop()
{
int cnt;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(AvTP(OP_BUY)+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(AvTP(OP_BUY)-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(AvTP(OP_BUY)-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(AvTP(OP_SELL)-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(AvTP(OP_SELL)+TrailingStop*point,digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(AvTP(OP_SELL)+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
كود PHP:extern int TrailingStop=0;
extern int TrailingStep=0;
- 17-08-2012, 08:17 PM #3
- 18-08-2012, 03:14 AM #4
الخطأ كان في دالة التريلينج ستوب فقط
الصحيح
كود PHP:void ModifyAverageTrailingStop()
{
int cnt;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(AvTP(OP_BUY)+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(AvTP(OP_BUY)-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(AvTP(OP_BUY)-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(AvTP(OP_SELL)-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(AvTP(OP_SELL)+TrailingStop*point,digits)))||(OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(AvTP(OP_SELL)+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
- 21-08-2012, 03:06 PM #5
شكرا اخي اسامه وكل عام وانت بخير