وعليكم السلام ورحمة الله وبركاته
نعم هذا الطبيعي ما يجب أن يحدث بما أنك تستخدم الداله OrderSelect لتحديد كل صفقه ثم تستخدم الأمر OrderModify لتعديل قيم هذا الأمر
أم أن سؤالك تقصد شيء آخر ؟
Printable View
السلام عليكم يا استاذنا الكريم
من فضلك هل يمكنك مسعدتي لاتمام الاكسبرت الذين انا فيه اريد ان اضيف له هذه النقاط:
1-ان يقوم بغلق الصفقات الرابحة من الساعة 20.00 يوم الجمعةويعود للعمل يوم الاثنين.
2-ان تكون الصفقات المفتوحة لا تفوق 2صفقة .
3-ان اقوم بمعادلة لكي طعطيني سعر الاستوب لوز للصفقة المفتوحة.
واشكرك استاذنا الغالي على ردودك
يمكنك إستخدام هذه الداله لتحديد حجم اللوت
قم بتعريفها خارج الداله start ثم إستخدم الداله قبل الأمر OrderSend لتحديد حجم اللوتكود PHP: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,Lot_Decimal));
}
مستر دولار هل يوجد شئ او كتاب يعلم البرمجة قد اتعلم واساعدك فى هذا القسم
السلام عليكم يا استاذنا الكريم
من فضلك هل يمكنك مسعدتي لاتمام الاكسبرت الذين انا فيه اريد ان اضيف له هذه النقاط:
1-ان يقوم بغلق الصفقات الرابحة من الساعة 20.00 يوم الجمعةويعود للعمل يوم الاثنين.
2-ان تكون الصفقات المفتوحة لا تفوق 2صفقة .
3-ان اقوم بمعادلة لكي طعطيني سعر الاستوب لوز للصفقة المفتوحة.
واشكرك استاذنا الغالي على ردودك
بارك الله فيك استاذنا العزيز
نعم هذا ما اريده وللتوضيح اكثر
الاكيوتى 1000 ووضعت التراجع 100 مثلا
فى البدايه يحسب الاكيوتى 1000
اذا قل عن ذلك يستمر بحفظ القيمه كما هى 1000
واذا زاد ووصل مثلا الى 1250
اريده اذا تراجع الى 1150 وهى 1250 اعلى قيمه - 100 التراجع يغلق كل الصفقات
او بطريقه اخرى المخزن 1000 والتراجع 100
اذا صعد ل 1250 ثم هبط الى 1100 يغلق كل الصفقات (ايهما يصح فى الطريقتين)
بنفس فكرة التراجع فى الربح الذى قمت حضرتك بعمله فى داله سابقه
والتى قمت بالاستعانه بفكرتها فى هذه الداله
وهذه هى الداله الاصليه لك
كود PHP:void HiddenTrailingBalancePercent()
{
double ProfitPercent=AccountProfit();
if(ProfitPercent>=StartTrailingPercent&&(GlobalVariableGet("TS Percent")<ProfitPercent-StartTrailingPercent||GlobalVariableGet("TS Percent")==0))
{
GlobalVariableSet("TS Percent",ProfitPercent-StartTrailingPercent);
}
if(ProfitPercent<=GlobalVariableGet("TS Percent")&&GlobalVariableGet("TS Percent")!=0)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
bool closeB=OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if(OrderType()==OP_SELL)
{
bool closeS=OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
GlobalVariableDel("TS Percent");
}
}
السلام عليكم استاذى الكريم
انا محتاج دالة التريلينج استوب والبريك ايفن
تعمل مع كل صفقة لوحده
بمعنى
الاكسبيرت فتح شراء وبعد مسافة فتح شراء ثانى وبعد مسافة فتح صفقة
انا عايز لكل صفقة منهم خط التريلينج استوب مستقل بكل صفقة فقط وليس يعمل على مجموع الصفقات
ونفس الشئ فى البريك ايفن
لكل صفقة عند الوصول على الرقم الموجود فى خانة البريك ايفن يتم وضع الاستوب لهذه الصفقة فقط
هذا هو المطلوب
ولك الشكر والعرفان
تحياتى لك
السلام عليكم
اريد دالة التريلنج ستوب لتظهر على الشارت على هيئة خطوط
وعليكم السلام ورحمة الله وبركاته
بنفس دالة التريلينج ستوب لكن سوف تستخدم الداله ObjectCreate لرسم خط مكان النقطة الأستوب الجديده
مثال
كود PHP:void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))
{
if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
{
bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
CreateLine("TS"+OrderTicket(),NormalizeDouble(Bid-TrailingStop*point,Digits));
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))
{
if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
{
modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
CreateLine("TS"+OrderTicket(),NormalizeDouble(Ask+TrailingStop*point,Digits));
}
}
}
}
}
}
void CreateLine(string name,double price)
{
if(ObjectFind(name)==-1)
{
ObjectCreate(name,OBJ_HLINE,0,0,price);
ObjectSet(name,OBJPROP_COLOR,Red);
}
else if(ObjectGet(name,OBJPROP_PRICE1)!=price)
{
ObjectSet(name,OBJPROP_PRICE1,price);
}
}
هذه الداله ستقوم بعمل التريلينج ستوب والبريك إيفن لكل صفقه على حده
كود PHP:void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))
{
if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
{
bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))
{
if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
{
modify=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
void MoveBreakEven()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(BreakEven>0)
{
if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>BreakEven*point)
{
if(OrderStopLoss()==0||OrderStopLoss()<OrderOpenPrice()+BreakEvenPips*point)
{
bool modify= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+BreakEvenPips*point,Digits),OrderTakeProfit(),0,Blue);
}
}
}
}
else
{
if(BreakEven>0)
{
if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>BreakEven*point)
{
if(OrderStopLoss()==0||OrderStopLoss()>OrderOpenPrice()-BreakEvenPips*point)
{
modify= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-BreakEvenPips*point,Digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
}
اخي اقصد دالة مؤشر هاي لو مثل السوبر ترند ولاكن التريلنج يعمل مع كل شمعة ويحتفظ بالمسافة مثل الصورة وعند الكسر تظهر الاشارة العكسية والبرويد يغير المسافة فقط (السوبر ترند لا يعتمد على التريلنج لنه يقوم بعمل ازاحة لعدد من الشموع ومختلف عن الفكرة)
الملف المرفق 464467