النتائج 1 إلى 5 من 5
- 22-01-2012, 12:20 PM #1
برمجياً : هل هناك امكانية لاستخدام التريلنج ستوب بهذا الشكل
السلام عليكم
ما اعرفة عن التريلنج ستوب هو المثال الاتى : دخلت مثلاً شراء يورو بهدف 40 نقطة مثلاً وعملت تريلنج ستوب 10 نقط فيكون العمل اننى فى حالة ربح الـ 10 نقط الاولى لا اخسرهم واذا وصلت للـ 20 نقطة يتحرك التريلنج فلا اخسرهم (10+10) وهكذا
ما اريده هو ان يعمل التريلنج ستوب كما فى المثال السابق لكن بداية من النقطة 20 (مثلاً) ليس من النقطة صفر بمعنى عند وصول الربح الى 20 نقطة يبدأ التريلنج ستوب فى العمل مثلا ً كل 5 نقط ... لكن المهم ان يبدأ عملة بعد عدد معين من النقاط
ارجوا ان اكون نجحت فى توصيل الفكرة والف شكر لمن يرغب فى المساعدة
- 22-01-2012, 10:05 PM #2
وعليكم السلام ورحمة الله وبركاته
ملاحظه بسيطه أولا في التريلينج ستوب العادي إذا كان التريلينج ستوب مثلا 10 نقاط فبعد ربح 10 نقاط يقوم بنقل الأستوب لوز إلى نقطة الدخول ثم بعد ذلك مع ربح كل نقطه يتم تقديم الأستوب +1 نقطه وليس الإنتظار 10 نقاط أخرى حتى يقدم الأستوب لوز
الآن بالنسبه لسؤالك نعم يمكن فلاحظ على سبيل المثال هذا كود التريلينج ستوب العادي
كود PHP:void MoveTrailingStop()
{
int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&Ask>OrderOpenPrice())
{
if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
return(0);
}
}
}
else
{
if(TrailingStop>0&&Bid<OrderOpenPrice())
{
if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
لكن حسب الطريقه التي تريد عملها أن يبدأ التريلينج ستوب من نقطه محدده مختلفه عن عدد نقاط التريلينج ستوب
فسوف نستخدم StartTrailingStopPips في هذا السطر
كود PHP:if(TrailingStop>0&&Ask>OrderOpenPrice()+StartTrailingStopPips*point)
فيصبح الكود النهائي
كود PHP:void MoveTrailingStop()
{
int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&Ask>OrderOpenPrice()+StartTrailingStopPips*point)
{
if((NormalizeDouble(OrderStopLoss()+TrailingStep*point,Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
return(0);
}
}
}
else
{
if(TrailingStop>0&&Bid<OrderOpenPrice()-StartTrailingStopPips*point)
{
if((NormalizeDouble(OrderStopLoss()-TrailingStep*point,Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
- 23-01-2012, 12:20 AM #3
واضح انى كنت فاهم غلط .. بس تحريك الاستوب +1 غريبة شوية ،، اصل انا استخدمت تريلينج ستوب وكان لما بيوصل للرقم اللى انا حددتة مكنش بيزيد تانى ، يعنى انا مثلاً اشتريت يورو دولار من 1.2900 بهدف 12950 وعملت تريلنج ستوب 20 نقطة ،، اللى بيحصل انة لما كان بيوصل الى 1.2920 كان بيضع الرقم ده فى خانة الاستوب لوز ولو طلع اكثر من كده مكنش بيحركة والمفروض مش هيغيرة الا عند 1.2940 ولو طلع حتى الى 1.2930 بيفضل الاستوب مكانة ولو رجع اقل من 1.2920 بيضرب الاستوب اللى هو اساساً استوب لوز ويقفل الصفقة على ربح 20 نقطة
اللى انا عاوزة من حضرتك هو ما شرحتة فى الموضوع وهو بداية الاستوب من عدد نقط افتتاح الاوردر ،، يعنى مثلاً فى المثال السابق عاوز الاستوب يبدأ عملة بعد 20 نقطة ويزيد بعد ذلك 3 نقط
وبصراحة انا عاوز اضيف هذة الجزئية على اسكريبتين
الاسكريبت الاول يقوم بفتح 8 عمليات بيع و2 شراء والاسكريبت الثانى يفعل العكس
أأمل فى وضع هدف واستوب لوز وتريلينج ستوب بالمواصفات المقترحة ويتم تعديلها من داخل الاسكريبت ويفضل ان تكون قيمة واحدة للعشرة ازواج ، يعنى ادخل الاسكريبت مثلاً اغير القيمة الافتراضية لو عاوز مثلاُ (الهدف 50 وبداية التريلينج 20 وزيادة التريلنج 3 والاستوب لوز مثلاً مش عاوز يبقا اخلية صفر)
مرفق الاسكربتين ومنتظر رد حضرتك
ومليار شكر يا استاذنا
- 24-01-2012, 09:05 PM #4
الطريقه التي ذكرتها أيضا موجوده وطريقة عمل التريلينج ستوب ستختلف حسب كيفية كتابة الكود وما يريده المبرمج
الإسكربتات التي أرفقتها تعتمد في طريقة عملها على تنفيذ الأوامر مره واحده فقط وبعدها يتوقف عمل الإسكربت فإذا كان إكسبرت كان يمكن إضافة التريلينج ستوب له لكنه سكربت
- 25-01-2012, 01:31 AM #5
اسف جداً على التأخير فى الرد ... فهمت من كلام حضرتك انى لا يمكن اضافة تلك الميزة للاسكربت
هل يمكن عمل اكسبيرت يقوم بهذا ... يعنى وقت تشغيل الاكسبيرت فقط يضع هدف و استوب وترتيلينج ستوب بيدأ من عدد معين من الربح
بحيث عند فتح اى اوردر وقت تفعيل الاكسبيرت فقط يضع هذة الارقام تلقائياً .. وسأقوم بتفعيل الاكسبيرت على الشارت ثم تشغيل الاسكربيت فيضيف الارقام الى كل الازواج
يعنى سأستخدم الاكسبيرت مع الاسكريبت
ملحوظة / هل سأضع الاكسبيرت على شارت واحد فقط ؟
اشكرك جداً