النتائج 3,976 إلى 3,990 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 08-06-2013, 01:48 AM #3976
- 08-06-2013, 08:27 PM #3977
رد:موضوع مخصص للأسئلة البرمجية
عندي سؤال
اذا اردت ان افتح اوردير عند سعر محدد على الشارت بالدالة ordersend
ووضعت فيها السعر المحدد فان الاوردير لا يفتح عن السعر المحدد
مثال
كود PHP:double price=1.2870;
OrderSend(Symbol(),0,1,price,3,0,0,"My order",111,0,Green);
doublenormalize ولكن المشكلة هي هي لم تتغير
انا حللت المشكلة بطريقة اخري وعملت دالة مقارنة بين ask والسعر الذي اريده وعندما تصبح النتيجة = 0 فانه يفتح عند السعر المحدد لكن بها مشكلة لاحظتها بعد وقت وهي دالة المقارن عندما تساوى صفر بين سعر ال ask والسعر الذي اريد الدخول قد تفشل بسبب ان السعر في اوقات الحركة السريعة يحصل بها تجاوز فلا تمر بنقطة المقارنة الصفرية وهنا تنتظر حتى تستقر حركة السعر وتضيع فرص فالحل نعمل اكبر او يساوي لكن سؤالي المحدد والذي لفت انتباهي لماذا لم يفتح عند السعر المحدد دون التحايل على الدالة ؟
- 08-06-2013, 10:43 PM #3978
- 09-06-2013, 07:12 AM #3979
- 09-06-2013, 03:11 PM #3980
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم ورحمة الله وبركاته
قمت بعمل ما هو مطلوب ولكن الاكسبيرت يفتح فقط الصفقة بالنسبة لخط N فقط اللي هو مركز الخطوط
أما باقي الخطوط H و L لا يعمل عليها الاكسبيرت !!!!
قمت بما يلي :
كود:void TechnicalAnalysis() { for(int i=1;i<=20;i++) { double lineH=ObjectGet("Hi"+i,OBJPROP_PRICE1); double lineL=ObjectGet("Li"+i,OBJPROP_PRICE1); double lineN=ObjectGet("N",OBJPROP_PRICE1); if ((Open[1] < lineN && Close[1] > lineN)||(Open[1] < lineH && Close[1] > lineH)||(Open[1] < lineL && Close[1] > lineL)) { BuyOrder(); } } }
كود:void TechnicalAnalysis() { for(int i=1;i<=20;i++) { double lineH=ObjectGet("H"+i,OBJPROP_PRICE1); double lineL=ObjectGet("L"+i,OBJPROP_PRICE1); double lineN=ObjectGet("N",OBJPROP_PRICE1); if ((Open[1] < lineN && Close[1] > lineN)||(Open[1] < lineH && Close[1] > lineH)||(Open[1] < lineL && Close[1] > lineL)) { BuyOrder(); } } }
بالمرفقات
بارك الله فيكم
- 10-06-2013, 12:55 AM #3981
رد:موضوع مخصص للأسئلة البرمجية
إذا أردت أن تفتح الصفقة عند سعر محدد وليس على سعر الأسك أو البيد فتستخدم الأوامر المعلقه
OP_BUYLIMIT , OPBUYSTOP , OP_SELLLIMIT , OP_SELLSTOP
ولو أنك وضعت الأمر بعيد عن السعر الحالي فلن يفتح أساسا سواء على بعد 4 نقاط أو لأ لكن السبب في أنه فتح على بعد 4 نقاط هو إستخدامك لعدد نقاط إعادة التسعير بالتالي عند أصبح السعر قريب من السعر الذي حددته فإعتبره الإكسبرت سعر يحقق الأمر ففتحت الصفقه
بالنسبه إذا كنت تريد جعل الأمر مباشر وليس أمر معلق فالحل أمامك هو إستخدام المقارنه كما ذكرت
- 10-06-2013, 12:57 AM #3982
- 10-06-2013, 03:31 AM #3983
رد:موضوع مخصص للأسئلة البرمجية
أخي كيرا الدالة تعمل عندي على المؤشر إللي إنت أرفقته بدون أي مشاكل
ولتتأكد قم بفتح إكسبيرت جديد وقم بوضع الدالة المشروحة فيه فقط
كود PHP:
void TechnicalAnalysis()
{
for(int i=1;i<=20;i++)
{
double lineH=ObjectGet("H"+i,OBJPROP_PRICE1);
double lineL=ObjectGet("L"+i,OBJPROP_PRICE1);
double lineN=ObjectGet("N",OBJPROP_PRICE1);
if(Time1!=Time[0]){
if ((Open[1] < lineN && Close[1] > lineN)||(Open[1] < lineH && Close[1] > lineH)||(Open[1] < lineL && Close[1] > lineL))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,30,0,0,"",123,0,Lime);
Time1=Time[0];
}
}
}
}
كود PHP:int Time1;
كود PHP:int start()
{
TechnicalAnalysis();
return(0);
}
( وتأكد من أسماء الخطوط عندك على الشارت أنها H1 - H2 -H3 وهكذا )
- 10-06-2013, 07:07 AM #3984
رد:موضوع مخصص للأسئلة البرمجية
طيب ممكن معادله اول لوت
- 10-06-2013, 03:12 PM #3985
- 10-06-2013, 09:59 PM #3986
رد:موضوع مخصص للأسئلة البرمجية
نفس المشكلة أستاذي الاكسبيرت يفتح أمر فقط بالخط N اللي هو مركز الخطوط ولكي أتأكد عملت لكل خط شرط خاص به مرتبط بدالة الأمر
والأمر ليس ماركت بل أمر معلق
شوف كدة الكود الخاص بالخطوط H1 ; H2 .... هل صحيحة ؟ مع العلم بوجود المضاعفات
دالة الشرط
كود:void TechnicalAnalysisSell2() { for(int i=1;i<=20;i++){ double LineL=ObjectGet("Li"+i,OBJPROP_PRICE1); if ((Open[1]>=LineL)&&(Low[0]<LineL)) { SellOrderL(); } } }
كود:void SellOrderL() { double profit = 0; int cnt = OrdersHistoryTotal(); for (int i=cnt-1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; if ((OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNo) { profit = OrderProfit(); CurrentLots = OrderLots(); // take lots from the last order break; } } if (profit > 0) // had profit { CurrentLots = CurrentLots * LotsMpOnProfit + 0; if (LotsResetOnProfit) CurrentLots = Lots; } else if (profit < 0) // had loss { CurrentLots = CurrentLots * LotsMpOnLoss + 0; if (LotsResetOnLoss) CurrentLots = Lots; } if (CurrentLots > MaxLots) { CurrentLots = Lots; } double lotvalue = CurrentLots; if (lotvalue < MarketInfo(Symbol(), MODE_MINLOT)) // make sure lot is not smaller than allowed value { lotvalue = MarketInfo(Symbol(), MODE_MINLOT); } if (lotvalue > MarketInfo(Symbol(), MODE_MAXLOT)) // make sure lot is not greater than allowed value { lotvalue = MarketInfo(Symbol(), MODE_MAXLOT); } for( i=1;i<=20;i++) { double LineL=ObjectGet("Li"+i,OBJPROP_PRICE1); double price = (NormalizeDouble(LineL, NDigits) - (SellStep*PipValue*Point)); double SL = price + Stoploss*PipValue*Point; if (Stoploss == 0) SL = 0; double TP = price - Takeprofit*PipValue*Point; if (Takeprofit == 0) TP = 0; int Tries; int ticket = -1; if (ECNBroker) { ticket = OrderSend(Symbol(), OP_SELLSTOP, lotvalue, price, Slippage, 0, 0, "Kira-h", MagicNo, 0, Red); if(ticket>-1 && Tries<10) { OrderSelect(ticket, SELECT_BY_TICKET); OrderModify(ticket, OrderOpenPrice(), SL, TP, 0, Blue); Tries++;Sleep(1000); } } else ticket = OrderSend(Symbol(), OP_SELLSTOP, lotvalue, Bid, Slippage, SL, TP, "Kira-h", MagicNo, 0, Red); } }
آخر تعديل بواسطة kira-h ، 10-06-2013 الساعة 10:16 PM
- 10-06-2013, 10:39 PM #3987
رد:موضوع مخصص للأسئلة البرمجية
أخي كيرا
أنا مش فاهم إنت تقصد تعمل إية ؟
إنت عايز تعمل أوامر معلقة على كل خط فوق شراء وعلى كل خط تحت بيع ؟
طيب لو عايز تعمل أوامر معلقة يبقى إزاي عامل شرط إن الشمعة تغلق فوق الخط ؟
-----------
ياريت تشرح بمثال
-------------------
كمان إنت كاتب إسم الكائن بين علامات التنصيص "Li" و "Hi" هل ده إسم الكائن على الشارت عندك ولا "H" و "L"
---------------------
وفي النهاية أنا مش شايف سبب لإستدعاء مؤشر لتحديد مناطق الدخول
المؤشر مفيش فيه حاجة مميزة ... بتحدد نقطة في النص وتكتبها في خصائص المؤشر والمؤشر بيضع خطوط على بعد معين من النقاط إنت بارضوة إللي بتحدده
يعني مش مؤشر دعوم ولا مقاومات ومفيش فيه حاجة ما تقدرش تعملها مباشرة من الإكسبيرت
وعندك إكسبيرت الأوامر المعلقة من برمجة أستاذ أسامة بيقوم بالوظايف دي كلها مباشرة بدون مؤشرات
آخر تعديل بواسطة xcv114 ، 10-06-2013 الساعة 10:53 PM
- 10-06-2013, 11:49 PM #3988
رد:موضوع مخصص للأسئلة البرمجية
شكرا جزيلا على تفاعلك أستاذي العزيز ربنا يخليك
الطريقة بسيطة جدا
أسماء الخطوط H1 ; H2 ; H 3 .... إلى H20
وأيضا L1 ; L2 . L3 ....إلى L20
ثم خط الوسط باسم N
حينما يلمس السعر أي خط من الخطوط دي يضع أمرين معلقين باي ستوب فوق الخط وسيل ستوب تحت الخط
بالنسبة للاكسبيرت الان يضع فقط أمرين بالخط الوسط N وعندما يصعد السعر ويلمس مثلا H1 لا يضع أمرين بنفس الطريقة ...
مع أن عدد العقود غير محدود
دي المشكلة !!!
- 11-06-2013, 01:01 PM #3989
استاد ماستر دولار كيف يمكنني تحديد اخر صفقة مفتوحة و تغيير الستوب الوز لها
بارك الله فيك
- 11-06-2013, 03:14 PM #3990
رد:موضوع مخصص للأسئلة البرمجية
بعد اذن مستر دولار والاعضاء والتصحيح ان كان عندي خطا في الرد
تحديد اخر صفقة مفتوح يتم من بالمقارنة بالماجيك نمبر ونوع العملة ونوع الصفقة بيع اوش راء والاهم موقعها وفي الغالب من orderselect
فاذا كان لديك فرضا 5 صفقات مفتوحة والاخيرة رقمها التسلسلي 4 لان اول صفقة يكون رقمها 0 هنا يمكن ان تحدد رقم الصفقة الاخيرة وهي orderstotal()-1
وتضعه في دالة orderselect
ومنها تحدد عن طريق ordermodify()
تغيير الوقف
هذا والله اعلم
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM