نعم صحيح
قم بتعريف متغير للداله بإسم int Type وضعه في المقارنه عند البحث عن الصفقه
Printable View
أولا الكود لمعرفة رقم الشمعه التي حدث عندها الهاي أو اللو لليوم السابق
ثم لمعرفة توقيت الساعه لهذه الشمعه ستستخدم الداله TimeHourكود PHP:int StartCandle=iBarShift(Symbol(),60,iTime(Symbol(),1440,1),false);
int EndCandle=iBarShift(Symbol(),60,iTime(Symbol(),1440,0),false)+1;
int high=iHighest(Symbol(),0,MODE_HIGH,StartCandle-EndCandle,EndCandle);
int low=iLowest(Symbol(),0,MODE_LOW,StartCandle-EndCandle,EndCandle);
بالنسبه للجزء الثاني من السؤالكود PHP:int HighHour=TimeHour(Time[high]);
int LowHour=TimeHour(Time[low]);
فسوف تقوم بعمل دالة لتحديد هدف آخر صفقة مفتوحه
ثم ستضع شروط المقارنه إذا كان الهدف للصفقة المفتوحه لا يساوي آخر هدف محدد في الدالة يتم تعديلهكود PHP:double lastOrderTP(int type){
for(int i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==type&&OrderMagicNumber()==MagicNumber)
{
return(OrderTakeProfit());
}
}
return(0);
}
مثال
كود PHP:void ModifyOrders(int type){
{
for(int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
double takeprofit=OrderTakeProfit();int tick=OrderTicket();
if(OrderSymbol()==Symbol()&&OrderType()==type&&OrderMagicNumber()==MagicNumber)
{
if(NormalizeDouble(takeprofit,Digits)!=lastOrderTP())
OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),lastOrderTP(),0);
}
}
}
يا استاذ جميل .. انا عامل ذي سمير غانم في مسرحية المتزوجون
اظبط الجاكت البنطلون يضرب .. اظبط البنطلون الجاكت يضرب ..:0016:
وكله بلا اخطاء بس بدون تنفيذ المضاعفات من الاساس ..
لحد ما عملت المضاعفات بنجاح والحمد لله .. ولكن بقي يفتح شراء فقط ولا يفتح بيع ..
مش بقولك لازم حاجة تضرب :no3:
ارجوك يا استاذي شوفه وقولي العلة فين بالضبط .. ليه بيفتح شراء فقط ؟؟
:hands:
الملف المرفق 393638
السلام عليكم ..
استاذ جميل .. رجعتلك بدري
طبعا يا استاذي الاكسبيرت لا ينظر الي شرط الشموع الا في بداية الصفقة فقط
اما خلال المضاعفات فهو لا ينظر الا لتحقق مسافة الاستيب ولا ينتظر شرط الشموع بعد مسافة الاستيب
وذلك حسب الشرط
فلو اردنا ان يتحقق شرط الشموع مع بداية فتح الصفقات وكذلك بعد تحقق شرط الاستيب في الصفقات التاليةكود PHP:if(TotalOrderByType(OP_BUY)<1 && Close[2]<Open[2]&&Close[1]>Open[1] ) priceb=Ask;
فكيف نكتب TotalOrderByType(OP_BUY)<1
وكذلك TotalOrderByType(OP_BUY)>=1
في نفس الوقت ؟؟؟
سلام عليكم اخوانى الكرام
لم انتبه الى هذا الموضوع القيم
أريد شرط اذا اصبح الايكوتى اكبر من بدايه الحساب يغلق كل شىء ويبدأ من جديد
وهذا يختلف عن شرط اغلاق الصفقات عند الوصول الى ربح معين اختلاف كبير
فمثلا ..
انا اعمل صفقات كثيرة واغلق بعض الصفقات ويزيد الرصيد ولكن الايكوتى مازال خاسرا عن بدايه اصل رأس المال الذى بدأ به
واريد عندما يرجع الايكوتى ويزيد عن اول رصيد بدأ به ( بنسبه مئويه معينه تكون متغير خارجى ) يغلق كل شىء ويبدأ من جديد
أرجوا ان تكون الفكرة وصلت اليكم اخوانى المبرمجين
او
لو تعرفونى كيف اعوض او اشير الى ( الايكوتى ) و ( اول بدايه للرصيد ) برمجيا ؟؟
هتنحل المشكله ان شاء الله لدى
وعليكم السلام ، اكتب هذا الكود في المتغيرات
في داخل الدالة int تضيف هذا الكود وقيمته الأكوايتي + 10%كود PHP:Double aEquity;
في دالة Statrtكود PHP:aEquity=AccountEquity()*1.1;
ستضيف الشرط
وأهلا بك .كود PHP:If(AccountEquity()>=aEquity) // CloseAll
استاذنا الغالى جميل
بارك الله تعالى فيك اخى الكريم
ولكن الكود اللى حضرتك كتبته بهذه الطريقة صح ..؟
ولا يكون بهذا الشكل ..؟كود PHP:aEquity=AccountEquity()*1.1;
جزاك الله تعالى خيرا اخى الكريم مقدماكود PHP:aEquity=AccountBalance()*1.1;
استاذى الكريم جميل
انا جربت الكوديين
سواء
اوكود PHP:aEquity=AccountEquity()*1.1;
فكلاهما يغلق الربح عندما يصبح الايكوتى بنسبه 10 فى المائه فقط ويستمر على ذلك حتى لو عملنا الباك تست لمدة سنه كاملهكود PHP:aEquity=AccountBalance()*1.1;
يعنى لما بنبدأ الحساب ب 10 الاف ويعمل .. عندما يصل الى 11 الف بيفضل على هذه النسبه .. وكلما اشتغل يرجع مرة اخرى على تلك النسبه ولايزيدها
أرجوا ان تكون فكرتى وصلتك استاذى الكريم
انا اتكلم عن هذه الفكرة لانى اريد ان استخدمها على كل الاكسبيرتات اللى هعمل عليها
منتظر ردك استاذى جميل