النتائج 76 إلى 90 من 378
- 05-03-2020, 08:30 PM #76
الكود أعلاه نتوقع التالي:
وجود أمر واحد فقط في كونسول positions
ووجود 11 أمر في كونسول Orders
ليش 11؟؟
لأنه تم وضع خمسة أوامر انتظار
وثلاثة منها تم وضع وقف خسارة وتيك بروفت لها--يعني ست عمليات إضافية (3 عمليات وضع وقف خسارة و 3 عمليات وضع تيك بروفت)
5+6 = 11
- 05-03-2020, 08:38 PM #77
- 05-03-2020, 08:42 PM #78
- 05-03-2020, 08:45 PM #79
ركز في هذه الخربشة رغم عدم وضوحها أول وهلة: نسخ ولزق من صفحة الرسائل تبين أسباب الرفض. اقرأها عدة مرات
17:43:34 com.dukascopy.api.JFException: Label not unique(code 1). (Order already exists) [order_1]:label=order_1;getId()=186086112;groupId=186086112;openingOrderI d=726359355;pendingOrderId=null;pendingOrderComman d=null;parentOrderId=null;tpOrderId=null;slOrderId =null;state=FILLED;instrument=GBP/JPY;openPrice=137.803;requestedAmount=0.01;amount= 0.01;lastServerRequest=NONE;awaitingResubmit=false ;
fill history:
[time=2020-03-05 17:15:11, price=137.803, amount=0.01] @ com.dukascopy.api.impl.connect.cb.d(L:180)
الملف المرفق 521055آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 08:48 PM
- 05-03-2020, 08:49 PM #80
وطالما أول أمر واجهه خطأ شطف بقية الأمور لأنه هكذا توقف البرنامج اوتوماتيك!!
نوع الخطأ: com.dukascopy.api.JFException
جرب أن تتعمد أن يكون أول أمر او امرين حسب ترتيبها في البرنامج بلبيل مختلف عما هو موجود سابقا وترك البقية كماهي
لأننا نحن تعدينا الكومبايل تايم بنجاح ونحن الان في الرن-تايم run-time سينفذ مايجده حتى يرى أول خطأ أو مخالفة لقوانين دوكاسكوبي.
والكود السابق ككل: انسخه ثم حفظ باسم الكلاس ثم كمبلة ثم تطبيق:
كود:package jforex; import com.dukascopy.api.*; import com.dukascopy.api.IEngine.OrderCommand; public class SalmanExpert_09 implements IStrategy { private IContext context; private IEngine engine; public void onStart(IContext context) throws JFException { this.context = context; this.engine = context.getEngine(); Instrument symbol= Instrument.GBPJPY; double price=1.00000; double TP=1.10000; double SL=0.90000; 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,"السلام عليكم"); } public void onAccount(IAccount account) throws JFException {} public void onMessage(IMessage message) throws JFException{} public void onStop() throws JFException {} public void onTick(Instrument instrument, ITick tick) throws JFException{} public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException{ } }
آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 08:53 PM
- 05-03-2020, 08:55 PM #81
تمرين غير محلول:
اكتب برنامج يضع أوامر بيع انتظار مدرجة على زوج اليورو الدولار---امر كل 10 نقاط واللوتات على النحو التالي: 0.01 ثم 0.02 ثم 0.03 وهكذا حتى الامر العاشر بـ 0.10 لوت
(من يطرح محاولة حله سنحترم ردوده ونجيب اسئلته--يعني لن يتم تجاهله)
لوت؟؟
اللوت مع دوكاسكوبي = 1,000,000 وليس 100,000
لذا 0.01 لوت تعادل حجم سيولة 10,000 وليس 1,000
- 05-03-2020, 09:05 PM #82
اعد النظر في هذا السطر:
Instrument symbol= Instrument.GBPJPY
هذا السطر في الكود أعلاه هو تعريف متغير من نوع Instrument --- تم تسمية هذا المتغير symbol ثم إعطائه قيمة باسم الزوج الذي نريده وهو GBPJPY--تأمل كيف تم هذا؟
لاحظ لم نضيف تفعيله--لأننا افترضنا انه مفعل وجاهز في المنصة؟؟ راجع دروس ألأمس المكثفة عن التفعيل "subscription"
وبالتالي اذا لم يكن الزوج مفعلا سيرفض الخبير العمل ويطفي حاله من حاله!
- 05-03-2020, 09:09 PM #83
هذا السطر في الكود أعلاه هو تعريف متغير من نوع Instrument --- تم تسمية هذا المتغير symbol ثم إعطائه قيمة باسم الزوج الذي نريده وهو GBPJPY--تأمل كيف تم هذا؟
لأن GBPJPY يعتبر ثابت -- يعني من نوع enum ويوجد تحت كلاس اسمها Instrument فإن الاستدعاء لايتم الا هكذا:
اسم الكلاس ثم نقطة "." ثم اسم الثابت
قوانين استدعاء الثوابت:
Interface.enum
أو
class.enum
- 05-03-2020, 09:11 PM #84
ولزوج المجنون يفترض نختار قيم مثل 130.000بدلا من قيم 1.00000 لسعر الدخول
آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 09:14 PM
- 05-03-2020, 09:23 PM #85
ولإغلاق كل الأوامر دالة close تحت IEngine تقوم بالمهمة ومن خلال for loop وطبعا الأفضل نستخدم for المطورة---
كود هذا الاجراء سهل وبسيط جداً,
كود:this.engine = context.getEngine(); for( IOrder order : engine.getOrders() ) order.close();
close مع دوكاسكوبي يعنون بها 1) اغلاق الأوامر المفتوحة و 2) حذف الأوامر المعلقة معاً في نفس اللحظة
والميزة هنا انها تحدث تقريبا في نفس الوقت
- 05-03-2020, 09:24 PM #86
كود الإغلاق بحده الأدنى:
كود:package jforex; import com.dukascopy.api.*; public class Close_all_orders implements IStrategy{ private IEngine engine; public void onStart(IContext context) throws JFException { this.engine = context.getEngine(); for( IOrder order : engine.getOrders() ) order.close(); } public void onAccount(IAccount account) throws JFException {} public void onMessage(IMessage message) throws JFException {} public void onStop() throws JFException {} public void onTick(Instrument instrument, ITick tick) throws JFException {} public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {} }
- 05-03-2020, 09:27 PM #87
تمرين غير محلول: بناء على كل ماسبق وعلى فرض وجود صفقات كثيرة على ازواج كثيرة, ومنها زوج EURUSD
كيف نغلق فقط صفقات اليورو دولار ؟؟
كيف فقط نغلق الصفقات المفتوحة مع بقاء أوامر الانتظار؟
طبعا لابد تفكر في if-statment
وكل ماسبق يكفي لتنفيذ هذا البرنامج.
مساعدة: IOrder .State ------ if ------ getOrdersآخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 09:34 PM
- 05-03-2020, 09:36 PM #88
engine.getOrders
دالة getOrders توجد تحت IEngine لذا تم المرور لها من خلال كائن من نوع IEngine وسمينها هذا الكائن engine
هذه الدالة حاول معرفة ناتجها من خلال ما كنا نفعله في الردود امس وصباح اليوم؟
أيضا ابحث عن الدوال الأخرى تحت ماكينة دوكاسكوبي IEngine
- 05-03-2020, 09:40 PM #89
س: كيف نحصل على سعر اخر تكة لزوج اليورو دولار ؟؟ وليكن سعر البد bid؟؟
ج: بناء على الشروح السابقة لـ ITick نفعل التالي:
ITick lastTick = history.getLastTick(instrument) fffffffffffffff;
double price = lastTick.getBid() fffffffffffffff
----------
-------
--
أولا حصلنا على تكات اليورو دولار ثم حددنا اختيار البد
-
-
مارأيك لو حذفنا المتغير منسيبتمنب من السطر الثاني ووضعنا مكانه قيمته من السطر الأول:
يعني:
double price = history.getLastTick(instrument) .getBid() fffffffffffffff
آخر تعديل بواسطة سلمان_العتيبي ، 05-03-2020 الساعة 09:44 PM
- 05-03-2020, 09:47 PM #90
الناتج النهائي getBid نعلم انه من نوع double لذا اخترنا نوع double للمتغير price
انشأنا كائن هيستوري history
ثم استدعينا دالة getLastTick الموجودة داخل الهيستوري
ولها قيم كثيرة من ضمنها getBid حيث تم استدعائها