تحيه طيبه... الرجاء عمل تعديل لهذا الكود ليعمل علي أزواج الين
ولكم جزيل الشكر....
Printable View
تحيه طيبه... الرجاء عمل تعديل لهذا الكود ليعمل علي أزواج الين
ولكم جزيل الشكر....
ما المشكلة؟
الذي يظهر لي أنه يعمل على أزواج الين كما يعمل على غيرها . .
مبرمجه يظهر لي أنه ممتاز جداً -- من الصف الأول . .
لو غيرت الدالة الى OnTick سيحسب عادي وهو اساسا مصمم فقط لحساب ارباح الصفقات المغلقة بالنقاط فقط في صفحة هيستوري . . ولا دخل له بالتداول سواء في التستر او الحقيقي او الديمو او ايا كان
وتصميمه بالغ الذكاء . .
صاحب الموضوع . . .غير OnTester الى OnTick . . . هل تستمر مشكلتك؟
اا انحلت . . .يعني هناك خصائص خاصة بـ OnTester
لا تنسى void بدل int مع حذف عبارة return
يمكن لايوجد صفقات مغلقة على زوج الين الذي اخترته؟؟
انت فاهم فكرة الاكسبيرت أخي؟
اذا لا . .
1) يحسب ارباح زوج محدد -- زوج التشارت
ثم بعد ذلك يحسب السورتينو والشارب ريشيو . .
عموما:
غير دالة التستر الى دالة ontick
انسخ والزق مكانها . .كود:void OnTick() {
int trades=0, orders = OrdersHistoryTotal();
double totalPips=0, pips[];
ArrayResize(pips, orders);
int pipDigits = Digits & (~1);
Print(pipDigits);
double pip = NormalizeDouble(1/MathPow(10, pipDigits), pipDigits);
for (int i=0; i < orders; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol()==Symbol() && OrderType()<=OP_SELL) {
pips[trades] = (OrderType()-(OrderType()^1)) * (OrderOpenPrice()-OrderClosePrice()) / pip;
totalPips += pips[trades];
trades++;
}
}
ArrayResize(pips, trades);
double avgPips=0, sharpe=0, sortino=0;
if (trades > 0) {
avgPips = totalPips/trades;
sharpe = CalculateSharpeRatio(pips, totalPips);
sortino = CalculateSortinoRatio(pips, totalPips);
}
Print("trades=", trades, " totalPips=", DoubleToStr(totalPips, 1), " avgPips=", DoubleToStr(avgPips, 2), " sharpe="+ DoubleToStr(sharpe, 4), " sortino=", DoubleToStr(sortino, 4));
}