وعليكم السلام ورحمة الله وبركاته
هذا مثال
Printable View
المتغير currency هل هو إسم العمله الموجوده على الشارت أم أنك تضع عمله أخرى غير العمله التي تضع الإكسبرت على الشارت الخاص بها
هذا الخطأ يحدث عندما تتحرك العمله عدد نقاط بشكل سريع أكبر من عدد نقاط السلبيج التي قمت بتحديدها
حسب ما هو واضح فأنت تستخدم بروكر به رقم عشري زياده لكنك جعلت السلبيج 3 وهذا يعني 0.3 نقطه وليس ثلاث نقاط كامله
لذلك إجعل السلبيج 30
وعليكم السلام ورحمة الله وبركاته
لا يمكنك تعريف متغير في دالة ثم إستدعاء المتغير في دالة أخرى فبالتأكيد سيظهر خطأ أن المتغير غير معرف في هذه الداله
لحل هذه المشكله
قم بتعريف المتغيرات خارج الداله start بحيث تكون متغيرات عامه يمكن إستخدامها لاحقا في أي داله أخرى
بالنسبه للخطأ الثاني
فلا يمكن أن تقوم بعملية حسابيه لمتغيرين مختلفين في النوع فالمتغير buypercent متغير نصي والرقم 1 متغير رقميكود PHP:
StringLen(buypercent-1)
لذلك ستضيف تعديل بسيط لتحويل المتغير النصي إلى رقمي وهو
مرفق الإكسبرت به التعديلكود PHP:
StringLen(StrToDouble(buypercent)-1))
currency في هذا الامر هو لنفس العملة ولكن احيانا استخدمه لعملة اخرى ولذلك اقوم بتغيير الامر Bid الى bid حيث bid هي
اما السليبج فصحيح هي 3 عندما كانت الفاصلة 4 ارقام وكان يجب ان نغيرها الى 30 عندما اصبحت 5 ارقامكود PHP:
bid=MarketInfo(currency,MODE_BID)
ولكن البروكر سيستغل هذه النقاط ليفعل الامر بها في اغلب الاحيان بحجة انزلاق الاسعار وهذا يعني كانني زودت السبريد من 4 نقاط في الباوند الى 7 نقاط والمجنون من 7 الى 10 نقاط وهذا كثير
لذلك ما رأيك انا ساجرب حكاية السليبيج هل يستغلها البروكر ام لا
سأضع امرين في نفس الوقت الاول نقطة واحدة كاملة يعني سليبج 10 والثاني 3 نقاط كاملة ونشوف ايه النتيجة
شكرا جزيلا اخي الجبيب اسامة وبارك الله فيك
تذكير بمشاركتي https://forum.arabictrader.com/t3761...ml#post2545743
أرجو المساعدة إخواني فقط كيف يمكن أن أجعل الاكسبيرت يلتزم بالدخول عند سعر الاغلاق ؟؟؟
يمكنك إضافة شرط مع شروط البيع والشراء بأن تكون عدد الدقائق أقل من دقيقة مثلا ( دقائق الساعة من 0 إلى 59 دقيقة )
وبالتالي لن يفتح عمليات إلا في بداية إفتتاح ساعة جديدة عندما تكون الدقيقة = 0 أي أقل من 1 دقيقة
الكود
طبعا المقصود بالنقاط هو باقي شروط البيع والشراءكود PHP:
if(.............. && Minute()<1)
شوف بلاش التعديل بطريقة الدقايق لإن كده لن يعمل بشكل صحيح إلى على شارت الساعة فقط
----------------------------
خلينا نستخدم طريقة تانية بسيطة
ستقوم بتعريف متغيرين خارج الدوال Prev_BTime و Prev_STime
وسنقوم بإعطائهم قيمة وقت الشمعة الحالية في دالة init بالتالي بمجرد فتح الإكسبيرت سيأخذ المتغيرين قيمة الشمعة الحاليةكود PHP:
int Prev_BTime,Prev_STime;
وبعد كده نضيف في شروط البيع والشراء بأن لا يتم فتح أي عملية في حالة أن المتغير = الوقت الحاليكود PHP:
int init()
{
Prev_BTime= Time[0];
Prev_STime= Time[0];
ونعطي للمتغير قيمة Time[0] بعد فتح العملية
شرط الشراء
شرط البيعكود PHP:
if(Prev_BTime!= Time[0]){
if (ECNBroker)
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "My Expert", 1, 0, Blue);
else
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, "My Expert", 1, 0, Blue);
Prev_BTime=Time[0];
}
ومعلش التعديلات دي عملتها بسرعة كده بدون قراءة أكواد الإكسبيرت وقمت بتعديلات سريعة بسبب إني دلوقتي على لاب ميني وما أدراك ما الاب الميني مش شايف فيه أي حاجة ( حاول إنت ترتب الكود براحتك وتراجعه )كود PHP:
if(Prev_STime!=Time[0]){
if (ECNBroker)
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "My Expert", 1, 0, Red);
else
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL, TP, "My Expert", 1, 0, Red);
Prev_STime=Time[0];
}
مرفق