النتائج 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);
كود 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);
الدالة العاشرة
كود 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");
كود PHP:string ExcelGetCalc(int,int,int,string);
وهي لابد من إستخدامها وإلا كان الناتج العائد حسب المثال في الدالة السابقة متغير نصي "=a1+a2+a3"
ولابد من تحويها لمتغير double
يعني لو هنستدعي قيمة عملية الجمع الموجودة في الخلية B4 (في المثال السابق )ستكون بالشكل التالي:
كود PHP:StrToDouble(ExcelGetCalc(1,4,2) ,4);
كود PHP:int ExcelEnd();
الدالة الخامسة عشر
كود 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));
// قمنا بالتعويض عن كل خلية بمكان برقم الصف العمود حسب تعريفها فوق
وهي دالة
كود 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
أحدث نسخة من المكتبه إحيائا للموضوع المميز جدا