كود لتغيير حجم العقد على التوالي
بعد محاولة يائسة لكتابة كود لم أجد احد يساعدني في هذا غير أخواني المبرمجين في هذا المنتدى على رأسهم أخونا الفاضل مستردولار.
أخي مستردولار أخواني المبرمجين محتاج كود يقوم بتغيير حجم اللوت على التوالي لجميع الصفقات بحيث يكون في الصفقة الأولى عقد واحد والثانية عقدين والثالثة عقد واحد للصفقة الرابعة عقد واحد يكون العقد الواحد والعقدين متغيرات خارجية يمكن تغييرها في المدخلات الخارجية.
1 2 1 2 1 2 1 2 1 2 وهكذا بغض النظر عن نوع الصفقة وما إذا كانت مفتوحة او تم إغلاقها
وكذلك إختيار الهدف والستوب لوز على حسب حجم العقد مثلا ان يكون الهدف في حالة العقدين 10 نقاط او يكون 20 نقطة في حالة العقد الواحد.
أسأل الله لي ولكم التوفيق والسداد
رد: كود لتغيير حجم العقد على التوالي
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
بعد محاولة يائسة لكتابة كود لم أجد احد يساعدني في هذا غير أخواني المبرمجين في هذا المنتدى على رأسهم أخونا الفاضل مستردولار.
أخي مستردولار أخواني المبرمجين محتاج كود يقوم بتغيير حجم اللوت على التوالي لجميع الصفقات بحيث يكون في الصفقة الأولى عقد واحد والثانية عقدين والثالثة عقد واحد للصفقة الرابعة عقد واحد يكون العقد الواحد والعقدين متغيرات خارجية يمكن تغييرها في المدخلات الخارجية.
1 2 1 2 1 2 1 2 1 2 وهكذا بغض النظر عن نوع الصفقة وما إذا كانت مفتوحة او تم إغلاقها
وكذلك إختيار الهدف والستوب لوز على حسب حجم العقد مثلا ان يكون الهدف في حالة العقدين 10 نقاط او يكون 20 نقطة في حالة العقد الواحد.
أسأل الله لي ولكم التوفيق والسداد
يمكنك أن تبرمج دالة تعود بحجم لوت آخر صفقه تم فتحها وبالتالي إذا كان حجم اللوت 1 إذن الصفقه التاليه ستكون 2 لوت والعكس صحيح
مثال:
كود PHP:
double LastLot(){
for(int i=OrdersHistoryTotal();i>0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
return(OrderLots());
}
}
return(0);
}
ثم ستضع قبل أمر الشراء او البيع
كود PHP:
if(LastLot()==2)Lots=1;
if(LastLot()==1)Lots=2;
بطريقة أخرى وأسهل وستؤدي نفس الغرض
أسفل أمر الشراء أو البيع ستحتفظ بحجم آخر لوت في ذاكرة الميتاتريدر
كود PHP:
GlobalVariableSet("LastLot",Lots);
ثم قبل أمر الشراء أو البيع
كود PHP:
if(GlobalVariableGet("LastLot")==1)Lots=2;
if(GlobalVariableGet("LastLot")==2)Lots=1;
طبعا المتغير Lots هو حجم اللوت والذي يوضع كمتغير في الأمر OrderSend
رد: كود لتغيير حجم العقد على التوالي
يعجز اللسان عن شكرك أخي مستردولار ..أرفع قبعتي إحتراماً إجلالاً لك .
أسأل الله ان يزرقك من حيث لا تحتسب وأ يصلح لك الذرية ويجمعك بمن تحب في جنات النعيم
موفق أخي
1 مرفق
رد: كود لتغيير حجم العقد على التوالي
أخي مستر دولار بارك الله فيك
حاولت أكتب كود على غرار ما كتبته لنا لتغيير نوع الصفقة بيع ام شراء لجعل الإكسبيرت يفتح صفقة شراء ثم بيع ثم شراء ثم بيع وهكذا
كتابة الكود تبدو سليمة مبدئيا ولا توجد اخطاء والغريب انه لا يفتح ولا امرا واحد
كود:
int typeorder = OP_BUY;
OrderSend(Symbol(),OP_BUY,Lots,Ask,Ask-StopLoss,0,Green);
GlobalVariableSet("OrderType",typeorder);
if(GlobalVariableGet("OrderType")==OP_BUY)typeorder=OP_SELL;
if(GlobalVariableGet("OrderType")==OP_SELL)typeorder=OP_BUY;
OrderSend(Symbol(),OP_SELL,Lots,Bid,Bid-StopLoss,0,Green);
أرجو منك التصحيح وفقك الله
رد: كود لتغيير حجم العقد على التوالي
1 مرفق
رد: كود لتغيير حجم العقد على التوالي
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
أخي مستر دولار بارك الله فيك
حاولت أكتب كود على غرار ما كتبته لنا لتغيير نوع الصفقة بيع ام شراء لجعل الإكسبيرت يفتح صفقة شراء ثم بيع ثم شراء ثم بيع وهكذا
كتابة الكود تبدو سليمة مبدئيا ولا توجد اخطاء والغريب انه لا يفتح ولا امرا واحد
كود:
int typeorder = OP_BUY;
OrderSend(Symbol(),OP_BUY,Lots,Ask,Ask-StopLoss,0,Green);
GlobalVariableSet("OrderType",typeorder);
if(GlobalVariableGet("OrderType")==OP_BUY)typeorder=OP_SELL;
if(GlobalVariableGet("OrderType")==OP_SELL)typeorder=OP_BUY;
OrderSend(Symbol(),OP_SELL,Lots,Bid,Bid-StopLoss,0,Green);
أرجو منك التصحيح وفقك الله
كتابتك للأكواد غير كاملة يا أخي العزيز مثلا بالنسبة للأمر OrderSend فلم تكتب الكود بشكل صحيح أين الهدف أين الماجيك نمبر والكومنت
تفضل قمت بتعديله لك راجع الأكواد وكيفية كتابتها وإذا وجدت شيء غير واضح ويحتاج شرح إسأل فيه