رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة spiders101
أنا فاهم الفكرة ياغالى ، لكن المشكلة فـ التقريب عن طريق الـ NormalizeDouble
أمر الأوردر سيند بعد التعديل
كود PHP:
OrderSend(Symbol(),OP_BUYLIMIT,NormalizeDouble(lastlot2()*1.618,1),OpenPrice(OP_BUY)-Space*point*i,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);
ودالة
تعود بحجم لوت آخر صفقة مفتوحة
ولكن النتيجة بعد الباك تست مع لوت 1 لأول عقد
https://forum.arabictrader.com/attac...8&d=1343838799
والمفترض المضاعفات كالتالى 1 - 1 - 2 - 3 - 5 - 8 - 13 - 21 - 34
ما أنا بقولك لو اللوت أكبر من 1 تستخدم MathRound
ولو أقل من 1 ( أرقام عشرية ) تستخدم NormalizeDouble
كده مثلا :
كود PHP:
if(lastlot2()<1){pendlot=NormalizeDouble (lastlot2()*1.618,1);}
if(lastlot2()>=1){pendlot=MathRound (lastlot2()*1.618);}
وبالنسبة لإنك عايز الأوامر المعلقة 1 - 1 -2 -3 يعني يكون أول أمرين معلقين بنفس قيمة اللوت
هتعمل الشرط :
لو إن الأوامر المعلقة أقل من 1
كود PHP:
pendlot=lastlot2();
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم
استاذ اسامة عندي مشكلة في تحديد شروط الدخول لاكسبريت يعتمد علي مؤشر واحد فقط
المؤشر فيه سهمان سهم صاعد وسهم نازل
انا استخدمت الدالة iCustom لمندات السهم الصاعد والسهم النازل بالعبارة
كود PHP:
double up=iCustom(0,0,"arrow",1,1);
double down=iCustom(0,0,"arrow",2,1);
وشرط الشراء مثلا لما يكون لديا سهم صاعد فوضعت الكود
كود PHP:
if(up)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
للاسف لم ينقذ الاكسبريت اي شئ
+ كيف اضيف شرط لما يكون السهم مختفي لا نازل ولا صاعد
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
لأ أخي الكريم يجب أن تتغير قيم الأرقام إذا قمت بعمل التعديل بهذا الشكل إلا إذا كان الإكسبرت به مشكلى أخرى لو أرفقت الإكسبرت الذي تريد التعديل عليه فربما نعلم أين المشكله
تفضل استاذي الملف مرفق وبداخله ايضاً شرح للتوضيح ، شكرا لك .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة xcv114
ما أنا بقولك لو اللوت أكبر من 1 تستخدم MathRound
ولو أقل من 1 ( أرقام عشرية ) تستخدم NormalizeDouble
كده مثلا :
كود PHP:
if(lastlot2()<1){pendlot=NormalizeDouble (lastlot2()*1.618,1);}
if(lastlot2()>=1){pendlot=MathRound (lastlot2()*1.618);}
وبالنسبة لإنك عايز الأوامر المعلقة 1 - 1 -2 -3 يعني يكون أول أمرين معلقين بنفس قيمة اللوت
هتعمل الشرط :
لو إن الأوامر المعلقة أقل من 1
كود PHP:
pendlot=lastlot2();
تمام ياغالي ، تم التعديل والمشكل لدي كان فـ دالة MathRound
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة Jmeel
تفضل استاذي الملف مرفق وبداخله ايضاً شرح للتوضيح ، شكرا لك .
جرب الاكسيبرت المرفق استاذ جميل
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة Jmeel
أخي سبايدر هل عملت معادلة تغيير ؟؟؟ لأني ماشفتها ، اما الأضافة اليدوية للماجيك مش هي ذي المشكلة ، لو ترجع للسؤال بتفهم القصد ، شكرا لك .
انا فهمت انك تريد وضع ماجيك نمبر واحد فقط لكل الصفقات وهو MagicNo=7777
وانا قمت بعمل ذلك ، ولاتحتاج معادلة تغيير ، انا فقط قمت بالبحث عن أماكن الماجيك نمبر فـ الاكسيبرت وقمت بتغيرها للماجيك نمبر الذى طلبته MagicNo
كود PHP:
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId15)
كود PHP:
if (OrderType() != OP_SELL || OrderSymbol() != Symbol() || OrderMagicNumber() != OrderId16)
كود PHP:
ticket = OrderSend(Symbol(), OP_BUY, BuyLots20, Ask, 4, 0, 0, "My Expert", BuyOrderId20, 0, Blue);
else
ticket = OrderSend(Symbol(), OP_BUY, BuyLots20, Ask, 4, SL, TP, "My Expert", BuyOrderId20, 0, Blue);
كود PHP:
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId13)
كود PHP:
if (OrderType() != OP_BUY || OrderSymbol() != Symbol() || OrderMagicNumber() != OrderId14)
كود PHP:
ticket = OrderSend(Symbol(), OP_SELL, SellLots21, Bid, 4, 0, 0, "My Expert", SellOrderId21, 0, Red);
else
ticket = OrderSend(Symbol(), OP_SELL, SellLots21, Bid, 4, SL, TP, "My Expert", SellOrderId21, 0, Red);
كود PHP:
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId17)
لاحظ الأكواد السابقة ، انا قمت فقط بتغيير OrderId15 ، OrderId16 ، BuyOrderId20 ، OrderId13 ، OrderId14 ، SellOrderId21 ، OrderId17
إلى كلمة واحدة MagicNo وسيعمل الاكسيبرت كما تريد ولن تحتاج لعمل أى شيء آخر
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة ، فـ الاكسيبرت المرفق وضعت الشروط
كود PHP:
if(OpenPrice2()>0&&orderstotal2(OP_BUYSTOP)<1&&Shifting_Pending_Orders==true){
int ticket2=OrderSend(Symbol(),OP_BUYSTOP,lot*2,OpenPrice2()+20*point,5*Q,0,0," EA",MagicNumber,0,Blue);}
if(OpenPrice(OP_BUYSTOP)-Bid>2*point){
OrderModify(ticket2,Bid+2*point,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits),0);}
بحيث عند إغلاق صفقة على خسارة يتم وضع أمر معلق باى استوب ويتم تحريك الأمر المعلق مع كل تحرك للسعر لأسفل حتى يتم تفعيله
ولكن لم يتم وضع الأمر المعلق وظهرت أخطـاء
invalid lots amount for OrderSend function
OrderSend error 4051