المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : سؤال أو مشكل برمجي في التعامل مع قيمتين


عمر عمر
27-05-2016, 07:57 PM
السلام عليكم و رحمة الله

أهلا استاذ اسلام العوامي

يوجد عندي مشكلة برمجية أخرى واجهتني

راح أعطيك مثال

في حال اردت أن أضع شرط
اذا كان سعر فوق الموفنج يعطيني أو يكتبلي اشارة UP مثلا و تبقى مكتوبة الى غاية ان يصير السعر تحت الموفنج

كما في الصورة

http://www.fx-arabia.com/vb/uploaded/31088_01464367604.png (http://www.fx-arabia.com/vb)

في هذه الحالة نحن نتعامل مع موفنج واحد أي مع قيمة واحدة أو مستوى واحد
برمجت هذا الشرط بسيطة و قد قمت بذالك على الشكل التالي



double a = iClose(Symbol(),60,1);
double v = iMA(Symbol(),60,200,0,0,0,0);
string R = " ";

if(a>v)
{
R = "UP";
}

if(a<v)
{
R= "DOWN";
}

Comment(R);



و الأمرناجح بدون مشاكل

----

المشكل هو عندما اردت التعامل مع مستويين أو قيمتين

و هذه الصورة تشرح ذالك

http://www.fx-arabia.com/vb/uploaded/31088_01464367787.png (http://www.fx-arabia.com/vb)

اذا كان السعرفوق الموفنجين معا يعطيني UP
و اذا كان تحت الموفنجين يعطيني DOWN

المشكلة هي عندما يكون بينهما

اريده أن يبثت الاشارة السابقة القديمة مثلا كما في مثال الصورة
السعر كان اسفل الموفنجين كان DOWN لما صعد و اصبح بينهما بقي محافظ على اشارة down حتى اصبح فوقهما صار UP
نفس الشيئ عندمايكون في الأعلى و نازل . كان فوقهما معا باشارة UP لما صار بينهما بقي محافظ على اشارة UP حتى صار تحتهما معا

المشكل عندما برمجت ذالك بشكل عادي مثل مثال البرمجة الذي وضعته في البداية في الصورة الأولى
لما يكون السعر بينهما ( محصور بين قيمتي الموفنج ) يعطيني قيمة 0 أو قيمة لا شيئ
حيث أن المؤشر لا يتعرف هل السعر أتي من الأعلى أم من الأسفل !!

كيف يعرف المؤشر هل السعر كان فقوهما و نزل و صار محصورلكي يعطيه up
أو كان اسفلهما معا و صاعد و صار محصور بينها ليبقي الاشارة down الى غاية الصعود الكلي ؟؟؟

ملاحظة الموفنجين لا يتقطعات . يبقى دائما الأزرق وفق و الأحمر تحت
مثل موفنج high و موفنج low

أو مثل مستويات ال RSI مثلا اذا كان فوق ال 60 يعطينا UP و اذا كان تحت ال 40 يعطيما DOWN و اذا كان بينهما يعطينا الاشارة القديمة . حيث أن المستويين 60 و 40 لا يتقطعات . استحالة التقاطع

كيف يمكن برمجة ذالك و وضع هذا الشرط جزاك الله خيرا

اسلام العوامى
28-05-2016, 10:37 AM
السلام عليكم و رحمة الله

أهلا استاذ اسلام العوامي

يوجد عندي مشكلة برمجية أخرى واجهتني

راح أعطيك مثال

في حال اردت أن أضع شرط
اذا كان سعر فوق الموفنج يعطيني أو يكتبلي اشارة UP مثلا و تبقى مكتوبة الى غاية ان يصير السعر تحت الموفنج

كما في الصورة

http://www.fx-arabia.com/vb/uploaded/31088_01464367604.png (http://www.fx-arabia.com/vb)

في هذه الحالة نحن نتعامل مع موفنج واحد أي مع قيمة واحدة أو مستوى واحد
برمجت هذا الشرط بسيطة و قد قمت بذالك على الشكل التالي



double a = iClose(Symbol(),60,1);
double v = iMA(Symbol(),60,200,0,0,0,0);
string R = " ";

if(a>v)
{
R = "UP";
}

if(a<v)
{
R= "DOWN";
}

Comment(R);



و الأمرناجح بدون مشاكل

----

المشكل هو عندما اردت التعامل مع مستويين أو قيمتين

و هذه الصورة تشرح ذالك

http://www.fx-arabia.com/vb/uploaded/31088_01464367787.png (http://www.fx-arabia.com/vb)

اذا كان السعرفوق الموفنجين معا يعطيني UP
و اذا كان تحت الموفنجين يعطيني DOWN

المشكلة هي عندما يكون بينهما

اريده أن يبثت الاشارة السابقة القديمة مثلا كما في مثال الصورة
السعر كان اسفل الموفنجين كان DOWN لما صعد و اصبح بينهما بقي محافظ على اشارة down حتى اصبح فوقهما صار UP
نفس الشيئ عندمايكون في الأعلى و نازل . كان فوقهما معا باشارة UP لما صار بينهما بقي محافظ على اشارة UP حتى صار تحتهما معا

المشكل عندما برمجت ذالك بشكل عادي مثل مثال البرمجة الذي وضعته في البداية في الصورة الأولى
لما يكون السعر بينهما ( محصور بين قيمتي الموفنج ) يعطيني قيمة 0 أو قيمة لا شيئ
حيث أن المؤشر لا يتعرف هل السعر أتي من الأعلى أم من الأسفل !!

كيف يعرف المؤشر هل السعر كان فقوهما و نزل و صار محصورلكي يعطيه up
أو كان اسفلهما معا و صاعد و صار محصور بينها ليبقي الاشارة down الى غاية الصعود الكلي ؟؟؟

ملاحظة الموفنجين لا يتقطعات . يبقى دائما الأزرق وفق و الأحمر تحت
مثل موفنج high و موفنج low

أو مثل مستويات ال RSI مثلا اذا كان فوق ال 60 يعطينا UP و اذا كان تحت ال 40 يعطيما DOWN و اذا كان بينهما يعطينا الاشارة القديمة . حيث أن المستويين 60 و 40 لا يتقطعات . استحالة التقاطع

كيف يمكن برمجة ذالك و وضع هذا الشرط جزاك الله خيرا

،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،اهلا بك اخي الفاضل ، قم بتعريف المتغير R في بداية الكود مع المتغيرات الخارجية واجعله من النوع static،،،


static string R;


،،،تحياتي،،،

عمر عمر
28-05-2016, 04:57 PM
السلام عليكم

أخي اسلام هل قرأت جيدا الاشكال المطروح ؟؟

اضافة
static

لا يغير اي شيئ

اضفتها و بقي لما يكون يكون محصور بين القيمتين أو المستويين يعطيني اشارة أو قيمة لا شيئ

هذا مثال على ال RSI

عندمايكون أعلى 60 يعطيني UP
و عندما يكون تحت 40 يعطيني DOWN

لكن عندما يكون بينهما لا يعطيني شيئ و أنا اريده ان يثبت القيمة القديمة حتى يصعد أو ينزل فوق أو تحت احدى المستويين



double P = iRSI(Symbol(),60,14,PRICE_CLOSE,1);

static string R;

if(P>60)
{
R = "UP";
}

if(P<40)
{
R = "DOWN";
}

Comment(R);





هاهو الكود و قد تم اضافة static و بقيت نفس المشكلة

اسلام العوامى
28-05-2016, 05:25 PM
السلام عليكم

أخي اسلام هل قرأت جيدا الاشكال المطروح ؟؟

اضافة
static

لا يغير اي شيئ

اضفتها و بقي لما يكون يكون محصور بين القيمتين أو المستويين يعطيني اشارة أو قيمة لا شيئ

هذا مثال على ال RSI

عندمايكون أعلى 60 يعطيني UP
و عندما يكون تحت 40 يعطيني DOWN

لكن عندما يكون بينهما لا يعطيني شيئ و أنا اريده ان يثبت القيمة القديمة حتى يصعد أو ينزل فوق أو تحت احدى المستويين



double P = iRSI(Symbol(),60,14,PRICE_CLOSE,1);

static string R;

if(P>60)
{
R = "UP";
}

if(P<40)
{
R = "DOWN";
}

Comment(R);





هاهو الكود و قد تم اضافة static و بقيت نفس المشكلة


،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،نعم اخي الفاضل قرأت الاشكال المطروح جيدا ولكن يبدو انك لم تقرأ ردي جيدا ، قم بتعريف المتغير في اول الكود بعد المتغيرات الخارجية ، وقم بازالته من داخل Ontick لان الاكسبيرت في كل حركة سعرية يقوم بتصفير قيمة المتغير ويري هل تحقق الشرط ام لا ولكن اذا قمت بتعريفه في اول الكود بعد المتغيرات الخارجية او كتسمية صحيحة في Global area وجعلت المتغير static سيظل محتفظ بقيمته الاخيرة،،،

،،،تحياتي،،،

عمر عمر
28-05-2016, 05:51 PM
،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،نعم اخي الفاضل قرأت الاشكال المطروح جيدا ولكن يبدو انك لم تقرأ ردي جيدا ، قم بتعريف المتغير في اول الكود بعد المتغيرات الخارجية ، وقم بازالته من داخل Ontick لان الاكسبيرت في كل حركة سعرية يقوم بتصفير قيمة المتغير ويري هل تحقق الشرط ام لا ولكن اذا قمت بتعريفه في اول الكود بعد المتغيرات الخارجية او كتسمية صحيحة في Global area وجعلت المتغير static سيظل محتفظ بقيمته الاخيرة،،،

،،،تحياتي،،،

تمام

قمت بتعريفه في الأعلى خارج الأون تيك و بقي نفس المشكل



#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window

static string R;
double P = iRSI(Symbol(),5,14,PRICE_CLOSE,1);

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---

if(P>60)
{
R = "UP";
}

if(P<40)
{
R = "DOWN";
}



Comment(R);

//--- return value of prev_calculated for next call
return(rates_total);
}





كما ترى في الكود عرفته في الأعلى تمام

و لمايكون فوق 60 يعطيني up
و لما يكون تحت ال 40 يعطيني down

و لما يكون بينهما لا يزال لا يعطيني شيئ لا تزال المشكلة للأسف الشديد

:1 (75): :1 (75): :1 (75):

:1 (69): :1 (69): :1 (69):

اسلام العوامى
28-05-2016, 06:01 PM
تمام

قمت بتعريفه في الأعلى خارج الأون تيك و بقي نفس المشكل



#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window

static string R;
double P = iRSI(Symbol(),5,14,PRICE_CLOSE,1);

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---

if(P>60)
{
R = "UP";
}

if(P<40)
{
R = "DOWN";
}



Comment(R);

//--- return value of prev_calculated for next call
return(rates_total);
}





كما ترى في الكود عرفته في الأعلى تمام

و لمايكون فوق 60 يعطيني up
و لما يكون تحت ال 40 يعطيني down

و لما يكون بينهما لا يزال لا يعطيني شيئ لا تزال المشكلة للأسف الشديد

:1 (75): :1 (75): :1 (75):

:1 (69): :1 (69): :1 (69):


،،،تفضل اخي ، الكود مرفق،،،

،،،تحياتي،،،

عمر عمر
28-05-2016, 06:38 PM
،،،تفضل اخي ، الكود مرفق،،،

،،،تحياتي،،،

نفس الشيئ
لا يضهر أي قيمة عندما يكون بينهما
شو الصورة

http://www.fx-arabia.com/vb/uploaded/31088_01464449694.png (http://www.fx-arabia.com/vb)

المفروض أنه يكتب UP لأنه كان في الأعلى و لم ينزل بعد تحت ال 40
بعد نزول تحت ال 40 يغير الاشارة لتصبح DOWN

لكن كما ترى في الصورة لما يكون بينهما لا يضهر شيئ
و المؤشر المجرب هنا هو مؤشرك الذي ارفقته لي

في انتضار ردك
مشكور جدا على ردك السريع ربنا يجازيك و يجعل مساعدتك لي في ميزان حساناتك

اسلام العوامى
29-05-2016, 11:42 AM
نفس الشيئ
لا يضهر أي قيمة عندما يكون بينهما
شو الصورة

http://www.fx-arabia.com/vb/uploaded/31088_01464449694.png (http://www.fx-arabia.com/vb)

المفروض أنه يكتب UP لأنه كان في الأعلى و لم ينزل بعد تحت ال 40
بعد نزول تحت ال 40 يغير الاشارة لتصبح DOWN

لكن كما ترى في الصورة لما يكون بينهما لا يضهر شيئ
و المؤشر المجرب هنا هو مؤشرك الذي ارفقته لي

في انتضار ردك
مشكور جدا على ردك السريع ربنا يجازيك و يجعل مساعدتك لي في ميزان حساناتك

،،،اهلا بك اخي الفاضل ، انتظر افتتاح السوق وظهور اول اشارة وستظل ثابته بعدها،،،

،،،تحياتي،،،