النتائج 1 إلى 11 من 11
- 26-05-2013, 04:09 PM #1
*-* نقل البيانات بين الميتاتريدر والإكسل *-* مكتبة قوية جدا
في البداية للإيضاح :
1 - يجب تفعيل Allow Dll imports من خصائص الإكسبيرتات .
2 - يتم وضع الملف excellink.dll في experts\libraries (في المرفقات)
3 - نقوم بإنشاء ملف إيكسل .xls وده بيكون في أي مكان وبأي إسم ( مش مهم لإننا بنقدر نختار مساره من الإكسبيرت)
الدوال المستخدمة : ويجب وضع هذا الكود في بداية الإكسبيرت لتعريف الدوال قبل إستخدامها
شرح إستخدام كل دالة :كود PHP:#import "excellink.dll"
int ExcelStart(string,int);
string ExcelVersion();
int ExcelPutString(int,int,int,string);
int ExcelPutValue(int,int,int,double);
int ExcelFormatCellColor(int,int,int,int,int);
int ExcelFormatCellFontSize(int,int,int,int);
int ExcelFormatCellFont(int,int,int,int);
double ExcelGetValue(int,int,int);
string ExcelGetString(int,int,int);
int ExcelSaveFile(string);
int ExcelSheetRename(int, string);
int ExcelPutCalc(int,int,int,string);
string ExcelGetCalc(int,int,int,string);
int ExcelEnd();
int ExcelClose();
int ExcelFreeString();
string ExcelCell(int,int);
int ExcelUnixTime();
#import
الدالة الأولى
وهذه الدالة تقوم بفتح ملف الإكسل ويكون في الخانة الأولى مسار الملفكود PHP:int ExcelStart(string,int);
والخانة الثانية :
0 لفتح الإكسل على الوضع الإفتراضي حسب أخر مرة تم إغلاقه Default Mode
أو 1 وهو يقوم بفتح الإكسل في وضع Minimized Mode وهو الأفضل والأسرع
بالشكل ده
الدالة الثانيةكود PHP:ExcelStart("D:\\AL Trade 4\\MySample2.xls",1);
وهي تعود بإصدار ملف الـ dll المستخدم ( و وظيفتها ليست مهمة إلا في حالة صدور إصدار جديد وإحنا عايزين مثلا نعرف إصدارنا الحالي )كود PHP:string ExcelVersion();
الدالة الثالثة
وهذه الدالة تستخدم في إرسال متغير نصي من الميتاتريدر إلى ملف الإكسلكود PHP:int ExcelPutString(int,int,int,string);
والخانة الأولى يوضع فيها رقم الشيت المستخدم في الإكسل وهو سيكون 1
الخانة الثانية يوضع فيها رقم الصف الأفقي row
الخانة الثالثة يوضع فيها رقم العمود الرأسي column
الخانة الرابعة يوضع فيها الكلمة أو النص المرسل لملف الإكسل
بالشكل ده:
حيث sheet=1 row=1 column=1 أي أول خانة في الإكسل على الشمال فوق
الدالة الرابعةكود PHP:ExcelPutString(1,1,1,"YousefH say Hi");
وهي نفس الدالة السابقة ولكن تستخدم في إرسال الأرقام سواء صحيحة أو عشريةكود PHP:int ExcelPutValue(int,int,int,double);
الدالة الخامسة
وهذه الدالة تستخدم لتنسيق لون الخلية الأمامي والخلفي في ملف الإكسلكود PHP:int ExcelFormatCellColor(int,int,int,int,int);
أول وثاني وثالث خانة هم لـ ( رقم الشيت – رقم الصف – رقم العمود )
الخانة الرابعة يوضع بها اللون الأمامي
الخانة الرابعة يوضع بها اللون الخلفي
بالشكل ده :
الدالة السادسةكود PHP:ExcelFormatCellColor(1,1,1,Lime,Red);
وهذه الدالة تستخدم في تحديد حجم الخطكود PHP:int ExcelFormatCellFontSize(int,int,int,int);
أول ثلاث خانات ( رقم الشيت – رقم الصف – رقم العمود )
الخانة الرابعة ونضع فيها حجم الخط المطلوب وهو يكون من 1 إلى 100
الدالة السابعة
وهذه الدالة تستخدم لتنسيق شكل الخطكود PHP:int ExcelFormatCellFont(int,int,int,int);
أول ثلاث خانات ( رقم الشيت – رقم الصف – رقم العمود )
الخانة الرابعة : ويوضع بها رقم من 0 أو 1 أو 2 أو 4
0 يعني بدون تنسيق
1 يعني خط تقيل Bold
2 يعني خط مائل
4 يعني يوضع تحت الكلمة أو الرقم خط Underline
ملحوظة يمكن وضع رقم 5 مثلا ويكون الناتج 1 +4 يعني Bold+Underline
بالشكل ده
كود PHP:ExcelFormatCellFont(1,1,1,5);
الدالة الثامنة
كل الدوال السابقة كانت للكتابة على ملف الإكسل
ولكن هذه الدالة للإستدعاء من الإكسل
وهذه الدالة تستخدم في إستدعاء قيمة رقمية من الإكسل من خانة يتم تحديدها عن طريق رقم الشيت – رقم الصف – رقم العمودكود PHP:double ExcelGetValue(int,int,int);
الدالة التاسعة
وهي مثل الدالة الثامنة ولكن تستدعي متغير نصي عن طريق رقم الشيت – رقم الصف – رقم العمودكود PHP:string ExcelGetString(int,int,int);
الدالة العاشرة
وهذه الدالة توضع في دالة int deinit() وهي تقوم بحفظ التغيرات التي قمنا بها على ملف الإكسلكود PHP:int ExcelSaveFile(string);
بالشكل ده
الدالة الحادية عشركود PHP:int deinit() {
ExcelSaveFile("D:\\AL Trade 4\\MySample2.xls");
return(0); }
وهذه الدالة تستخدم لتغير إسم الشيت في الإكسلكود PHP:int ExcelSheetRename(int, string);
يعني ده مثلا أمر لتغيير إسم الشيت الأول إلى EURUSD و الشيت الثاني إلى GBPUSD
الدالة الثانية عشركود PHP:ExcelSheetRename(1,"EURUSD");
ExcelSheetRename(2,"GBPUSD");
وهذه الدالة تدعم كل العمليات الحسابية التي يقوم بها الإكسلكود PHP:int ExcelPutCalc(int,int,int,string);
بمعنى أنا ممكن أن نقوم بجمع الأرقام الموجودة في الخلايا A1+A2+A3
وسيتم كتابة العملية كمتغير نصي بين علامتي " "
بالشكل ده
ده مثال لوضع ثلاث قيم في الخانات A1 و A2 و A3 ثم عمل متغير نصي Sum في الخلية A4 ثم جمع الثلاث خليات ووضع القيمة في الخلية B4
الدالة الثالثة عشركود PHP:ExcelPutValue(1,1,1,1.3050);
ExcelPutValue(1,2,1,1.3080);
ExcelPutValue(1,3,1,1.3120);
ExcelPutString(1,4,1,"Sum:");
ExcelPutCalc(1,4,2,"=a1+a2+a3");
وهذه الدالة تستخدم لإستدعاء أرقام النواتج الناتجة عن العمليات السابقة التي تمت بواسطة ExcelPutCalcكود PHP:string ExcelGetCalc(int,int,int,string);
وهي لابد من إستخدامها وإلا كان الناتج العائد حسب المثال في الدالة السابقة متغير نصي "=a1+a2+a3"
ولابد من تحويها لمتغير double
يعني لو هنستدعي قيمة عملية الجمع الموجودة في الخلية B4 (في المثال السابق )ستكون بالشكل التالي:
الدالة الرابعة عشركود PHP:StrToDouble(ExcelGetCalc(1,4,2) ,4);
وهذه الدالة تستخدم لوقف الإرسال من الميتا إلى الإكسل وتستخدم في دالة deinitكود PHP:int ExcelEnd();
الدالة الخامسة عشر
وهي تقوم بإغلاق مساحة العمل في الإكسل وتكون أيضا في دالة deinitكود PHP:int ExcelClose();
ودوال الإغلاق ( الدالة 14 والدالة 15 ) يجب أن يكونوا في دالة deinit بعد أمر الحفظ بالشكل ده
الدالة السادسة عشركود PHP:int deinit() {
ExcelSaveFile("D:\\AL Trade 4\\MySample2.xls");
ExcelEnd();
ExcelClose();
return(0); }
وهذه الدالة تستخدم فقط في حالة الإكسبيرتات التي تقوم بألاف العملياتكود PHP:int ExcelFreeString();
وتستخدم هذه الدالة لإفراغ مساحة في الذاكرة عن طريق حذف ما تم إستدعائه سابقا
وهي ليست مهمة لإن بعد إنتهاء فترة العمل وإغلاق الإكسل والمنصة تقوم الذاكرة بإفراغ نفسها أتوماتيكيا
وهذه الدالة تستخدم بعد إستخدام دالة ExcelGetString ودالة ExcelCell
الدالة السابعة عشر
وهذه الدالة تستخدم في إستدعاء قيمة من خلية محددةكود PHP:string ExcelCell(int,int);
الخانة الأولى رقم الصف – الخانة الثانية رقم العمود
ويمكن إستخدامها مثلا مع دالة ExcelPutCalc
وده مثال للتطبيق في دالة ExcelPutCalc المشروح سابقا :
الدالة الأخيرةكود PHP:ExcelPutValue(1,1,1,1.3050);
ExcelPutValue(1,2,1,1.3080);
ExcelPutValue(1,3,1,1.3120);
ExcelPutString(1,4,1,"Sum:");
//ExcelPutCalc(1,4,2,"=a1+a2+a3");// بدل هذه الدالة
ExcelPutCalc(1,4,2,"="+ExcelCell(1,1)+"-"+ExcelCell(2,1)+"-"+ExcelCell(3,1));
// قمنا بالتعويض عن كل خلية بمكان برقم الصف العمود حسب تعريفها فوق
وهي دالة
وهذه الدالة تظهر الوقت الحالي وهي شبيه بالدالة TimeCurrent( ) في لغة MQL4كود PHP:int ExcelUnixTime();
وتعود بالوقت المنقضي بالثانية من سنة 1970 حتى وقت إستدعائها
وهي غير مهمة ولكن لها إستخدام معين وهو حساب سرعة تنفيذ أوامر النقل بين الميتا والإكسل
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
( وبالمناسبة سرعة النقل بين الميتا والإكسل سرعة خرافية )
وبإذن الله في أقرب وقت نقوم بعمل تطبيق عملي على الموضوع
وسأقوم بإذن الله بعمل إكسبيرت لنقل العمليات بين منصتين على نفس الجهاز بإستخدام الإكسل في أقرب وقت
إنتهى الشرح بالتوفيق للجميع
لا تنسونا بدعوة في ظهر الغيبآخر تعديل بواسطة xcv114 ، 26-05-2013 الساعة 04:32 PM
- 26-05-2013, 04:16 PM #2
رد:*-* نقل البيانات بين الميتاتريدر والإكسل *-* مكتبة قوية جدا
مثال توضيحي بسيط
عن كيفية إستدعاء هاي 30 شمعة يومي في زوج USDCHF
كود PHP:
extern int myExcel=0;
extern string filename="D:\\AL Trade 4\\MySample2.xls";
int init() {
myExcel = ExcelStart(filename,1);
if (myExcel>=0) { Print ("I am demostration for ExcelLink version ",
ExcelVersion()," successfully loaded"); }
return(0);
}
int deinit() {
ExcelSaveFile(filename);
ExcelEnd();
return(0); }
int start()
{
if (myExcel>=0) {
ExcelPutString(1,1,1,"USDCHF");
for(int i=1;i<30;i++){
ExcelPutValue(1,i+1,1,iHigh("USDCHF",1440,i)) ;
}
}
return(0);
}
آخر تعديل بواسطة xcv114 ، 26-05-2013 الساعة 04:34 PM
- 26-05-2013, 09:15 PM #3
- 27-05-2013, 06:50 PM #4
شكرأ أخى يوسف على هذا المجهود الرائع ..وهل بالامكان الأن عمل أكسبيرت بأستراتيجية تعتمد على الاكسيل والحسابات الرقمية بشكل آلى 100%
- 27-05-2013, 07:19 PM #5
- 27-05-2013, 09:12 PM #6
شكرا جزيلا
- 27-05-2013, 10:10 PM #7
الف الف الف شكر ليك اخي يوسف
الله يبارك فيك
متابع معاك خطوة خطوة
- 27-05-2013, 11:04 PM #8
جزاك الله خير
- 15-10-2017, 06:35 PM #9
شكرا على مجهودك
- 15-10-2017, 07:34 PM #10
اقسم برب الكعبة اول موضوع تضاءلت امامه على االااقل من 3 سنوات
جزاك الله خيرا ياصاحب الموضوع
- 29-11-2017, 07:03 PM #11
أحدث نسخة من المكتبه إحيائا للموضوع المميز جدا
الأكثر زيارة
رد مع اقتباس