لن يؤثر على الإكسبرت لكن أنت فقد قمت بزيادة الكود وبالتالي قد يكون الإكسبرت بطيء قليلا أو يستهلك رامات أكبر من الجهاز لكن طبعا لن تلاحظها إلا في إكسبرتات معقده أكثر
Printable View
أحيانا بعد البيانات التاريخية عند عمل باك تست يكون بها أخطاء بحيث يظهر السعر به أرقام عشرية كثيره
مثل 1.513743477 بالتالي عند فتح الصفقة سوف يظهر هذا الخطأ ولن يفتح الإكسبرت الصفقه طبعا لن تلاحظ هذه المشكله إلا في الباك تست لذلك تستخدم NormalizeDouble لتحديد السعر بشكل صحيح وحذف باقي الارقام العشرية
وطبعا هذه المشكله نادرا حدوثها لذلك سواء وضعتها أو لا لن تؤثر
شكرا أستاذ أسامة
بس أنا مش عايز أستخدم المضاعفات
أنا عايز على نفس شروط البيع والشراء
--------------
بحيث عادي هيفتح أول عملية حسب الشروط
لكن لو أخر عملية مغلقة كانت مغلقة بخسارة ولو تحققت الشروط للبيع أو الشراء مرة أخرى يدخل بضعف العقود
والكلام ده مرة واحدة فقط
يعني في البداية عند تحقق الشروط هيدخل مثلا بـ 1 لوت ولو ضربت الأستوب
سينتظر تحقق الشروط مرة أخرى ويدخل بـ 2 لوت ( وسواء العملية دي حققت الهدف أو ضربت الأستوب يرجع لـ 1 لوت مرة أخرى )
نفس الكود السابق إستخدمته وإجعل الكومنت متغير بحيث تضيف شرط قبل فتح الأمر
وسوف يكون المتغير comment_ مكان الكومنت في الأمر OrderSend وبالتالي لن تحتاج إلى وضع أوامر أخرى غير الأوامر الأصليهكود PHP:
string comment_;
if(isLastOrderMultiplied())comment_="EA";
else comment_="Multiplier order";
بصراحة أنا لسه مش فاهم ممكن عشان لسه صاحي :doh:
ياريت لو حضرتك تراجع على الإكسبيرت المرفق
لإني بصراحة واقف من يوم الجمعة لغاية النهاردة في الموضوع ده
ومش عايز أستخدم المضاعفات
أنا عايز أول عملية مثلا بـ 1 لوت ( لو أغلقت بخسارة )
بعد تحقق الشروط لأي من البيع أو الشراء يدخل بـ 2 لوت ( والعملية دي سواء حققت الهدف أو ضربت الأستوب يعود مرة أخرى لـ 1 لوت )
وهكذا
أنا عرفت دالة تعود بقيمة عقود أخر عملية ..... ودالة أخرى تعود بحالة أخر عملية سواء ربحت أو خسرت
وإستخدمت في الشروط
مثلا في الشراء
فهل أنا كده صح ؟كود PHP:
if(LastLot()==Lots && LastProfitCase()==false){Lots=2*Lots;}else Lots=Lots;
مرفق الإكسبيرت
وهل ممكن في لغة mql4
عمل معادلات من متغير واحد أسى
يعني فرضاً لو في معادلة بالشكل ده
X^3+X^2=12
فهل ممكن أجيب قيمة X ؟
هل هذه الأكواد صحيحه أستاذ أسامه و تقوم بالشراء عندما يكون آخر سهم قد ظهر في الشموع السابقه هو سهم شراء :
ثم في شرط الشراءكود PHP:
int barnumber;
for(int i=1;i<Bars;i++){
double up=iCustom(Symbol(),0,"arrow",0,i);
if(up<5000){
barnumber=i;
break;
}
}
___________كود PHP:
if(up<5000)
{
// buy
}
و إذا أردت أن أتحقق من أكثر من فريم هل من الممكن أن تكون الأكواد هكذا ؟
ثم في شرط الشراءكود PHP:
int barnumber;
for(int i=1;i<Bars;i++){
double up=iCustom(Symbol(),0,"arrow",0,i);
double up60=iCustom(Symbol(),60,"arrow",0,i);
if(up<5000){
barnumber=i;
break;
}
}
كود PHP:
if(up<5000 && up60<5000)
{
// buy
}
وهل معنى هذا أنه أثناء البحث عن سهم الشراء في الشموع الماضيه لو قابل سهم بيع سيتوقف عن البحث و لن يشتري أم أنه سيتجاوزه ويبحث حتى يجد سهم الشراء لأني أريده أن يتوقف ولا يبحث إذا وجد سهم البيع قبل الشراء .
وجزاك الله كل خير .
لو مثلا أنا أريد الدخول لكن تحرك السعر بعيدا عن الإفتتاح عدد كبير من النقاط مثلا
هذا الشرط سيقارن ويتأكد أن الفرق بين سعر الإفتتاح والسعر الحالي أقل من 10 نقاط أو أي عدد يمكنك تغييرهكود PHP:
if(MathAbs(Close[0]-Open[0])<10*Point))
مثلا كان الكسر عند الشمعه رقم 3 وتحرك السعر بعيدا وتريد عودة السعر حتى يتم الدخول
كود PHP:
if(MathAbs(Close[0]-Close[3])<10*Point))
في اللغه نفسها لا يوجد دالة كود ثابت لحل المعادله لكن إذا إستطعت معرفة كيف يتم حلها يدويا فسوف تقوم ببرمجتها تماما كما في حل المعادلات في الآلة الحاسبه
كما ترى فطريقة حلها بسيطه وليس عليك سوى تحويلها إلى متغيرات تقوم بتعريفها والباقي ما هو إلا عمليات حسابيه جميع وطرح وقسمهكود PHP:
نعتبر الصيغة العامة للمعادلة: [IMG]http://upload.wikimedia.org/wikipedia/ar/math/e/2/5/e2541975a91ef33d6b4af08dd31d8c6e.png[/IMG],
نضع:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/6/e/2/6e23fe4ceb48e1fc3eac54d35e706509.png[/IMG]
لنحصل على الصيغة:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/0/6/c/06c42cda45c92857a1935c8ccbdee8c5.png[/IMG]
نضع الآن:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/8/b/3/8b3c61048ba6671b72bb934117868d05.png[/IMG] الآن نحصل على مجهولين بدل مجهول واحد, لكن نضع شرطا يمكن من التبسيط:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/4/8/5/485864024f394818dae85414a88013d8.png[/IMG] تتحول هذه المعادلة إلى الشكل:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/8/1/d/81db6ead67cac50dec36e4bfa52f767e.png[/IMG] شرط التبسيط يكون إذن:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/e/c/8/ec8930b016d3d442067267e37059d022.png[/IMG] الذي يعطي من جهة:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/5/4/d/54d10bc1db3d4903c113134d441402b1.png[/IMG] و من جهة أخرى:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/f/b/1/fb1300947af438fee54b0315965e70ca.png[/IMG] و عند رفع العددين إلى القوة 3, نحصل على:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/1/f/c/1fce021e3739a7137d47bc82d058a9a3.png[/IMG] و نحصل أخيرا على نظمة معادلتين لمجهولين [IMG]http://upload.wikimedia.org/wikipedia/ar/math/4/5/8/458a01fcf3907289016cf2ef6f979617.png[/IMG] و[IMG]http://upload.wikimedia.org/wikipedia/ar/math/5/d/8/5d8956be4259288a99dafa9bf8a7b8ff.png[/IMG] الآتية :
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/7/c/c/7cc9ad2a9e35f3d6027c460992717de4.png[/IMG]
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/1/f/c/1fce021e3739a7137d47bc82d058a9a3.png[/IMG]
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/4/5/8/458a01fcf3907289016cf2ef6f979617.png[/IMG] و[IMG]http://upload.wikimedia.org/wikipedia/ar/math/5/d/8/5d8956be4259288a99dafa9bf8a7b8ff.png[/IMG] هما إذن عددين نعرف جمعهما وجذاءهما. هذين العددين هما جذرا المعادلة من الدرجة الثانية:
[IMG]http://upload.wikimedia.org/wikipedia/ar/math/c/5/c/c5c83891567aeeed9e5bb3fcafbb7470.png[/IMG]
في حال أردت أن تتحقق من أكثر من تايم فريم فقم بجعل كل تايم فريم في كود منفصل لأنه ليس شرط أن يظهر لاسهم في نفس رقم الشمعه للمؤشر وبالتالي يجب أن تضيف حلقة أخرى للبحث بشكل منفصل عن السهم للتايم فريم الآخر
وطبعا إذا أردت أن يتوقف في حال ظهر سهم بيع قبل الشراء فيجب أيضا أن تضيف هذا الشرط بأن يتوقف عن البحث في حال وجد سهم بيع في نفس الكود السابق
شكرا أخي أسامه ...
طيب لأني بصراحه لا أستطيع وضع شرط وقف البحث عند ظهور سهم معاكس لما أريد فهل من الممكن أن أعرف في الداله ظهور سهم الشراء و عدم ظهور سهم البيع و أضع في شرط الشراء عند ظهور سهم الشراء و عدم ظهور سهم البيع أثناء البحث فيدخل شراء هكذا :
ثم في شرط الشراء :كود PHP:
int barnumber;
for(int i=1;i<Bars;i++){
double up=iCustom(Symbol(),0,"arrow",1,i);
double down=iCustom(Symbol(),0,"arrow",2,i);
if(up<5000)
&& if(down>10000) {
barnumber=i;
break;
}
}
كود PHP:
if(up<5000 && down>10000 )
{
// buy
}
و إذا كانت الطريقة صحيحه فهل تكون الأكواد التاليه صحيحه للتحقق من فريم آخر :
ثم في شرط الشراء :كود PHP:
int barnumber;
for(int i=1;i<Bars;i++){
double up=iCustom(Symbol(),0,"arrow",1,i);
double down=iCustom(Symbol(),0,"arrow",2,i);
if(up<5000)
&& if(down>10000) {
barnumber=i;
break;
}
}
int barnumber;
for(int i=1;i<Bars;i++){
double up60=iCustom(Symbol(),60,"arrow",1,i);
double down60=iCustom(Symbol(),60,"arrow",2,i);
if(up<5000)
&& if(down>10000) {
barnumber=i;
break;
}
}
و شكرا جزيلاكود PHP:
if(up<5000 && down>10000 && up60<5000 && down60>10000 )
{
// buy
}
أستاذ أسامة أنا بعمل إكسبيرت للموضوع ده
https://forum.arabictrader.com/t144719.html
بحيث إنه يغلق العمليات المفتوحة كلها عندما يصل الربح إلى عدد معين من النقاط
بس جربت كتير وغيرت كتير في الكود لكن كل مرة بعد ما يتحقق الشرط إن مثلا الربح وصل 100 نقطة
ينفذ أمر الإغلاق ويغلق مثلا 4 عمليات من 5
ويظهر خطأ في الجونال بأن رقم التيكت خطأ
مرفق الإكسبيرت ( أنا ضيفت عليه أي شروط للبيع والشراء بحيث يكون سهل في الباك تست )