النتائج 61 إلى 75 من 378
- 05-03-2020, 04:10 PM #61
ادرس الكود التالي جيداً:
كود:public void onStart(IContext context) throws JFException { this.context=context; int j=0; for(Instrument a : Instrument.values()) { j++; if(a.getType()==IFinancialInstrument.Type.FOREX) context.getConsole().getWarn().println(j+" - "+ a+" - "+a.isTradable()+" "+a.getType()); else if(a.getType()==IFinancialInstrument.Type.CFD) context.getConsole().getInfo().println(j+" - "+ a+" - "+a.isTradable()+" "+a.getType()); else if(a.getType()==IFinancialInstrument.Type.METAL) context.getConsole().getNotif().println(j+" - "+ a+" - "+a.isTradable()+" "+a.getType()); } }
وأيضا هي طريقة جيدة لتفعيل نوع محدد:
ناتج البرنامج شيئا كهذا:
تأمل كيف تمت المقارنة بين getType و بين IFinancial.yTpe
دائما المقارنة تتم بين قيمتين من نفس النوع
a.getType من نوع IFinancialInstrument.TYPE
آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 04:14 PM
- 05-03-2020, 04:24 PM #62
في المثال السابق--المقارنة == لتحديد لون التمييز:
عرفنا:
1) isTradable
2) getType()
>>
3) والآن:
3) ()name
4) ordinal()
ordinal هي الترقيم ويإمكاننا استخدامها مكان المتغير j الذي وضعناه لترقيم العملات. العد يبدأ من 0
name اسم العملة دون السلاش \ والنقاط لو وجدت.
اضفناها على الكود السابق:
كود:int j=0; for(Instrument a : Instrument.values()) { j++; if(a.getType()==IFinancialInstrument.Type.FOREX) context.getConsole().getWarn().println(j+" - "+ a+" - "+a.isTradable()+" "+a.getType()+" "+a.name()+" "+a.ordinal()); else if(a.getType()==IFinancialInstrument.Type.CFD) context.getConsole().getInfo().println(j+" - "+ a+" - "+a.isTradable()+" "+a.getType()+" "+a.name()+" "+a.ordinal()); else if(a.getType()==IFinancialInstrument.Type.METAL) context.getConsole().getNotif().println(j+" - "+ a+" - "+a.isTradable()+" "+a.getType()+" "+a.name()+" "+a.ordinal()); }
آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 04:33 PM
- 05-03-2020, 05:43 PM #63
- 05-03-2020, 05:47 PM #64
الكود أسفل وضعت فيه أكثر ماقد تحتاجه مثل:
1) الحد الأدنى لحجم الدخول والحد الأعلى لزوج معين والانكرمنت
2) قيمة النقطة وقيمة السايز ومقاس التك سايز
3) دولة السهم ان وجد و الاسم الطويل للعملة او السهم
4) العملة الأولية او الثانيوة في الزوج وتنفعك اذا اردت فلترة ازواج معينة
وهلم جراً
اعتقد ستستخدم هذا الكود كثيراً:
كود:context.getConsole().getErr().println(a.ordinal()+" --- "+ a+" --- group: "+a.getGroup()); context.getConsole().getWarn().println(a.ordinal()+" --- "+ a+" PrimaryJFCurrency: "+a.getPrimaryJFCurrency() +" --- SecondaryJFCurrency: "+a.getSecondaryJFCurrency()+" Country: "+a.getCountry() +" Description: "+a.getDescription()); context.getConsole().getInfo().println(a.ordinal()+" --- "+ a+" TradeAmountIncrement: "+a.getTradeAmountIncrement()+" MaxTradeAmount: "+a.getMaxTradeAmount() +" MinTradeAmount: "+a.getMinTradeAmount()+" AmountPerContract: "+a.getAmountPerContract() ); context.getConsole().getNotif().println(a.ordinal()+" --- "+ a+" --- PipValue: "+a.getPipValue()+" PipScale: "+a.getPipScale()+" TickScale: "+a.getTickScale()+" --- LeverageUse: "+a.getLeverageUse()); context.getConsole().getOut().println(a);
ناتج:
- 05-03-2020, 06:13 PM #65
دوال ذات علاقة بوضع الأوامر
النوع: IOrder --- كائني ( = تحته أكثر من قيمة بأنواع مختلفة)
يبدأ بحرف I --- اذن هو Interface وليس class
ونعلم ان الانرفيسات لا تخلق الاشياء بينما الكلاسات تفعل
interface can not be used to create objects.
their implementing class/es is/are used to instantiate any object
that object is the access mean to that interface
فنحن أي متغير من نوع interface يمكن تعريفه باسم الانترفيس ولكن لايمكن انشاء\خلق كانئات من خلاله.
ذكرنا أن عملية انشاء كائن مفيد تتم على ثلاث خطوات:
1) تعريفة اولا declaration
2) ثم انشائه باستخدام new والكلاس كونسنتركتور instantiation
3) ثم منحه قيمة initialization
- 05-03-2020, 06:23 PM #66
public interface IOrder
Contains order data and allows order manipulation
وهو مخصص للتعامل مع الأوامر وبياناتها
وبناء عليه نتوقع تحته الدوال ذات العلاقة.
اقرأ عنه هنا--دون تدقيق--قراءة سطحية للمعرفة ليس الا
https://www.dukascopy.com/client/jav...pi/IOrder.html
حالات الأمر مع دوكاسكوبي: IOrder.State
يوجد خمسة حالات:
أولا لحظة وضع الأمر يسمونها CREATE وهي لحظة قبل وصوله للسيرفر
ثم اذا اصبح الامر في المنصة انتظار يسمونه OPEN
ثم اذا تنفذ يسمونه FILLED
ولكن اذا الغي يسمونه CANCELLED---
واذا اغلق الامر يسمونه CLOSED
وكما تلاحظ هناك خمسة ترقيمات --- Five enumarations لحالات الأمر
حالات الأمر ليست interface وليست class بل هي من نوع enum
لاحظ IOrder.State استخدمت كأداة تعريف نوع وبالتالي نفهم ان الـ enums تستخدم للتعريف "declaration"
حيث تم تعريف الكائن c ولأنه من نوع enum حتما نتذكر ordinal() أشهر دوال الـ enumerationsآخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 06:42 PM
- 05-03-2020, 06:34 PM #67
عرفنا حالات الأمر
والآن مع أنواع الأوامر وهي ايضا ثوابت- يعني من نوع enum
مع المتيا تريدر هناك ستة ثوابت للأوامر وهي:
OP_BUY
OP_SELL
_OP_BUYLIMIT
OP_SELLLIMIT
الخ
مع دوكاسكوبي يوجد 12 ثابت للأوامر. ودعنا نحصل عليها برمجيا على نمط الصورة السابقة, ومن ضمنها طبعا الانواع الستة في الميتا تريدر.
========
نصيحة مساء اليوم: اقرأ عن الـ inner enums
فنحن عندما نجد انترفيس ثم نقطة ثم نوع enum وبينهم نقطة مثل IOrder.State ---- حتما State يعتبر داخلي, يعني داخل IOrderآخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 06:39 PM
- 05-03-2020, 06:51 PM #68
ويجب ان نتيقظ أن أنواع الأوامر توجد تحت الانترفيس IEngine --- تحت المكينة المسءولة عن وضع الأوامر
وقلنا انها من نوع enum
وبالتالي كما سبق هي enum داخل interface
وبالتالي نتوقع شيئا كهذا:
IEngine.OrderCommand
دعنا نستخلصها برمجيا على نفس المنوال السابق ومن خلال دالة Onstart ؟ ؟
الملف المرفق 521040
كما ترى 12 نوع ولابد أن تفهم بشكل دقيق ماذا تعني--
الستة التي تشبه اوامر الميتا--اعتقد انك فاهمها وخالص! تبقى الستة الأخرى
---
ماذا سيحدث اذا اضفت 1 على دالة ordinal()
?
سيكون الترقيم من 1 الى 12 بدلا من --- من 0 الى 11
!!
- 05-03-2020, 06:59 PM #69
هل لاحظت الدالة values() داخل for وبالتأكيد رأيت انها تكررت معنا كثيراً!!
لم نشرحها ولن نشرحها لأنها من اساسيات الجافا وهي تعطيك قيم المصفوفة,
يدرسونها في السنة الأولى جافا كأحد المقدمات.
فأنت اذا لا تعرف ماذا تعني--فأنت تتواجد في الموضوع الخطأ
نرجو العودة الى أي موقع للمبتدئين وهي كثيرة عموماً
يوجد أمثلة كثيرة في النت في مواقع تعليمية كثيرة, حولها---طبقها كثيرا وخلال ساعات ستفهمها 100%آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 07:05 PM
- 05-03-2020, 07:01 PM #70
دالة وضع ألأوامر توجد ايضا تحت الانترفيس IEngine --- تحت ماكينة المنصة.
مع الميتاتريدر نستخدم دالة OrderSend ولها عدة بناءات --- many Constructors وحسب حاجتك تختار
كل كنستركتور يختلف عن الاخر بعدد المتغيرات بداخله.آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 07:06 PM
- 05-03-2020, 07:48 PM #71
نعلم أن لغة mql4 تقبل خمسة بناءات للأمر, اذا اخترت أحدها تصبح البقية overloaded (كأنها غير موجودة)
بناء بـ 7 متغيرات (اسم الزوج ونوع الامر واللوتات وسعر الدخول والسلبنق والوقف والهدف)
بناء بـ 8 متغيرات(كل ماسبق زايد الكومنت)
بناء بـ 9 متغيرات(كل ماسبق زايد الماجك نمبر)
بناء بـ 10 متغيرات(كل ماسبق زايد وقت صلاحية الأمر)
بناء بـ 11 متغيرات(كل ماسبق زايد لون سهم الأمر على التشارت)
انظر للصورة--فالتراكيب الخمسة أسفل صحيحة. والدليل أن البرنامج تقبلها اثناء الـ run-time
وقبل ذلك لم يحدث مشاكل اثناء compile-time
- 05-03-2020, 07:52 PM #72
إذن في الميتا تريدر يوجد 5 constructors
مع منصة دوكاسكوبي يوجد 6 كونستركتورات لوضع الأمر
واسم الدالة submitOrder
توجد تحت IEngine Interface
https://www.dukascopy.com/client/jav...ommand-double-
- 05-03-2020, 08:21 PM #73
البناء الأول: 1st constructor بـ 4 متغيرات (الليبل ثم اسم الزوج ثم نوع الامر ثم اللوتات)
البناء الثاني: 2nd constructor بـ 5 متغيرات (كل ماسبق زايد سعر الدخول)
البناء الثالث: 3rd constructor بـ 6 متغيرات (كل ماسبق زايد سعر الانزلاق السعري - سلبج)
لايوجد أبداً بناء بـ 7 متغيرات
البناء الرابع: 4thconstructor بـ 8 متغيرات (كل ماسبق زايد وقف الخسارة والتيك بروفت)
البناء الخامس: 5th constructor بـ 4 متغيرات (كل ماسبق زايد تاريخ نهاية صلاحية الأمر)
البناء السادس: 6th constructor بـ 4 متغيرات (كل ماسبق زايد الكومنت)
كلها في الكود أسفل:
الأمر الأول اسفل جعلناه ماركت, لأنه ليس من ضمن المتغيرات سعر الدخول price---لكي تعلم انه لايصلح الا مع اوامر الماركت؟
كود:IOrder order1 = engine.submitOrder("order_1", symbol, OrderCommand.BUY , 0.01); IOrder order2 = engine.submitOrder("order_2", symbol, OrderCommand.BUYLIMIT , 0.02,price); IOrder order3 = engine.submitOrder("order_3", symbol, OrderCommand.BUYLIMIT , 0.03,price,0); IOrder order4 = engine.submitOrder("order_4", symbol, OrderCommand.BUYLIMIT , 0.04,price,0,SL,TP); IOrder order5 = engine.submitOrder("order_5", symbol, OrderCommand.BUYLIMIT , 0.05,price,0,SL,TP,0); IOrder order6 = engine.submitOrder("order_6", symbol, OrderCommand.BUYLIMIT , 0.06,price,0,SL,TP,0,"السلام عليكم");
- 05-03-2020, 08:22 PM #74
ولاننسى import لما يلزم وجوده مع برامج وضع الأوامر مثل:
كود:import com.dukascopy.api.*; import com.dukascopy.api.IEngine.OrderCommand;
آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 08:26 PM
- 05-03-2020, 08:28 PM #75
الآن ونرجو التركيز لأنها مصطلحات:
هناك كلمة order وهناك كلمة position
order يعني أمر انتظار--أي امر لم يتنفذ
position -- أي أمر منفذ وداخل السوق
يعني مثل مصطلحات mql5
في المنصة يوجد كونسول لـ orders
ويوجد كونسول آخر لـ positions