كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
السلام عليكم ورحمة وبركاته
يلاحظ ان أمر الشراء او البيع الحر غير المقيد بشرط يكرر نفسه دون الحاجة لكتابة كود لهذا الغرض
بمعنى يفتح صفقة جديدة بنفس النوع عند نقطة إغلاق الصفقة الحالية وبسعر السوق
ولكي يكون الإكسبيرت يقوم بهذه المهمة باكمل وجه فهل يحتاج كود التكرار .. وما هو الكود اللازم لهذا التكرار
ثم كيف بالإمكان إمكانية ارسال امر ببيع او شراء بماجيك نمبر ثانوي عند اول عملية ببيع اوشراء مستقبلية تحمل نفس الماجيك نمبر الاساسي.
وتقبلوا تحياتي
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
السلام عليكم ورحمة وبركاته
يلاحظ ان أمر الشراء او البيع الحر غير المقيد بشرط يكرر نفسه دون الحاجة لكتابة كود لهذا الغرض
بمعنى يفتح صفقة جديدة بنفس النوع عند نقطة إغلاق الصفقة الحالية وبسعر السوق
ولكي يكون الإكسبيرت يقوم بهذه المهمة باكمل وجه فهل يحتاج كود التكرار .. وما هو الكود اللازم لهذا التكرار
ثم كيف بالإمكان إمكانية ارسال امر ببيع او شراء بماجيك نمبر ثانوي عند اول عملية ببيع اوشراء مستقبلية تحمل نفس الماجيك نمبر الاساسي.
وتقبلوا تحياتي
بالنسبة للسؤال الثاني كمثال بسيط جدا يمكنك إضافة الماجيك نمبر+ عدد الصفقات الحاليه بالتالي أي صفقه جديده يتم فتحها سوف تكون مختلفه عن الماجيك نمبر لأي صفقات أخرى مفتوحه
كود PHP:
MagicNumber=MagicNumber+OrdersTotal();
بالنسبة للسؤال الأول فلم أفهم قصدك تماما لكن إذا أردت فتح صفقه بمجرد إغلاق صفقه أخرى فيمكنك وضع
أمر OrderSend بعد أمر OrderClose حتى يفتح الصفقه مباشرة بعد إغلاق الصفقه السابقه
أرجو أن توضح أكثر ماذا تقصد بالنسبة للسؤال الأول
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
بالنسبة للسؤال الثاني كمثال بسيط جدا يمكنك إضافة الماجيك نمبر+ عدد الصفقات الحاليه بالتالي أي صفقه جديده يتم فتحها سوف تكون مختلفه عن الماجيك نمبر لأي صفقات أخرى مفتوحه
كود PHP:
MagicNumber=MagicNumber+OrdersTotal();
بالنسبة للسؤال الأول فلم أفهم قصدك تماما لكن إذا أردت فتح صفقه بمجرد إغلاق صفقه أخرى فيمكنك وضع
أمر OrderSend بعد أمر OrderClose حتى يفتح الصفقه مباشرة بعد إغلاق الصفقه السابقه
أرجو أن توضح أكثر ماذا تقصد بالنسبة للسؤال الأول
المقصود امر اضافي مرادف للامر القادم بماجيك نمبر ثانوي .. بمعني يكون امرين من نفس النقطة احدهما اساسي بماجيك اساسي .. والاخر مرادف بماجيك ثانوي ويختللف عنه في عدد العقود مثلا
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
المقصود امر اضافي مرادف للامر القادم بماجيك نمبر ثانوي .. بمعني يكون امرين من نفس النقطة احدهما اساسي بماجيك اساسي .. والاخر مرادف بماجيك ثانوي ويختللف عنه في عدد العقود مثلا
في هذه الحاله يمكنك إستخدام الحلقه for لتكرار الأمر عدد المرات التي تريدها كمثال
كود PHP:
for(int i=0;i<=Max_Orders;i++){
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"EA",MagicNumber+i,0,Blue);
}
سوف تجد أن الأمر الأساسي سيأخذ رقم الماجيك نمبر MagicNumber
ثم بعد ذلك الأوامر الفرعيه بالعدد الذي تريده ستأخذ الماجيك نمبر بالتتابع زياده 1 في كل مره
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
في هذه الحاله يمكنك إستخدام الحلقه for لتكرار الأمر عدد المرات التي تريدها كمثال
كود PHP:
for(int i=0;i<=Max_Orders;i++){
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"EA",MagicNumber+i,0,Blue);
}
سوف تجد أن الأمر الأساسي سيأخذ رقم الماجيك نمبر MagicNumber
ثم بعد ذلك الأوامر الفرعيه بالعدد الذي تريده ستأخذ الماجيك نمبر بالتتابع زياده 1 في كل مره
عفوا اخي .. لم اوفق في شرح طلبي لك.
هناك نوعان من الاوامر
الاول امر اساسي بماجيك نمبر اساسي .. وهذا هو الامر الذي يقوم بنفتح الإكسبيرت كعمل اساسي. وهي وظيفة الاكسبيرت الإعتيادية.
الثاني أمر مرادف ولكن بماجيك نمبر ثانوي .. يتم فتحه فقط عن تحقق شرط معين ليس هو نفس شرط الامر الاساسي.
يكون الامر المرادف .. مصاحب لامر اساسي مستقبلي وليس حالي مفتوح.
بمعنى لو تحقق الشرط المطلوب توفره لفتح الامر المرادف ... فإن الإكسبيرت ينتظر في فتح الامر لحين فتح امر اساسي في المستقبل.. بحيث يكون الثانوي والاساسي في نقطة سعرية معينة ولكن لكل منهما ماجيك مختلف
بمعني ان الامر الثانوي يفتتح مع اول امر اساسي سيتم فتحه ... وثاني اخر ثانوي مع ثاني امر اساسي قادم.
اتمنى قد وفقت في التوضيح
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
عفوا اخي .. لم اوفق في شرح طلبي لك.
هناك نوعان من الاوامر
الاول امر اساسي بماجيك نمبر اساسي .. وهذا هو الامر الذي يقوم بنفتح الإكسبيرت كعمل اساسي. وهي وظيفة الاكسبيرت الإعتيادية.
الثاني أمر مرادف ولكن بماجيك نمبر ثانوي .. يتم فتحه فقط عن تحقق شرط معين ليس هو نفس شرط الامر الاساسي.
يكون الامر المرادف .. مصاحب لامر اساسي مستقبلي وليس حالي مفتوح.
بمعنى لو تحقق الشرط المطلوب توفره لفتح الامر المرادف ... فإن الإكسبيرت ينتظر في فتح الامر لحين فتح امر اساسي في المستقبل.. بحيث يكون الثانوي والاساسي في نقطة سعرية معينة ولكن لكل منهما ماجيك مختلف
بمعني ان الامر الثانوي يفتتح مع اول امر اساسي سيتم فتحه ... وثاني اخر ثانوي مع ثاني امر اساسي قادم.
اتمنى قد وفقت في التوضيح
أعتقد أن مشكلتك الآن هي في كيف يعرف الإكسبرت أن شروط الأمر الثانوي قد تحققتك ويحفظ الأمر لحين فتح الأمر الأساسي حتى يفتحه معه هل هذا صحيح
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
أعتقد أن مشكلتك الآن هي في كيف يعرف الإكسبرت أن شروط الأمر الثانوي قد تحققتك ويحفظ الأمر لحين فتح الأمر الأساسي حتى يفتحه معه هل هذا صحيح
نعم اخي بارك الله فيك .. وزادك سعة في العلم
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
نعم اخي بارك الله فيك .. وزادك سعة في العلم
أحد الطرق البسيطه هي إستخدام Global Variable
وهي لحفظ أي متغيرات ثم إستدعائها في الوقت الذي تريده
على سبيل المثال
كود PHP:
if(RSI>50)GlobalVariableSet("Buy",1);
ولنفرض أن شرط تحقق الأمر المرادف أن تصبح قيمة RSI أكبر من 50 في الكود السابق بمجرد أن تصبح قيمة RSI أكبر من 50 سوف يتم حفظ متغير بإسم Buy ويأخذ القيمه 1
الآن سنرى تحقق شروط الأمر الأساسي
كود PHP:
if(ma10>ma20&&ma10P<ma20P){ // شروط تحقق الأمر الأساسي
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"EA",MagicNumber,0,Blue); // الأمر الأساسي
if(GlobalVariableGet("BUY")==1)OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"EA",MagicNumber+1,0,Blue); // الأمر المرادف
GlobalVariableSet("Buy",0); // تم فتح الأمر المرادف بالتالي تعود قيمة باي إلى صفر
}
بمجرد تحقق شرط الأمر الأساسي سوف يتم فتح الصفقه الأساسيه ثم يتم التحقق من شرط الأمر المرادف فإذا كان قيمة Buy تساوي 1 فهذا يعني أن الشرط قد تحقق والرقم 1 هو القيمه التي أخذها المتغير عندما تحقق الشرط
ثم بعد ذلك نقوم بحذف قيمة Buy مره أخرى ونجعلها 0 وإلا فسوف تظل قيمتها 1 ولن تتغير دائما
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
أحد الطرق البسيطه هي إستخدام Global Variable
وهي لحفظ أي متغيرات ثم إستدعائها في الوقت الذي تريده
على سبيل المثال
كود PHP:
if(RSI>50)GlobalVariableSet("Buy",1);
ولنفرض أن شرط تحقق الأمر المرادف أن تصبح قيمة RSI أكبر من 50 في الكود السابق بمجرد أن تصبح قيمة RSI أكبر من 50 سوف يتم حفظ متغير بإسم Buy ويأخذ القيمه 1
الآن سنرى تحقق شروط الأمر الأساسي
كود PHP:
if(ma10>ma20&&ma10P<ma20P){ // شروط تحقق الأمر الأساسي
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"EA",MagicNumber,0,Blue); // الأمر الأساسي
if(GlobalVariableGet("BUY")==1)OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"EA",MagicNumber+1,0,Blue); // الأمر المرادف
GlobalVariableSet("Buy",0); // تم فتح الأمر المرادف بالتالي تعود قيمة باي إلى صفر
}
بمجرد تحقق شرط الأمر الأساسي سوف يتم فتح الصفقه الأساسيه ثم يتم التحقق من شرط الأمر المرادف فإذا كان قيمة Buy تساوي 1 فهذا يعني أن الشرط قد تحقق والرقم 1 هو القيمه التي أخذها المتغير عندما تحقق الشرط
ثم بعد ذلك نقوم بحذف قيمة Buy مره أخرى ونجعلها 0 وإلا فسوف تظل قيمتها 1 ولن تتغير دائما
بارك الله فيك اخي مستر دولار ووفقك لما يحب ويرضى ورحم والديك
كيف بالإمكان جعل أمر الشراء أو البيع يكرر نفسه بعد الإغلاق سواء على ربح او خسارة.
ثم كيف احدد خسارة الصفقة بنقاط معينة لاتمكن عند هذه النقطة بفتح صفقة هيدج
موفق اخي
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
بارك الله فيك اخي مستر دولار ووفقك لما يحب ويرضى ورحم والديك
كيف بالإمكان جعل أمر الشراء أو البيع يكرر نفسه بعد الإغلاق سواء على ربح او خسارة.
ثم كيف احدد خسارة الصفقة بنقاط معينة لاتمكن عند هذه النقطة بفتح صفقة هيدج
موفق اخي
انتظرك اخي اسامة .. أعانك الله ووفقك
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
بارك الله فيك اخي مستر دولار ووفقك لما يحب ويرضى ورحم والديك
كيف بالإمكان جعل أمر الشراء أو البيع يكرر نفسه بعد الإغلاق سواء على ربح او خسارة.
ثم كيف احدد خسارة الصفقة بنقاط معينة لاتمكن عند هذه النقطة بفتح صفقة هيدج
موفق اخي
بداية سوف تحتاج إلى دالة لمعرفة آخر نوع صفقه أغلقت هل هي بيع أو شراء
كود PHP:
int LastOrderType(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol()){
return(OrderType());
}
}
return(-1);
}
ثم ستضع في شروط الدخول ولا تنسى أن تضع شرط بأن عدد الصفقات المفتوحه يساوي 0 حتى يتأكد أن الصفقه المفتوحه تم إغلاقها
كود PHP:
if(LastOrderType()==0) //Open Buy
if(LastOrderType()==1) //Open Sell
بالنسبة لفتح هيدج عند مستوى معين سوف تحتاج معرفة أولا سعر إفتتاح الصفقه الحاليه ثم ستحدد المسافه التي تريد فتح الهيدج عندها Step
كود PHP:
for(cnt=0;cnt<OrdersTotal();cnt++){
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber () == MagicNumber){
double openprice = OrderOpenPrice();int type=OrderType();
}
}{
if(type==OP_BUY&&openprice-Bid>=Step*Point){
OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,0,0," EA",MagicNumber,0,Red);
}}
والعكس في حالة البيع
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
ربنا يوفقك اخي اسامة ويسهل أمرك ويحقق لك ماتريد
عندي سؤال ثاني .. كيف ممكن احدد الخسائر والارباح لجميع الصفقات التاريخية والحالية ذات الماجيك نمبر الواحد وتعريفها كقيمة بمتغير
رد: كود لفتح امر مرادف للاوامر المستقبلية... مستر دولار وينك ؟؟
اقتباس:
المشاركة الأصلية كتبت بواسطة 4X Trader
ربنا يوفقك اخي اسامة ويسهل أمرك ويحقق لك ماتريد
عندي سؤال ثاني .. كيف ممكن احدد الخسائر والارباح لجميع الصفقات التاريخية والحالية ذات الماجيك نمبر الواحد وتعريفها كقيمة بمتغير
الفكره في كيفية برمجة الدوال إذا إستطعت معرفتها عندها ستجد جميع الأمور سهله
كود PHP:
double ClosedOrders(){
double P;
for(int i=0;i<=OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderMagicNumber()==MagicNumber){
P+=OrderProfit();
}
}
return(P);
}
double CurrentOrders(){
double P;
for(int i=0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MagicNumber ){
P+=OrderProfit();
}
}
return(P);
}
بدالة الداله start
كود PHP:
double ProfitAll=ClosedOrders()+CurrentOrders();