أخي كيرا كما قلت لك سابقا
لا يمكن لإستدعاء قيمة كائن من فريم أخر غير الموجود عليه الإكسبيرت
لكن يوجد حل كما قلت أنت بإستخدام دوال الجلوبال - ولكن في هذه الحالة ستضطر لإستخدام إكسبيرتين ( أو إكسبيرت ومؤشر )
أحدهما سيوضع على فريم اليومي والأخر سيوضع على فريم الساعة
----------------
فرضاً أنك تحتاج الإكسبيرت ليعمل على شارت الساعة ( يعني حسب برمجتك للإكسبيرت الأساسي وعلى أي شارت سيتم وضعه )
----
يبقى هتعمل إكسبيرت أو مؤشر يوضع على الفريم اليومي وظيفته الوحيدة تسجيل قيمة الترند اليومي عن طريق GlobalVariableSet
**ملحوظة دالة GlobalVariableSet تكون من 2 باراميتر ( الأول إسم المتغير والثاني هو قيمة المتغير ) وهنا هنخلي إسم المتغير Symbol() بحيث
لو هتستخدم الإكسبيرت على أكتر من عملة يتم تسجيل متغير لكل عملة بإسمها ( وسنعطي المتغير قيمة 1 في حالة الإغلاق أعلى الترند و0 في حالة الإغلاق أسفله )
ده هيكون في
الإكسبيرت أو المؤشر الفرعي على شارت اليومي
بالشكل ده
كود PHP:
double TrendValue_D1=ObjectGetValueByShift("D",1);
if(iClose(Symbol(),PERIOD_D1,1)>TrendValue_D1)
{
GlobalVariableSet(Symbol(),1);
}
else
{
GlobalVariableSet(Symbol(),0);
}
بعد كده هتروح
لإكسبيرتك الأساسي إللي هتضعه على شارت الساعة مثلا
وتضع باقي شروطك وتستدعي متغير الجلوبال عن طريق GlobalVariableGet
لو مثلا شرطك إن إغلاق شمعة الساعة أكبر من ترند الساعة H و إغلاق شمعة اليوم أكبر من الترند اليومي D
بالشكل ده
كود PHP:
double TrendValue_H1=ObjectGetValueByShift("H",1);
if(iClose(Symbol(),PERIOD_H1,1)>TrendValue_H1 && GlobalVariableGet(Symbol())==1)
{
//buy
}
**ملحوظة متغيرات الجلوبال يتم حفظها في :Tools\Global Variables
أو يمكنك الضغط على F3