...@@ مساعده في كتابة كود برمجي @@...
السلام عليكم ورحمة الله وبركاته
انا الان تواجهني مشكله برمجيه وحاولت ان احلها لكن لم اوفق الي حل
المشكله لها شقين الشق الاول
هذا الشرط
كود:
if (can>=stepdeviation && Close[0] ==(buypoint-9*Point))
{
OrderSend(Symbol(),OP_BUY,lotsize,Ask,3,0,0,"",magicn,0,Green);
{
هو عبارة عن شرط الدخول في صفقة الشراء علي حسب المتغيرات الموضحه في الجمله المشكله ان هذا الشرط قد يتحقق كل شمعه او شمعه وشمعه علي حسب المعادلات المحدده لقيمة المتغيراتفي الشرط والان انا اريده ان يفتح امر شراء واحد فقط عند تحقق الشرط لكن لا يمنع فتح امر شراء اخر علي شمعه اخري اذا توافقت الشروط ايضا بمعني انه هنا يقبل بفتح اوامر شراء متعدده كلماتحقق الشرط لكن عند تحقق الشرط يفتح امر واحد فقط في الشمعه الواحده واذا تحقق الشرط علي شمعه اخري يفتح ايضا امر شراء واحد فقط وهكذا
هذا كان الشق الاول
وطبعا الشق الثاني مرتبط بالمشكله الاولي بمعني انه بعد ان يفتح الاكسبيرت مثلا 10صفقات شراء وكلها لها نفس الماجيك نمبر وعلي نفس الزوج كيف اختار من الصفقات العشره صفقه واحده فقط لكي اعدل عليها دون المساس بالباقي اي انه كيف اختار مثلا الصفقه السابعه او الرابعه لاعدلها او اغلقها وليس الباقين ؟؟؟؟؟؟
هذه هي المشكله التي تواجهني الان وحاولت ان ابتكر لها دوال خارجيه لتعد الاوامر او تمنع التكرار ولكن لم اصل الي حل
فأرجو المساعده جازاكم الله خيرا
والسلام عليكم ورحمة الله وبركاته
رد:...@@ مساعده في كتابة كود برمجي @@...
اقتباس:
المشاركة الأصلية كتبت بواسطة batttot
السلام عليكم ورحمة الله وبركاته
انا الان تواجهني مشكله برمجيه وحاولت ان احلها لكن لم اوفق الي حل
المشكله لها شقين الشق الاول
هذا الشرط
كود:
if (can>=stepdeviation && Close[0] ==(buypoint-9*Point))
{
OrderSend(Symbol(),OP_BUY,lotsize,Ask,3,0,0,"",magicn,0,Green);
{
هو عبارة عن شرط الدخول في صفقة الشراء علي حسب المتغيرات الموضحه في الجمله المشكله ان هذا الشرط قد يتحقق كل شمعه او شمعه وشمعه علي حسب المعادلات المحدده لقيمة المتغيراتفي الشرط والان انا اريده ان يفتح امر شراء واحد فقط عند تحقق الشرط لكن لا يمنع فتح امر شراء اخر علي شمعه اخري اذا توافقت الشروط ايضا بمعني انه هنا يقبل بفتح اوامر شراء متعدده كلماتحقق الشرط لكن عند تحقق الشرط يفتح امر واحد فقط في الشمعه الواحده واذا تحقق الشرط علي شمعه اخري يفتح ايضا امر شراء واحد فقط وهكذا
هذا كان الشق الاول
وطبعا الشق الثاني مرتبط بالمشكله الاولي بمعني انه بعد ان يفتح الاكسبيرت مثلا 10صفقات شراء وكلها لها نفس الماجيك نمبر وعلي نفس الزوج كيف اختار من الصفقات العشره صفقه واحده فقط لكي اعدل عليها دون المساس بالباقي اي انه كيف اختار مثلا الصفقه السابعه او الرابعه لاعدلها او اغلقها وليس الباقين ؟؟؟؟؟؟
هذه هي المشكله التي تواجهني الان وحاولت ان ابتكر لها دوال خارجيه لتعد الاوامر او تمنع التكرار ولكن لم اصل الي حل
فأرجو المساعده جازاكم الله خيرا
والسلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمه الله
تحية طيبة للجميع
كود PHP:
datetime T; متغير
شرط من شروط الدخول && T!=Time[0]
بعد الامر سند تضيف T=Time[0];
وبهذا لن يفتح صفقة في نفس الشمعة
مع تمنياتي للجميع بالتوفيق
لاتنساني من دعائك
رد:...@@ مساعده في كتابة كود برمجي @@...
الأخ كاش جاوبك على سؤال منع تكرار الصفقة في نفس الشمعة اما بالنسبة للشق الثاني فهو ان تضيف متغير مع المتغيرات :
كود PHP:
extern int Ticketa=0;
بعدها حتعمل حلقة لأختيار الصفقة من خلال رقم التكت :
كود PHP:
int Ticket(int type)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
return(OrderTicket());
}
return(-1);
}
بعدها حتستدعي الصفقة :
كود PHP:
if ( Ticket(OP_BUY)==Ticketa) // نفذ التعديل المطلوب
رد:...@@ مساعده في كتابة كود برمجي @@...
اقتباس:
المشاركة الأصلية كتبت بواسطة batttot
السلام عليكم ورحمة الله وبركاته
انا الان تواجهني مشكله برمجيه وحاولت ان احلها لكن لم اوفق الي حل
المشكله لها شقين الشق الاول
هذا الشرط
كود:
if (can>=stepdeviation && Close[0] ==(buypoint-9*Point))
{
OrderSend(Symbol(),OP_BUY,lotsize,Ask,3,0,0,"",magicn,0,Green);
{
هو عبارة عن شرط الدخول في صفقة الشراء علي حسب المتغيرات الموضحه في الجمله المشكله ان هذا الشرط قد يتحقق كل شمعه او شمعه وشمعه علي حسب المعادلات المحدده لقيمة المتغيراتفي الشرط والان انا اريده ان يفتح امر شراء واحد فقط عند تحقق الشرط لكن لا يمنع فتح امر شراء اخر علي شمعه اخري اذا توافقت الشروط ايضا بمعني انه هنا يقبل بفتح اوامر شراء متعدده كلماتحقق الشرط لكن عند تحقق الشرط يفتح امر واحد فقط في الشمعه الواحده واذا تحقق الشرط علي شمعه اخري يفتح ايضا امر شراء واحد فقط وهكذا
هذا كان الشق الاول
وطبعا الشق الثاني مرتبط بالمشكله الاولي بمعني انه بعد ان يفتح الاكسبيرت مثلا 10صفقات شراء وكلها لها نفس الماجيك نمبر وعلي نفس الزوج كيف اختار من الصفقات العشره صفقه واحده فقط لكي اعدل عليها دون المساس بالباقي اي انه كيف اختار مثلا الصفقه السابعه او الرابعه لاعدلها او اغلقها وليس الباقين ؟؟؟؟؟؟
هذه هي المشكله التي تواجهني الان وحاولت ان ابتكر لها دوال خارجيه لتعد الاوامر او تمنع التكرار ولكن لم اصل الي حل
فأرجو المساعده جازاكم الله خيرا
والسلام عليكم ورحمة الله وبركاته
وعليكم السلام ورحمة الله وبركاته
الجزء الثاني من السؤال
يمكنك عمل دالة تعد عدد الأوامر المفتوحه وتختار أي أمر منهم
مثال
سوف أقوم بعمل دالة تغلق رقم الأمر الذي أريده
كود PHP:
void CloseSelectedOrder(int Num)
{
int OrderNumber;
for (int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
OrderNumber++;
if(OrderNumber!=Num)continue;
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,digits),3*Q);
}
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,digits),3*Q);
}
}
}
}
والمتغير Num ستضع رقم الصفقه التي تريد إغلاقها أو مثلا إذا قمت بتغيير الداله حسب الأمر الذي تريده
بالنسبه للسؤال الأول فكما أخبرك الأخ ecash
1 مرفق
رد:...@@ مساعده في كتابة كود برمجي @@...
زميلي العزيز تفضل تم اصلاح التكرار ، يظل عندك مشكلة في معادلات استخراج الأستوب والهدف .
1 مرفق
رد:...@@ مساعده في كتابة كود برمجي @@...
ولايهمك تفضل هذا الكود قمت بترتيب وتنظيم شكل الأكسبيرت وأوقفت اكواد المعادلات القديمة ووضعت شروط بسيطة للتأكيد وستلاحظ انه لايفتح الا امر واحد مع اتجاه الشمعة السابقة هذا اولا . بالأضافة الى ترتيب الجمل والأقواس .
ثانيا اضفت لك برنت لكل معادلة قديمة ستشغلها بعد ان تتأكد من صحة الأكسبيرت وتعمل من نسخة تانية تجرب عليها وتبتدي كود بعد كود ، تشوف برنت الكود مثلا صفقة شراء هل التارجت اعلى السعر والأستوب اسفل السعر ام لا وبغير هذه الحالة لن يعمل . او تضعها صفر . وهكذا حتى تصل الى الحل بالصبر .
رد:...@@ مساعده في كتابة كود برمجي @@...
اقتباس:
المشاركة الأصلية كتبت بواسطة batttot
اخي الفاضل يبدو انه هناك سوء تفاهم ................. اخي الكريم لماذا تصمم علي وضع استوب لوز و تيك بروفيت انا قلت لنترك هذا الاختيار تماما الان ونجعل الهدف والاستوب =0
اخي الفاضل
لماذا قمت بالغاء شرط نقطة الدخول .؟؟؟؟؟؟؟؟؟ ات بذلك حولت الاكسبريت الي مجرد اكسبيرت لفتح صفقة شراء مع الشمعه الصاعده وصفقة بيع مع الشمعه الهابطه وكما تلاحظ ان هذا الاكسبيرت قمت بتصميمه انا من قبل علي ان يكون مشروع التخرج ......
لماذا قمت بالغاء شرط الشراء واضفت هدف واستوب اخي الكريم
انا اريد اني ييبيع ويشتري من نقطة الشراء التي الغيتها او من نقطة البيع التي الغيتها ايضا ..............ارجو التوضيح لهذا النقطه لان السطور التي قمت بالغائها هي الاساس في عمل الاكسبيرت وبدلا منها وضعت اوامر للهدف والاستوب
اخي الكريم انا لا اريدوضع هدف واستوب للصفقات اريد تركها كما هي وارداني يفعل البيع والشراء من نفقطة البيع ونقطة الشراء....... والنقطتين محسوبتين بدقه وتأكدت من الحسابات اكثر من مره
فلماذا قمت بالغائهم .....................
الفكرة دائما عندما تجد خطأ في إكسبرت حاول تبسيط الكود على أقصى تقدير ثم تبحث عن الخطأ في كل جزء حتى تصل إلى الحل هذا ما قام بعمله الأخ جميل فإذا أردت أن تعيد الشروط الأساسيه مره أخرى فبالتالي النتيجه ستكون صحيحه
بالنسبه لطريقته تعريف متغير T وأضاف الشرط T!=Time[0] فهي صحيحه
يوجد طريقة أخرى يمكنك عمل دالة للبحث عن الصفقات والتأكد هل فتحت صفقه في هذه الشمعه أم لا
مثال
كود PHP:
bool IsOrderOpened()
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderOpenTime()>=Time[0])return(true);
else if(OrderOpenTime()<Time[0])return(false);
}
}
return(false);
}
if(I
ثم ستضيف من ضمن الشروط للبيع والشراء
كود PHP:
if(IsOrderOpened()==false)
وإذا أردت إضافة الصفقات التي أغلقت من ضمن الشروط أيضا سوف تقوم بعمل داله أخرى لكن ستبحث في الصفقات المغلقه وليس الصفقات المفتوحه لأن الداله السابقه ستبحث في الصفقات المفتوحه
بالنسبه للجزء الثاني
حتى تختار صفقة معينه حسب رقمها أيضا نفس فكرة الداله التي قمت بوضعها سابقا سوف تبحث في الصفقات المفتوحه من 0 إلى عدد الصفقات
أنت تريد الصفقه رقم 7 مثلا ستقوم بعمل متغير مثلا
كود PHP:
int OrderNumber;
ثم في كل مره يبحث عن الصفقه وتكون بنفس الماجيك نمبر ونفس الشروط يزيد قيمة المتغير حتى يصل إلى رقم الصفقه الذي تريده
كود PHP:
int OrderNumber;
for (int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
OrderNumber++;
if(OrderNumber==7)
{
Print("ticket : ",OrderTicket());
}
}
}