تمام اخي أسامه
وبارك الله فيك و غفر لك و لوالديك وللمسلمين جميعا .
Printable View
السلام عليكم أخي أسامه
كن أود أن أعدل الإكسبيرت المرفق أخي بحيث يكون هناك عدد 2 ستوب لوس و أيضا 2 تيك بروفيت
أستخدم الأول في الشراء و الثاني للبيع ... بحيث يحتفظ بخاصية إخفاء الهدف و الإستوب الأول و الثاني وكذلك يحتفظ بإخفاء الهدف الاول و الثاني ..
وأيضا يحتفظ بالتريلينج ستوب و البريك إيفين وmovestopto ...
فهل أقوم بتعريف 2 ستوب و 2 هدف خارجيا
ثم أقوم بجعل كل ستوب لوس في الشراءStopLoss1 وكل تيك بروفيت في الشراءTakeProfit1كود PHP:extern int StopLoss1=0;
extern int StopLoss2=0;
extern int TakeProfit1=0;
extern int TakeProfit2=0;
والبيع يكون رقم2 ؟؟؟
أنا حاولت في الحقيقه ووجدت كلمة stoploss في دوال أخرى لم أستطع جعلها 1 أو 2 .....
و نقطه أيضا هامه ... كيف أجعل بعد ذلك الإستوب لوس مثلا تحت لو الشمعه رقم 1 بعدد نقاط معين ..
بمعنى لو أردت ستوب لوس الشراء أسفل لو الشمعه رقم 1 ب10 نقاط فكيف أجعلها كذلك و أين أضع الستوب لوس هل خارجيا أم داخل الداله ستارت ... لأني حاولت و لم أفلح لا برمجيا ولا وضعها في المكان الصحيح ...
كود PHP:int StopLoss1=<Low[1]+10*Point ;
السلام عليكم ورحمة الله أستاذ اسامة
أردت فهم طريقة عمل مؤشر ZigZag
وهذا ما تمكنت من الوصول إليه :75_75:
أولا بالنسبة للمتغيرات الخارجية
ما دور ExtDeviation و ExtBackstep :Emoticon1:كود PHP:ExtDepth;
ExtDeviation
ExtBackstep
ExtDepth أعتقد هي قيمة عدد الشموع التي يستخدمها في هذه الحلقة
يعني إذا كان الفرق بين عدد الشموع الموجودة على الشارت و عدد الشموع التي حددناها في ExtDepthكود PHP:for(shift=Bars-ExtDepth; shift>=0; shift--)
أكبر من أو يساوي 0 ينفذ الحلقة و من ثم ينقص 1 ل shift
ثم مضمون الحلقة
هنا مذا تساوي Val و مذا يمثل Lowestكود PHP:val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;
و لمذا هذا الشرط
ثم هناك شرط أخركود PHP:if(val==lastlow) val=0.0;
else
{
lastlow=val;
من هنا أفهم أن ExtDeviation يمثل عدد نقاط نحددها خارجياكود PHP:if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
و ما هي القيمة التي تعود بها
ثم و إلا إذ لم يتحقق الشرط ومن أجلكود PHP:Low[shift]-val)
أول ظهور ل resكود PHP:for(back=1; back<=ExtBackstep; back++)
و ExtMapBuffer2 يأخذ قيمة res عند الشمعة shift+backكود PHP:res=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
و الشرط أسفل هذا لم أفهمه ...
ثم ExtMapBuffer2 تأخذ قيمة val عند الشمعة shift
هذا جزء LOW ثم يأتي جزء HIGH هو نفسه إذا فهمت جزء LOW سأفهم جزء HIGH
أرجو من فضلك ان تشرح لي هذا الجزء يا أستاذي الكريم :eh_s(7)::eh_s(7)::eh_s(7):
وبارك الله فيك:eh_s(7)::eh_s(7)::eh_s(7):
وعليكم السلام ورحمة الله وبركاته
نعم يمكنك تعريف متغيرين للهدف ومتغيرين للاستوب لوز وبالنسبه للدوال الأخرى فيجب أن تحدد الهدف والأستوب لوز لها في كل مره مثلا
يجب ان تجعلهكود PHP:if(HideTP&&TakeProfit>0)
{
CloseBuyOrdersHiddenTP();CloseSellOrdersHiddenTP();
}
بالنسبه لجعل الاستوب لوز هو هاي أو لو شمعه محدده فسوف تحتاج فقط إلى معرفة قيمة هذا اللو أو الهايكود PHP:if(HideTP&&TakeProfit1>0)
{
CloseBuyOrdersHiddenTP();
}
if(HideTP&&TakeProfit2>0)
{
CloseSellOrdersHiddenTP();
}
مثال
طبعا يمكنك إضافة أو إلغاء المتغير UseHighLowSL أو يمكنك تعريفه كمتغير خارجي بحيث يمكنك تفعيله أو تعطيلهكود PHP:if(UseHighLowSL)Sl=Low[1];
مرفق الإكسبرت بعد التعديل
السلام عليكم ورحمة الله وبركاته
لقد قمت بتحويل مؤشر الى اكسبيرت ....المؤشر يعطي اشارة شراء وهي سهم لأعلى ويعطي اشارة البيع وهي سهم لأسفل......فقمت بنسخ كود المؤشر وتعديله الى اكسبيرت وغيرت فقط في الجملة الشرطية التي اذا تحققت يتم رسم الاسهم فغيرت الاسهم بأوامر فتح لصفقات بيع أو شراء.......المشكلة هي عند تشغيل الاكسبيرت لا حظت أن أماكن فتح صفقات البيع والشراءعلى الشارت وانا بعمل باك تست تختلف تماما عن أماكن الاسهم اذا شغلت المؤشر......أنا احترت لماذا يختلف الاكسبيرت مع المؤشر مع أن لهما نفس الكود!!!! أرجو المساعدة ولكم جزيل الشكر.....وهذا هو المؤشر والاكسبيرت...وشكرا
وعليكم السلام ورحمة الله وبركاته
أولا ExtDepth هي عدد مجال الشموع التي سيتم البحث فيها عن الهاي أو اللو خلال فترة محدده كما ترى في هذا الجزء
فقيمة val هي اللو خلال فترة معينه إبتداء من الشمعه shift وحتى عدد شموع ExtDepthكود PHP:val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
بالنسبه ل Lowest هي نفسها iLowest وهي لمعرفة رقم الشمعه التي كان عندها أقل لو خلال فترة محدده
ثم يضع الشرط
بحيث إذا كانت قيمة اللو لم تتغير هي نفسها آخر قيمة مسجله يتم إلغاءها وهو مرتبط بالجزء الآخر elseكود PHP:if(val==lastlow) val=0.0;
بحيث إذا تكون لو جديد وكانكود PHP:else
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
}
}
}
الفرق بين لو الشمعه الأخيره التي بدأنا من عندها عد الشموع وحتى ExtDepth - آخر لو متكون تم إستخراجه أكبر من قيمة ExtDeviation بالنقاط يتم إلغاء اللوكود PHP:if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
الشرط
وهو الخاص بإلغاء الهاي أو اللو القديم وإعتماد اللو الجديد المتكون في حال كان الفرق بين اللو القديم والجديد المتكون أقل من ExtBackstep وهنا جاء فائدة قيمة المتغير الخارجي الثالثكود PHP:if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
فإذا كانت قيمة res!=0 اي خلال عدد الشموع التي تم البحث فيها كان هناك لو سابق متكون وكانت قيمة اللو السابق أكبر من اللو الجديد فيتم إلغاء اللو السابق حتى يتم إعتماد اللو الجديد بعدها
السلام عليكم أخي اسامه
قمت بصناعة هذا الإكسبيرت
الذي من المفترض أن يفتح صفه بناءا على كسر أو إختراق المستوى الذي يقوم برسمه المؤشر المرفق معه وحسب شروط وضعتها في الإكسبيرت
لكنه لا يفتح صفقات أبدا حتى و إن قمت بوضع المستويات يدويا .. لا اعلم هل الخطأ من البرمجه أم ماذا ..
رجاء أخي لو تطلع عليه و تخبرني بالخطأ .
مرفق الإكسبيرت و المؤشر
و شكرا جزيلا .