رد: موضوع مخصص للأسئلة البرمجية
كود:
extern double TakeProfit = 220;
extern double StopLoss = 85;
extern double Lots = 0.1;
extern double TrailingStop = 85;
extern double MACDByeLevel = 0.1;
extern double MACDSellLevel = -0.1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
double MacdCurrent, MacdPrevious;
int cnt, ticket, total;
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external
// variables (Lots, StopLoss, TakeProfit,
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
// to simplify the coding and speed up access
// data are put into internal variables
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
total=OrdersTotal();
if(total<1)
{
// no opened orders identified
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if(MacdCurrent>MACDByeLevel && MacdPrevious<MACDByeLevel)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
// check for short position (SELL) possibility
if(MacdCurrent<MACDSellLevel && MacdPrevious>MACDSellLevel)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
// it is important to enter the market correctly,
// but it is more important to exit it correctly...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
if(Bid < OrderOpenPrice()-Point*StopLoss)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
return(0); // exit
}
// check for trailing stop
// check for trailing stop
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
if(Ask > OrderOpenPrice()+ Point*StopLoss)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}
// check for trailing stop
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
// the end
رد: موضوع مخصص للأسئلة البرمجية
السلام عليكم ورحمة الله وبركاته
أخواني المبرمجين الأفاضل
يوجد لدي اكسبيرت واردت اضافة بعض التعديلات عليه فأرجو أن تساعدوني على ذلك
أولى التعديلات هو أنني أريد من الإكسبيرت أن يقوم بإقفال العملية في حالة الحصول على أربع نقاط ربح وأن لا يقوم بفتح عملية إلا في حالة الإتجاه المعاكس
بمعنى آخر (مثال على ذلك)
أعطى الإكسبيرت أن الآن عملية شراء فإنه يقوم بعملية الشراء في حالة ربح 4 نقاط فإنه يقوم بإقفال العملية وينتظر حتى يعطي عملية بيع فإنه يقوم بفتح عملية بيع في حالة ربح 4نقاط فإنه يقوم بإقفال العملية وهكذا......
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة Al-Mosuli
السلام عليكم
انا مبتدأ في البرمجة وقد حاولت تعديل اكسبيرت MACD sample
للحصول على اكسبيرت يبيع ويشتري حسب اشارات الماكد فقط النتيجة المبدئية جيدة لمبتديء مثلي
لي سؤال كيف يمكن مضاعفة اللوت في الدخول فقط اذا ضرب الاستوب ويستمر يضاعف كلما ضرب الاستوب حتى يصل البروفت ثم يبدأ بلوت واحد من جديد
وهذا الكود اللي عدلته مع الاعدادات للمجنون في المشاركة اللاحقة
والفضل لله
ثم للقائمين على هذا المنتدى
انشالله نتعلم البرمجة على ايديكم
شكرا مقدما
وعليكم السلام أخي الكريم
يوجد في المنتدى اكسبيرت سوبابلكس وهو يقوم على مبدأ مضاعفة العقود الخاسرة .
يمكنك الإطلاع على كوده بالتفصيل وكذلك تعديله ليتوافق مع الدخول والخروج على أساس الماكد .
أهلا بك دائما
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة مساهم مداهم
السلام عليكم ورحمة الله وبركاته
أخواني المبرمجين الأفاضل
يوجد لدي اكسبيرت واردت اضافة بعض التعديلات عليه فأرجو أن تساعدوني على ذلك
أولى التعديلات هو أنني أريد من الإكسبيرت أن يقوم بإقفال العملية في حالة الحصول على أربع نقاط ربح وأن لا يقوم بفتح عملية إلا في حالة الإتجاه المعاكس
بمعنى آخر (مثال على ذلك)
أعطى الإكسبيرت أن الآن عملية شراء فإنه يقوم بعملية الشراء في حالة ربح 4 نقاط فإنه يقوم بإقفال العملية وينتظر حتى يعطي عملية بيع فإنه يقوم بفتح عملية بيع في حالة ربح 4نقاط فإنه يقوم بإقفال العملية وهكذا......
وعليكم السلام ورحمة الله وبركاته
أخي العزيز
هذا الموضوع مخصص للأسئلة البرمجية المحددة .
في حال أردت المساعدة في اكسبيرت كامل فيرجى وضعه في موضوع خاص مع إرفاق الكود المتاح ليتسنى لنا تعديله وتطويره .
مع شرح كامل لشروط الدخول والخروج . وعلى أي استراتيجية يعتمد .
رد: موضوع مخصص للأسئلة البرمجية
السلام عليكم
هذا القسم فعلا رائع
تعليمي 100% و هذا افضل
ما نقدر نعمله بالاضافة الى
المضاربة و اجزم بأنه افضل
بكثير منها
جزاكم الله خير .
سؤالي :
هناك نصوص نراها على يسار
الشارت عندما نضع مؤشر او
اكسبيرت .
و بعضها يكون بخطوط كبيرة
و بألوان ايضا .
ما هي الصيغة لذلك ؟
شكرا
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة سامية
السلام عليكم
هذا القسم فعلا رائع
تعليمي 100% و هذا افضل
ما نقدر نعمله بالاضافة الى
المضاربة و اجزم بأنه افضل
بكثير منها
جزاكم الله خير .
سؤالي :
هناك نصوص نراها على يسار
الشارت عندما نضع مؤشر او
اكسبيرت .
و بعضها يكون بخطوط كبيرة
و بألوان ايضا .
ما هي الصيغة لذلك ؟
شكرا
وعليكم السلام
هذه النصوص هي عبارة عن كائنات رسومية من النوع Label
في الدورة المثبتة هناك درس كامل عن هذه الكائنات فيها شرح تفصيلي لعمل هذه النصوص وبالألوان والأحجام التي تريدينها .
رد: موضوع مخصص للأسئلة البرمجية
السلام عليكم ايها الاخوة المبرمجين
انا احاول استخدام دالة print كما هي في الشروح الموجودة ولكن لا يتخرج اي كتابة على الرسم فهل هناك تفاصيل لا بد من كتابتها
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة basit
السلام عليكم ايها الاخوة المبرمجين
انا احاول استخدام دالة print كما هي في الشروح الموجودة ولكن لا يتخرج اي كتابة على الرسم فهل هناك تفاصيل لا بد من كتابتها
أخي دالة
print
لا تعطي كتابة على الرسم بل تعطي كتابة في دفتر اليومية
اذا كنت تريد الكتابة على الرسم يجب أن تستخدم دالة
Comment()
رد: موضوع مخصص للأسئلة البرمجية
جعلك الله محمودا في الدارين وعامرا بالبركة
كيف يمكن الوصول الى دفتر اليومية
1 مرفق
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة basit
جعلك الله محمودا في الدارين وعامرا بالبركة
كيف يمكن الوصول الى دفتر اليومية
يا سيدي لا حرمك الله متعة النظر الى وجهه الكريم و شرف رفقة الحبيب المصطفى , انظر الى الصورة المرفقة رعاك الله
:eh_s(7):
رد: موضوع مخصص للأسئلة البرمجية
اخواني الكرام
اريد ان اعرف اعلى عدد متواصل لضرب الاستوبات
هذا الطلب مهم في الاكسبيرتات التي تعتمد على المضاعفات ، لذلك من المهم معرفة أعلى عدد لضرب الوقف المتتالي ، والغرض منه تحديد رأس المال المطلوب لتجنب المارجن كول
ومهم جداً ان يعمل ايضاً عند اختبار الاكسبيرت (باك تيست)
(طبعاً يجب ان يكون هناك متغيرين صحيحين قيمتهما الابتدائية صفر ، الاول لتخزين عدد الاستوبات المتتالية وعند تحقيق الهدف ترجع قيمته "صفر"، والآخر لتخزين اكثر عدد متوالي لضرب الوقف (للمقارنة بعد كل ضرب استوب وتخزين القيمة الاعلى لضرب الاستوب في هذا المتغير)
ولكن السؤال هو: كيف نعرف انه ضرب الوقف او حقق الهدف (ما هي الدالة المناسبة لها)؟
رد: موضوع مخصص للأسئلة البرمجية
ماهي افضل الحلول لجعل الاكسبيرت لا يأخذ اكثر من عمليه واحده في نفس الشمعه اذا تحققت الشروط للدخول ؟؟
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ماجد كو
ماهي افضل الحلول لجعل الاكسبيرت لا يأخذ اكثر من عمليه واحده في نفس الشمعه اذا تحققت الشروط للدخول ؟؟
أفضل الحلول برأيي هو متغير الوقت
كما شرحته لك سابقا
ان لم تفهمه جيدا أعيد شرحه لك
رد: موضوع مخصص للأسئلة البرمجية
نعم نعم اخي محمود
كنا تحدثنا سابقا عنه ولكن حبيت ان نشوف مقترحات الشباب وفعلا دالة الوقت شكلها هي الاقوى بحيث يعطيك وقت العمليه وان لا ياخذ عمليه اخرى بنفس الشمعه:asvc:
طيب سؤال اخر نعلم ان كود
هو لافتتاح الشمعه السابقه طيب كيف نعرف الوقت الحالي للاكسبيرت اي السعر الحالي يعني عشان نقول للاكسبيرت اشتري اذا كان السعر الحالي اكبر من الافتتاح للشمعه الحاليه او السابقه مثلا ؟؟
وتسلم يا الحبيب محمود تعلمت منك الكثير
وتسلمممممممممممون جميعا
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ماجد كو
نعم نعم اخي محمود كنا تحدثنا سابقا عنه ولكن حبيت ان نشوف مقترحات الشباب وفعلا دالة الوقت شكلها هي الاقوى بحيث يعطيك وقت العمليه وان لا ياخذ عمليه اخرى بنفس الشمعه:asvc: طيب سؤال اخر نعلم ان كود هو لافتتاح الشمعه السابقه طيب كيف نعرف الوقت الحالي للاكسبيرت اي السعر الحالي يعني عشان نقول للاكسبيرت اشتري اذا كان السعر الحالي اكبر من الافتتاح للشمعه الحاليه او السابقه مثلا ؟؟ وتسلم يا الحبيب محمود تعلمت منك الكثير وتسلمممممممممممون جميعا
تستطيع اخبار البرنامج بان يشتري عندما يكون السعر أكبر من افتتاح الشمعة السابقة مثلا بهذا الكود
كود PHP:
if(Ask>Open[1]) { OrderSend >>>>>
و للبيع
كود PHP:
if(Bid>Open[1]) { OrderSend >>>