رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
الشبكة العصبية Neural Network :
إن هذا الدرس مهم جدا ...حيث سنتعرف فيه كيف ننشئ شبكة عصبية بإستعمال برنامج الكورتيكس وبأستعمال لغة البرمجة S-LANG أي عن طريق السكربتات
لذلك فإن هذا الدرس سينقسم إلى مرحلتين :
*أولا : إنشاء الشبكة العصبية عن طريق برنامج كورتيكس :
نفتح برنامج كورتيكس ثم نضغط على File ثم New NN File.
مع هذا البرنامج نجد 3 ملفات من البيانات--genz.*و msft.* و eurusd.*
أول اثنين تحتوي على أسعار أسهم Genzyme و Microsoft
والثالثة تحتوي على أسعار زوج الدولار واليورو.
ليس هناك فرق بين سوق الأسهم والفوركس من ناحية التنبؤ عن طريق الشبكة العصبية
انقر فوق الزر "..." لفتح ملف genz.txt
عن طريق هذا المسار : data/stocks/genz.txt ....
http://img691.imageshack.us/img691/1881/14652461.jpg
كما نلاحظ أنه بإمكاننا تحديد سطر البداية وسطر نهاية البيانات التي ستتعلم عليها الشبكة
كما أن هذا الملف ،يحتوي على البيانات الجديدة أولا ،وبما أن الشبكة العصبية
تبدء بتحليل البيانات من الماضي والقديمة منها إلى الحاضر
لذلك يجب أن نعكس ترتيب البيانات وذلك بالضغط على Reverse
http://img651.imageshack.us/img651/2817/68685341.jpg
نضعط الأن على "Select fields" وستظهر لنا أسماء أعمدة البيانات في قائمة المدخلات والمخرجات واللتي بدورها سنقوم بإختيار ماهو مناسب
http://img836.imageshack.us/img836/3472/64429792.jpg
سنضغط الأن على "Adj. Close*" في قائمة المخرجات والمدخلات
سنقوم بإستعمال أسعار الإغلاق السابقة للتنبؤ بسعر المستقبل
فلا يمكن أن نستعمل مثلا سعر اليوم فقط لتنبؤ بسعر الغد ولكن يجب
أن نستعمل مثلا سعر اليوم والأمس .و..و..إلخ يجب أن نعرف ماذا حصل مع السعر
وتكون المدخلات هي اسعار الإغلاقات السابقة واحدة بجانب الأخرى وهذا ما يسمى lag File
لذلك نضغط على الزر Generete Lag FIle وسيضهر لنا جدول به أسعار الإغلاقات بجانب بعضها كل 10 أيام .
http://img6.imageshack.us/img6/8515/14958769.jpg
وكما تلاحظون كل سطر به أسعار اليوم الحالي وأسعار 9 أيام ماضية
لنقوم الأن بإختيار المدخلات الجديدة :
نضغط من جديد على "Select fields"
ونقوم باختيار
"Adj. Close*-1", "Adj. Close*-2"...... "Adj. Close*-9"
من قائمة المدخلات
ثم "Adj. Close" من قائمة المخرجات
سنقوم الأن بتحضير وتعليم الشبكة من خلال 9 أسعار سابقة لتنبؤ بالسعر الجديد
http://img696.imageshack.us/img696/7060/30597809.jpg
نضغط الأن على Network
http://cortex.snowcron.com/images/cortex_network.gif
وكما نلاحظ أنه بإمكاننا تحديد عدد الطبقات ، وعدد الخلايا العصبية في الطبقات المخفية
واختيار شروط التوقف التلقائي .
ننتقل الأن إلى "Processing"
http://cortex.snowcron.com/images/cortex_processing.gif
وهنا يمكننا تحديد عدد أو نسبة البيانات التي يتوقف عندها تعليم الشبكة وينتقل إلى إختبار تعلمها على باقي البيانات
في مثالنا هذا سنختار 1000 سعر للتعلم والباقي للإختبار
لتعرف على عدد البيانات الموجودة في الملف فقط نضغط على السهم الموجود على اليمين .
نمر الأن إلى "Learning" ،نحدد كافة خانات الاختيار ثم نضغط على "Run"
وستبدء الشبكة العصبية بالتعلم :
Epoch Number و هو عدد مرات مرور السعر على الشبكة العصبية
وسنلاحظ نسبة الخطأ الأصغر التي شهدتها الشبكة في التعلم وفي الإختبار
http://cortex.snowcron.com/images/cortex_learning.gif
كلما زاد تعلم الشبكة انخفضت نسبة الخطأ (الفرق بين تنبؤ الشبكة والسعر الحقيقي )
وعندما تصبح نسبة الخطأ مقنعة ومطمنة نضغط على stop ثم نتجه إلى Apply
وهي تشبه قائمة ال-IMPORT بزيادة زر CHART وزر ال-APPLY
http://cortex.snowcron.com/images/cortex_apply.gif
نضعط بعدها على "..." ثم نختار ملف ال-LGG (مساره مبين في الصورة )ثم نختار نفس المدخلات والمخرجات التي استعملناها من قبل بعد الضغط على Select Fields
نضعط بعدها على APPLY وسيولد ملف بصيغة .apl يحتوي على جميع البيانات التي تمثل المدخلات وبيانات المخرجات التي انشأتها الشبكة بعد تعلمها .
نتجه الأن إلى قائمة OUTPUT ثم "..." ثم "genz.apl"
http://cortex.snowcron.com/images/cortex_output.gif
نختار No كمدخلات (رقم البيانات ) وسعر الإغلاق وسعر المتوقع من خلال الشبكة العصبية كمخرجات
نضغط الأن على الزر Chart، لرسم الإخراج المطلوب (إغلاق) مقابل الإخراج ، التي تنتجها الشبكة العصبية.
ويتم إنتاج الصورة التالية عن طريق التدريب الكافي لشبكة العصبية . والرسم ليس سيئ للغاية (للاطلاع على التنبؤ في يوم واحد). لكن إذا واصلنا التدريب ، سوف نحصل على نتائج أفضل.
http://cortex.snowcron.com/images/cortex_output_1.gif
ثانيا : إنشاء الشبكة العصبية عن طريق البرمجة :
العمل مع الشبكات العصبية من خلال البرمجة يشبه العمل مع الملفات. كما هو الحال مع الملفات ، نحتاج إلى فتح الشبكة العصبية لكي تحصل على معالج لتعامل معها. وذلك من خلال تمرير المعالج إلى غير ذلك من الوظائف ذات الصلة بالشبكة العصبية .
كود PHP:
void main()
{
array arrNN = CREATE_ARRAY(0);
double dMA_1 = 14;
string strStockPath =
"c:\\S_Projects\\CortexPro\\data\\samples\\stocks\\genz.txt";
double bIsPathRelative = 0;
array arrLags = CREATE_ARRAY(0);
array arrDate = CREATE_ARRAY(0);
array arrClose = CREATE_ARRAY(0);
TABLE_LOADER(strStockPath, bIsPathRelative, 0, "", 1,
"<!-- chart1", 0, arrDate, 6, arrClose);
من خلال هذا الكود ،نقوم بتحمل البيانات الموجود في الملف Genz..TXT الموجود في ملفات الكرتكس
TABLE_LOADER : وهي وظيفة تستخدم لتحميل البيانات من قرص الملف إلى مجموعة من المصفوفات ، صفيف واحد لكل عمود.
كود PHP:
nNumOfRecords = TABLE_LOADER(strFullPath,
bIsRelative, bReverse, strStartPattern, strSkipAfterStartPattern,
strEndPattern, nCol_1, arr_1, ...);
قيمة العائد : عدد السجلات التي تم معالجتها بنجاح. أو -1 ، اذا فشلت (على سبيل المثال ، لا يوجد مثل هذا الملف).
الإعدادات :
strFullPath -- مسار الملف الذي سيتم تحميله
bIsRelative :
0 إذا كان المسار كامل
و 1 إذا كان المسار هو نسبة من مسار البرنامج . على سبيل المثال :
كود PHP:
"c:\\s_projects\\CortexPro\\data\\samples\\stocks\\msft.txt
..\\CortexPro\\data\\samples\\stocks\\msft.txt"
bReverse -- طريقة ترتيب البينات المحملة ، يمكن عكس ترتيبها ، على سبيل المثال ، إذا كانت أسعار الأسهم و الملف يحتوي على احدث البيانات الأولى ، ونحن نريدهم أن تبدء من الأقدم .
strStartPattern -- خط ، بعد ذلك تبدأ البيانات التي سيتم استخدامها بالتحميل ، واذا كنا بحاجة لتخطي رأس الملف و " " (سلسلة فارغة) إذا كان لا شيء
strSkipAfterStartPattern : عدد الأسطر التي سنتجاوزها عند بداية معالجة البيانات
strEndPattern :شرط التوقف عن تحميل البيانات (يعني جملة أو كلمة تقف عندها العملية )
nCol_1 -- العمود الأول لتحميل
arr_1 -- سلسلة أحرف ( متغير ، أعلن سابقا) الذي سيحصل على البيانات من العمود الأول.
... يمكن أن يكون هناك مزيد من nCol_i ، arr_i ، إذا كنا نريد تحميل أكثر من عمود واحد.
كود PHP:
double hNN = OPEN_NN(
"c:\\S_Projects\\CortexPro\\data\\samples\\nn\\genz.nn",
0);
for(double i = 0; i < 9; i = i + 1)
{
arrLags[i] = i + 1;
}
APPLY_NN(hNN, 1000, 1.0, 1, arrClose, arrLags, 1, arrNN);
CLOSE_NN(hNN);
....
}
....
في الكود أعلاه قمنا بفتح الشبكة العصبية (تم إنشاؤها من قبل واحد) نطبق عليها البيانات ثم نغلقها
وهناك عدد قليل من الوظائف التي تسمح لك أن تفعل كل شيء من خلال البرمجة واللتي يمكنك القيام بها من جهة واجهة المستخدم كورتيكس . على سبيل المثال ، يمكنك إنشاء شبكة عصبية فارغة ، تعيين عدد من طبقات ، الخلايا العصبية ، والمدخلات والمخرجات إلخ .
يمكنا أن نبدء بتعليم الشبكة وتحديد شروط توقف التعليم
كود PHP:
...
CREATE_NN(strNnFileName, bIsPathRelative,
strLagFileName, bIsPathRelative, nSkipBefore,
nSkipAfter, strStartLine, strEndLine, bReverseArrays,
arrInputColumns, arrInputColumnNames, arrOutputColumns,
arrOutputColumnNames, nExtractRecords, dStopError,
nStopEpoch, nNeuronsLayer1, nNeuronsLayer2,
nNeuronsLayer3, nNeuronsLayer4, nLayers, nActivation,
nAdjustRange, arrOutTabInputColumns,
arrOutTabInputColumnNames, arrOutTabOutputColumns,
arrOutTabOutputColumnNames);
string strSeparator = ",;";
CREATE_LAG_FILE(strStockFileName, bIsPathRelative,
strLagFileName, bIsPathRelative, nSkipBefore,
nSkipAfter, strStartLine, strEndLine, strSeparator,
bReverseArrays, arrColumns, arrColumnNames,
arrLags, nNumOfInputColumns);
OPEN_NN_FILE(strNnFileName, 0, 1, 1, 1);
}
في بعض الأحيان ، نحتاج إلى معالجة البيانات عند وصولها ( التداول في الوقت الحقيقي هو مثال جيد). لمعالجة كافة السجلات ،مثلا 10،000 في كل مرة هو أمر غير مريح للغاية. لمعالجة هذه الحالة ، لغة البرمجة سلانج لديها وظيفة ، التي تسمح لتسجيل البينات عند وصولها .
كود PHP:
....
double hNN = OPEN_NN(
"c:\\S_Projects\\CortexPro\\data\\samples\\nn\\genz.nn",
0);
for(i = 9; i < ARRAY_SIZE(arrClose); i = i + 1)
{
for(double j = 0; j < 9; j = j + 1)
{
arrPattern[j] = arrCloseNorm[i - j - 1];
}
PATTERN_NN(hNN, arrPattern, dExtendRange);
arrNN[i] = arrPattern[9];
}
CLOSE_NN(hNN);
....
في الكود أعلاه ، فتحنا الشبكة العصبية ثم وصلناها بالبيانات ، واحدة واحدة (لهذه الشبكة على وجه الخصوص) هي 9 اسعار إغلاقات أخيرة .
هناك وظيفة مهمة وهي GET_NN_WEIGHTS
وتقوم بإرجاع الأوزان لطبقة محددة :
كود PHP:
array arrWeights = GET_NN_WEIGHTS(hNn, nLayer);
في المثال التالي سنقوم بإستخراج أوزان شبكة تعلمت بالكامل على بيانات اليورو فريم الساعة ومؤشر ال-CLV:
كود PHP:
void main()
{
OUT_CLEANUP();
string strImagePath = "F:\\PFE\\Cortex Neural Networks Software\\CORTEX PRO Full Version Cracked By AHMEDFEKI\\CortexPro\\data\\samples\\images\\";
string strForexName = "EURUSD_H1";
string strImageFileName = strImagePath + strForexName + "_05.png";
string strNnPath = "F:\\PFE\\Cortex Neural Networks Software\\CORTEX PRO Full Version Cracked By AHMEDFEKI\\CortexPro\\data\\samples\\nn\\";
string strNnFileName = strNnPath + strForexName + "_05.nn";
// ------------
string strDataFileName = "F:\\PFE\\Cortex Neural Networks Software\\CORTEX PRO Full Version Cracked By AHMEDFEKI\\CortexPro\\data\\samples\\forex\\"
+ strForexName + ".TXT";
string strLagFileName =
"F:\\PFE\\Cortex Neural Networks Software\\CORTEX PRO Full Version Cracked By AHMEDFEKI\\CortexPro\\data\\samples\\nn\\"+strForexName + "_05.lgg";
double bIsPathRelative = 0;
array arrDate = CREATE_ARRAY(0);
array arrTime = CREATE_ARRAY(0);
array arrOpen = CREATE_ARRAY(0);
array arrHigh = CREATE_ARRAY(0);
array arrLow = CREATE_ARRAY(0);
array arrClose = CREATE_ARRAY(0);
TABLE_LOADER(strDataFileName, bIsPathRelative, 0, "", 0, "", 0,
arrDate, 1, arrTime, 2, arrOpen, 3, arrHigh, 4, arrLow, 5, arrClose);
double nInterval = 64;
double nMa = 3;
array arrClv = CreateClv(nInterval);
array arrClvSmooth = EXP_MVAVG(arrClv, nMa);
double nOutLag = 2;
double nRemoveFirst = 200;
array arrLags = CREATE_ARRAY(0);
// ATTN: These lags are based on nWinLag.
// Example: nWinLag = 1, then each number should be increased by 1
string strLagBuf = "9,0,1,2,3,4,8,12,16,20";
CreateLagFile(strLagBuf, nRemoveFirst);
double nExtractRecords = 0.7 * ARRAY_SIZE(arrClose);
double nNeurons = 5;
double dStopError = 0;
double nStopEpoch = 5000;
array arrNn = CREATE_ARRAY(0);
NewNn(arrLags, dStopError, nStopEpoch, nNeurons);
TeachNn();
double hNn = OPEN_NN(strNnFileName, bIsPathRelative);
APPLY_NN(hNn, nExtractRecords, 1.0, 1, arrClvSmooth, arrLags, 1, arrNn);
PRINT("%s\r\n", "Layer 1");
array arrWeights = GET_NN_WEIGHTS(hNn, 0);
// "9" is number of lags, same as number of inputs of the 1st layer
// It is also number of neurons in the 1st layer
for(double nNeuron = 0; nNeuron < 9; nNeuron = nNeuron + 1)
{
PRINT("Neuron %.0f: ", nNeuron);
for(double nInput = 0; nInput < 9; nInput = nInput + 1)
{
PRINT("%f, ", arrWeights[9 * nNeuron + nInput]);
}
PRINT("%s", "\r\n");
}
PRINT("%s\r\n", "Layer 2");
array arrWeights = GET_NN_WEIGHTS(hNn, 1);
// "nNeurons" is number of neurons in the 2nd (hidden) layer
// "9" is number of inputs (same as number of neurons in the
// previous (1st) layer
for(double nNeuron = 0; nNeuron < nNeurons; nNeuron = nNeuron + 1)
{
PRINT("Neuron %.0f: ", nNeuron);
for(double nInput = 0; nInput < 9; nInput = nInput + 1)
{
PRINT("%f, ", arrWeights[nNeurons * nNeuron + nInput]);
}
PRINT("%s", "\r\n");
}
PRINT("%s\r\n", "Layer 3");
array arrWeights = GET_NN_WEIGHTS(hNn, 2);
// 1 neuron
// "nNeurons" is number of inputs (same as number of neurons in the
// previous (2nd) layer
for(double nInput = 0; nInput < nNeurons; nInput = nInput + 1)
{
PRINT("%s: ", "Neuron 1");
PRINT("%f, ", arrWeights[nInput]);
PRINT("%s", "\r\n");
}
CLOSE_NN(hNn);
PRINT("%s\r\n", "Done");
}
// ---------------
array CreateClv(double nInterval)
{
PRINT("%s\r\n", "Creating CLV indicator");
array arrClv = CREATE_ARRAY(0);
array arrPeriodLow = CREATE_ARRAY(0);
array arrPeriodHigh = CREATE_ARRAY(0);
double nArraySize = ARRAY_SIZE(arrClose);
array arrPeriodLow = MV_MIN(arrLow, nInterval);
array arrPeriodHigh = MV_MAX(arrHigh, nInterval);
for(double i = 0; i < nInterval; i = i + 1)
{
arrClv[i] = 0;
}
double dClose;
double dLow;
double dHigh;
for(i = nInterval; i < nArraySize; i = i + 1)
{
dClose = arrClose[i];
dLow = arrPeriodLow[i];
dHigh = arrPeriodHigh[i];
// / 2 + 1 to confine to 0...1 instead of -1...1
arrClv[i] = (((dClose - dLow) - (dHigh - dClose))
/ (dHigh - dLow)) / 2 + 0.5;
}
return arrClv;
}
// ----------------
void CreateLagFile(string strLags, double nRemoveFirst)
{
double hFile = F_OPEN(strLagFileName, "wb");
F_PRINT(hFile, "%s", "No,Clv");
ARRAY_REMOVE(arrLags, -1);
string strToken = GET_TOKEN(strLags, ",");
double nNumOfLags = STR2NUM(strToken);
for(double i = 0; i < nNumOfLags; i = i + 1)
{
strToken = GET_TOKEN(strLags, ",");
arrLags[i] = STR2NUM(strToken) + nOutLag;
}
double nFullLag;
for(i = 0; i < ARRAY_SIZE(arrLags); i = i + 1)
{
nFullLag = arrLags[i];
F_PRINT(hFile, ",ClvMa%.0f", nMa, "-%.0f", nFullLag);
}
F_PRINT(hFile, "%s\r\n", "");
double nNum;
for(i = nRemoveFirst; i < ARRAY_SIZE(arrClose); i = i + 1)
{
nNum = i - nRemoveFirst + 1;
F_PRINT(hFile, "%.0f", nNum, ",%f", arrClvSmooth[i]);
for(double j = 0; j < ARRAY_SIZE(arrLags); j = j + 1)
{
F_PRINT(hFile, ",%f", arrClvSmooth[i - arrLags[j]]);
}
F_PRINT(hFile, "%s\r\n", "");
}
F_CLOSE(hFile);
}
// --------------
void NewNn(array arrLags, double dStopError, double nStopEpoch, double nNeuronsLayer2)
{
double nSkipBefore = 0;
double nSkipAfter = 0;
string strStartLine = "";
string strEndLine = "";
double bReverseArrays = 0;
// Inputs
array arrInputColumns = CREATE_ARRAY(0);
array_s arrInputColumnNames = CREATE_ARRAY_S(0);
// 0 - Number, 1 - Clv, our input begins at column No 2
for(double nInputCol = 0; nInputCol < ARRAY_SIZE(arrLags); nInputCol = nInputCol + 1)
{
arrInputColumns[nInputCol] = nInputCol + 2;
arrInputColumnNames[nInputCol] =
"Clv-" + NUM2STR(arrLags[nInputCol], "%.0f");
}
array arrOutputColumns = CREATE_ARRAY(0);
arrOutputColumns[0] = 1; // Clv
array_s arrOutputColumnNames = CREATE_ARRAY_S(0);
arrOutputColumnNames[0] = "Clv";
// To do: Modify if more than one indicator is used
double nNeuronsLayer1 = ARRAY_SIZE(arrLags);
// double nNeuronsLayer2 = 7;
double nNeuronsLayer3 = 1;
double nNeuronsLayer4 = 0;
double nLayers = 3;
double nActivation = 0;
double nAdjustRange = 1.0;
array arrOutTabInputColumns = CREATE_ARRAY(0);
arrOutTabInputColumns[0] = 0; // Number
array_s arrOutTabInputColumnNames = CREATE_ARRAY_S(0);
arrOutTabInputColumnNames[0] = "No";
array arrOutTabOutputColumns = CREATE_ARRAY(0);
// Desired output and NN output will be added to the
// same list, right after inputs
arrOutTabOutputColumns[0] = ARRAY_SIZE(arrLags) + 2;
arrOutTabOutputColumns[1] = ARRAY_SIZE(arrLags) + 3;
array_s arrOutTabOutputColumnNames = CREATE_ARRAY_S(0);
arrOutTabOutputColumnNames[0] = "Clv";
arrOutTabOutputColumnNames[1] = "NN: Clv" ;
CREATE_NN(strNnFileName, bIsPathRelative, strLagFileName,
bIsPathRelative, nSkipBefore, nSkipAfter, strStartLine, strEndLine,
bReverseArrays, arrInputColumns, arrInputColumnNames,
arrOutputColumns, arrOutputColumnNames, nExtractRecords, dStopError, nStopEpoch,
nNeuronsLayer1, nNeuronsLayer2, nNeuronsLayer3, nNeuronsLayer4, nLayers,
nActivation, nAdjustRange, arrOutTabInputColumns, arrOutTabInputColumnNames,
arrOutTabOutputColumns, arrOutTabOutputColumnNames);
}
// ----------------
void TeachNn()
{
PRINT("%s\r\n", "Opening NN dialog, teaching the NN");
double bStartLearning = 1;
double bResumeScript = 1;
double bReset = 1;
OPEN_NN_FILE(strNnFileName, bIsPathRelative, bStartLearning, bResumeScript, bReset);
}
// -------------
void Chart(string strForexName)
{
string strXML = "<forex>\r\n";
strXML = strXML + "\t<symbol>\r\n\t\t<symbol>\r\n";
strXML = strXML + "\t\t</symbol>\r\n";
strXML = strXML + "\t\t" + SAVE_CHART(400, 300, 0, strImageFileName,
arrDate, arrClvSmooth, arrNn);
strXML = strXML + "\t</symbol>\r\n";
strXML = strXML + "</forex>\r\n";
SAVE_XML(strImagePath, "chart_forex_nn_05", "chart_forex_nn", "root", strXML);
SHOW_XML(strImagePath + "chart_forex_nn.xml");
}
يجب تغيير مسارات الملفات المستعملة في السكريبت حسب مكانها عندك ، وحذاري من نسيان الدابل بار //
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
أنا آسف عن التأخير ،إن شاء الله الدرس يسهل عليكم فهمه وتطبيقه
وهنا نكون قد انتهينا من المرحلة النظرية وسننطلق إن شاء الله الأسبوع القادم في المرحلة التطبيقية وفي إنشاء الاكسبيرت الذي يعتمد على الشبكة العصبية
وان شاء الله كل واحد يتدارك ما لم يفهمه جيدا من الدروس الماضية
والله المستعان *
1 مرفق
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
مجهود رائع
جزاك الله خيرا
واسمحلى بسؤال - عندما ادخل على التبويب output واحضر ملفgenz.apl فلا أجد هذا الملف بالرغم من انى اتبع الخطوات بطريقة صحيحة .. فأين يكمن الخطأ ؟؟؟؟
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
جزاك الله خيرا استاذي العزيز
و انشا الله من خلال متابعة الاخوه نعمل اكسبيرت ناجح بنسبه عاليه جدا و اقتراحي حول كتابة الاكسبيرت هي ثلاثة خطوات :
الاول بحث عن استراتيجيه التي تعطي نقاط دخول قويه جدا مثل استراتيجية التي مبنيه على كسر الدعوم و المقاومه في اتجاه السوق مع نسبة سيوله عاليه في السوق
ثانيا علاج الاخطاء الموجوده في الاستراتيجيه و تطويرها بواسطة شبكه العصبيه
ثالثا استعمال طريقة المضاعفات لزيادة الربح و رفع الاخطاء الموجوده في الشبكه العصبيه يعني بعد ما فرغنا من الخطوتين الاولتين ندمج معها المضاعفات و اذا امكن الهدج و سوف نحصل على اكسبيرت امن 100%
اقتراحي استاذي العزيز افضل استراتيجيه و هي مجربه جدا عند الاخوه و مطابقة للخطوات الوفق و ارجوا ان تعمل لها اكسبيرت هي موجوده على هذا الرابط:
https://forum.arabictrader.com/t99325.html
و شكرا
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اقتباس:
المشاركة الأصلية كتبت بواسطة جرير
مجهود رائع
جزاك الله خيرا
واسمحلى بسؤال - عندما ادخل على التبويب output واحضر ملفgenz.apl فلا أجد هذا الملف بالرغم من انى اتبع الخطوات بطريقة صحيحة .. فأين يكمن الخطأ ؟؟؟؟
أنا الآن أرى الملف الأول على اليسار
اضغط على Files of types ثم إختر صيغة apl
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اقتباس:
المشاركة الأصلية كتبت بواسطة amazing
جزاك الله خيرا استاذي العزيز
و انشا الله من خلال متابعة الاخوه نعمل اكسبيرت ناجح بنسبه عاليه جدا و اقتراحي حول كتابة الاكسبيرت هي ثلاثة خطوات :
الاول بحث عن استراتيجيه التي تعطي نقاط دخول قويه جدا مثل استراتيجية التي مبنيه على كسر الدعوم و المقاومه في اتجاه السوق مع نسبة سيوله عاليه في السوق
ثانيا علاج الاخطاء الموجوده في الاستراتيجيه و تطويرها بواسطة شبكه العصبيه
ثالثا استعمال طريقة المضاعفات لزيادة الربح و رفع الاخطاء الموجوده في الشبكه العصبيه يعني بعد ما فرغنا من الخطوتين الاولتين ندمج معها المضاعفات و اذا امكن الهدج و سوف نحصل على اكسبيرت امن 100%
اقتراحي استاذي العزيز افضل استراتيجيه و هي مجربه جدا عند الاخوه و مطابقة للخطوات الوفق و ارجوا ان تعمل لها اكسبيرت هي موجوده على هذا الرابط:
https://forum.arabictrader.com/t99325.html
و شكرا
شكرا لك أخي وجزاك الله خيرا
إن شاء الله سنناقش هذه الإستراتيجية في المرحلة القادمة
وهي فعلا إستراتيجية جيدة
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اقتباس:
المشاركة الأصلية كتبت بواسطة ahmedfeki
أنا الآن أرى الملف الأول على اليسار
اضغط على Files of types ثم إختر صيغة apl
جزاك الله خيرا
فعلا هو الملف ... كان ظاهر عندى على شكل ملف وينامب :0023:.. وأشتغل معى وطلع الشارت
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
بداية اشكرك أخي ahmedfeki على هذا الموضوع العملاق وهذا الاسلوب المتقن
في الشرح وجزاك الله خيرا واتمنى الاستمرار في الموضوع حتى النهايه
لك مني كل دعوات الخير
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اشكر ahmedfeki وجميع الاعضاء
انمني التوفيق كي نخرج جميعا بخبرة جيدة واكسبيرت ممتاز باذن الله
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
شكرا لك أخي الكريم على الفكرة الرائعة والموضوع الرائع
أنا منذ زمن بعيد كنت أبحث عن من يتابع موضوع الشبكة العصبية
ولكن هناك سؤالين أرجو منك إجابتي عليهما حتى قبل بداية الدورة لو سمحت
1- هل من الضروري ربط الشبكة العصبية أو تحويلها إلى إكسبرت
2- عند نهاية تشكيل الشبكة العصبية يدويا (غير برمجيا) ووصولها إلى مرحلة مرضية من التدريب
كيف يمكن القيام بعملية التنبؤ من البرنامج نفسه وكيف سندخل المعلومات الجديدة التي ستعتمد عليها الشبكة في التنبؤ للمرحلة القادمة.
وشكرا
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
بارك الله فيك وفي علمك
من ارقى واجمل المواضيع في هذا القسم ولاتهون بقية المواضيع
ولكن هذا الموضوع شدني واسلوب الاستاذ احمد رائع ونتمنى منه اكماله
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اقتباس:
المشاركة الأصلية كتبت بواسطة جرير
جزاك الله خيرا
فعلا هو الملف ... كان ظاهر عندى على شكل ملف وينامب :0023:.. وأشتغل معى وطلع الشارت
اقتباس:
المشاركة الأصلية كتبت بواسطة se2007
بداية اشكرك أخي ahmedfeki على هذا الموضوع العملاق وهذا الاسلوب المتقن
في الشرح وجزاك الله خيرا واتمنى الاستمرار في الموضوع حتى النهايه
لك مني كل دعوات الخير
اقتباس:
المشاركة الأصلية كتبت بواسطة mohamed6069
اشكر ahmedfeki وجميع الاعضاء
انمني التوفيق كي نخرج جميعا بخبرة جيدة واكسبيرت ممتاز باذن الله
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو أثير
بارك الله فيك وفي علمك
من ارقى واجمل المواضيع في هذا القسم ولاتهون بقية المواضيع
ولكن هذا الموضوع شدني واسلوب الاستاذ احمد رائع ونتمنى منه اكماله
شكرا لكم وجزاكم الله خيرا
ولا شكر على واجب كلنا إخوة في الله
وفقنا الله وإياكم في إفادة المسلمين والمسلمات
وحظ موفق للجميع
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اقتباس:
المشاركة الأصلية كتبت بواسطة business77
شكرا لك أخي الكريم على الفكرة الرائعة والموضوع الرائع
أنا منذ زمن بعيد كنت أبحث عن من يتابع موضوع الشبكة العصبية
ولكن هناك سؤالين أرجو منك إجابتي عليهما حتى قبل بداية الدورة لو سمحت
1- هل من الضروري ربط الشبكة العصبية أو تحويلها إلى إكسبرت
2- عند نهاية تشكيل الشبكة العصبية يدويا (غير برمجيا) ووصولها إلى مرحلة مرضية من التدريب
كيف يمكن القيام بعملية التنبؤ من البرنامج نفسه وكيف سندخل المعلومات الجديدة التي ستعتمد عليها الشبكة في التنبؤ للمرحلة القادمة.
وشكرا
أهلا بك أخي الكريم
وشكرا لك على هذه المشاركة الطيبة
بالنسبة للسؤال الأول : ليس من الضروري ربط الشبكة العصبية بالإكسبيرت
فإنها مثل المؤشر ، الذي يمكن أن نستعين به في قرارتنا يدويا وبدون اكسبيرت
كذلك الشبكة العصبية ، ولكنها ومن خلال تعليمها على الماضي ،تتنبأ لنا بالمستقبل
ومن خلال هذا التنبأ تبنى قرارتنا يدويا ، ولكننا الأن نرغب في أن نجعل العمل تلقائي
من خلال برمجة اكسبرت منطقي ومبني على أسس ناجحة .
بالنسبة للسؤال الثاني : إن تعليم الشبكة يجب أن يكون متجدد ومستمر مع المعلومات الجديدة .
وبالنسبة لعملية التنبأ ،وبالرغم من أنها مشروحة في الدرس الأخير ،فمثلا ندخل على الشبكة مجموعة اغلاقات ومن خلالها ستقوم بإخراج تنبؤها حسب مع تعلمته
ثم ندخل لها الإغلاق الحقيقي ،فتقوم هي بدورها بتصحيح خطأها ، ليكون تنبئها في المستقبل أكثر دقة .
إن شاء الله أكون قد أجبتك عن أسئلتك أخي الكريم
و أرجو منك أن تراجع الدروس الماضية ، لمزيد من الفهم خاصة الدرس الأول وفهم أسس الشبكة العصبية ومفهومها .
تقبل ودي أخي العزيز
*
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اقتباس:
المشاركة الأصلية كتبت بواسطة ahmedfeki
أهلا بك أخي الكريم
وشكرا لك على هذه المشاركة الطيبة
بالنسبة للسؤال الأول : ليس من الضروري ربط الشبكة العصبية بالإكسبيرت
فإنها مثل المؤشر ، الذي يمكن أن نستعين به في قرارتنا يدويا وبدون اكسبيرت
كذلك الشبكة العصبية ، ولكنها ومن خلال تعليمها على الماضي ،تتنبأ لنا بالمستقبل
ومن خلال هذا التنبأ تبنى قرارتنا يدويا ، ولكننا الأن نرغب في أن نجعل العمل تلقائي
من خلال برمجة اكسبرت منطقي ومبني على أسس ناجحة .
بالنسبة للسؤال الثاني : إن تعليم الشبكة يجب أن يكون متجدد ومستمر مع المعلومات الجديدة .
وبالنسبة لعملية التنبأ ،وبالرغم من أنها مشروحة في الدرس الأخير ،فمثلا ندخل على الشبكة مجموعة اغلاقات ومن خلالها ستقوم بإخراج تنبؤها حسب مع تعلمته
ثم ندخل لها الإغلاق الحقيقي ،فتقوم هي بدورها بتصحيح خطأها ، ليكون تنبئها في المستقبل أكثر دقة .
إن شاء الله أكون قد أجبتك عن أسئلتك أخي الكريم
و أرجو منك أن تراجع الدروس الماضية ، لمزيد من الفهم خاصة الدرس الأول وفهم أسس الشبكة العصبية ومفهومها .
تقبل ودي أخي العزيز
*
===========================================
اذا سمحتلي اخي الكريم بسؤال هل الشبكه العصبيه تأخذ بياناتها مباشره من الميتاتريدر
او بصوره اخرى لسؤال
هل من الممكن الخروج عن المألوف بالبيانات التي تدخل على الشبكه
من (اغلاقات و افتتاحات و هايات و لوات )
لجعلها بيانات معدله من قبل مؤشر ثم ارسالها الى الشبكه
مثال على ذلك تزويد الشبكه بكم هائل من التكات لعله يكون اكثر دقه في استنباط
التوقع بالمستقبل ربما يكشف الدورات الزمنيه للترند
لك مني كل التقدير والاحترام
رد: على بركة الله دورة إنشاء اكسبيرت يعتمد على الشبكة العصبية
اقتباس:
المشاركة الأصلية كتبت بواسطة ahmedfeki
أهلا بك أخي الكريم
وشكرا لك على هذه المشاركة الطيبة
بالنسبة للسؤال الأول : ليس من الضروري ربط الشبكة العصبية بالإكسبيرت
فإنها مثل المؤشر ، الذي يمكن أن نستعين به في قرارتنا يدويا وبدون اكسبيرت
كذلك الشبكة العصبية ، ولكنها ومن خلال تعليمها على الماضي ،تتنبأ لنا بالمستقبل
ومن خلال هذا التنبأ تبنى قرارتنا يدويا ، ولكننا الأن نرغب في أن نجعل العمل تلقائي
من خلال برمجة اكسبرت منطقي ومبني على أسس ناجحة .
بالنسبة للسؤال الثاني : إن تعليم الشبكة يجب أن يكون متجدد ومستمر مع المعلومات الجديدة .
وبالنسبة لعملية التنبأ ،وبالرغم من أنها مشروحة في الدرس الأخير ،فمثلا ندخل على الشبكة مجموعة اغلاقات ومن خلالها ستقوم بإخراج تنبؤها حسب مع تعلمته
ثم ندخل لها الإغلاق الحقيقي ،فتقوم هي بدورها بتصحيح خطأها ، ليكون تنبئها في المستقبل أكثر دقة .
إن شاء الله أكون قد أجبتك عن أسئلتك أخي الكريم
و أرجو منك أن تراجع الدروس الماضية ، لمزيد من الفهم خاصة الدرس الأول وفهم أسس الشبكة العصبية ومفهومها .
تقبل ودي أخي العزيز
*
شكرا لك أخي على المتابعة والرد
ولكنني متأكد من أنني دققت في كل الدروس
ولم أجد الطريقة التي تمكن من معرفة التنبؤ ليوم غد مثلا
أنا صممت شبكة معتمدة عل إغلاق اليومي و ذلك على أساس +1و -1 أي ارتفاع أو انخفاض واتبعت جميع خطوات التصميم اليدوية حتى ظهور الشارت ولكن بعد هذا ماذا يمكن أن أفعل حتى أدخل معلومات إغلاق اليوم الحالى حتى أعرف التنبؤ حول إغلاق يوم غد
أرجو منك أخي أن تساعدني في هذه النقطة بالطريقة اليدوية غير البرمجية ولك جزيل الشكر والامتنان على هذا الموضوع الرائع
خاصة أني أحاول استخدام الشبكات العصبية في بحث علمي في اختصاصي بعيدا عن الفوركس
وموضوعك هذا بين لي نواح عديدة كنت أرغب في الاطلاع عليها
وشكرا