النتائج 2,701 إلى 2,715 من 10363
الموضوع: موضوع مخصص للأسئلة البرمجية
- 01-09-2012, 01:54 PM #2701
- 01-09-2012, 06:56 PM #2702
قد يحدث خطأ أن السيرفر مشغول نظرا لتنفيذ إكسبرت أمر آخر ولذلك يمكنك إستخدام الداله للتأكد
أوكود PHP:IsTradeContextBusy()
أيضا بالنسبه للإكسبرتات التي تعتمد على إغلاق أكثر من صفقة أو أكثر من عمله فأنا أستخدم المحاولة أكثر من مره حتى أتأكد من إغلاق الإكسبرت تماماكود PHP:IsTradeAllowed()
مثال
كود PHP:int Tried;
if(OrdersTotal()>0&&Tried<20){
//close Orders
Tried++;
}
- 01-09-2012, 09:16 PM #2703
رد:موضوع مخصص للأسئلة البرمجية
رجاءا اخي مستر دولار الرد على هذه المشاركة فانا لا اريد ان اتعبك حتى تعملي الكود الكامل لمربع التسعة ولكن كان تساؤلي (لماذا بقيت قيم المصفوفة تساوي الصفر)
https://forum.arabictrader.com/showt...=1#post2491917آخر تعديل بواسطة turkm ، 01-09-2012 الساعة 09:19 PM
- 02-09-2012, 11:45 AM #2704
رد:موضوع مخصص للأسئلة البرمجية
أليس من الممكن أستاذ أسامه أن أعطي للصفقات التي تفتح عن طريق الأوامر المعلقه ماجيك نمبر يختلف عن الصفقات التي تفتح ماركت وتدخل في المضاعفات و أستخدم دوال لكل منهما وكل بالماجيك نمبر الخاص به
مثلا إستخدام دالتين خاصه بماجيك نمبر الأوامر المعلقه و دالتين لأوامر الماركت للبحث في التاريخ عن آخر و أول صفقات :
و أقوم بعمل داله تعود بنوع آخر أمر معلق بالماجيك أيضا :كود PHP:////// HISTORICAL LAST ONES FOR PENDING ORDERS BY MAGIC ///
string lastP;
for(int i=OrdersHistoryTotal();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberP)
{
double LastP_lots,LastP_SL,LastP_openprice, LastP_ordertype;
//for buy order
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) lastP="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) lastP="loss";
LastP_lots=OrderLots();
LastP_SL=OrderStopLoss();
LastP_openprice=OrderOpenPrice();
LastP_ordertype=OrderType() ;
//for SELL order
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) lastP="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) lastP="loss";
LastP_lots=OrderLots();
LastP_SL=OrderStopLoss();
LastP_openprice=OrderOpenPrice();
LastP_ordertype=OrderType() ;
break;
}
}
//============================
////// HISTORICAL LAST ONES FOR MARKET ORDERS BY MAGIC ///
string lastM;
for(int ii=OrdersHistoryTotal();ii>=0;ii--)
{
OrderSelect(ii, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
double LastM_lots,LastM_SL,LastM_openprice, LastM_ordertype;
//for buy order
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) lastM="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) lastM="loss";
LastM_lots=OrderLots();
LastM_SL=OrderStopLoss();
LastM_openprice=OrderOpenPrice();
LastM_ordertype=OrderType() ;
//for SELL order
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) lastM="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) lastM="loss";
LastM_lots=OrderLots();
LastM_SL=OrderStopLoss();
LastM_openprice=OrderOpenPrice();
LastM_ordertype=OrderType() ;
break;
}
}
//========================
////// HISTORICAL FIRST ONES FOR MARKET ORDERS BY MAGIC ///
string firstM ;
for(int iii=OrdersHistoryTotal();iii<=1;iii--)
{
OrderSelect(iii, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
double firstM_lots,firstM_SL,firstM_openprice, firstM_ordertype;
//for buy order
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) firstM="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) firstM="loss";
firstM_lots=OrderLots();
firstM_SL=OrderStopLoss();
firstM_openprice=OrderOpenPrice();
firstM_ordertype=OrderType() ;
//for SELL order
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) firstM="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) firstM="loss";
firstM_lots=OrderLots();
firstM_SL=OrderStopLoss();
firstM_openprice=OrderOpenPrice();
firstM_ordertype=OrderType() ;
break;
}
}
//===========================
////// HISTORICAL FIRST ONES FOR PENDING ORDERS BY MAGIC ///
string firstP ;
for(int iiii=OrdersHistoryTotal();iiii<=1;iiii--)
{
OrderSelect(iiii, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberP)
{
double firstP_lots,firstP_SL,firstP_openprice, firstP_ordertype;
//for buy order
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) firstP="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) firstP="loss";
firstP_lots=OrderLots();
firstP_SL=OrderStopLoss();
firstP_openprice=OrderOpenPrice();
firstP_ordertype=OrderType() ;
//for SELL order
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) firstP="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) firstP="loss";
firstP_lots=OrderLots();
firstP_SL=OrderStopLoss();
firstP_openprice=OrderOpenPrice();
firstP_ordertype=OrderType() ;
break;
}
}
ثم تكون الشروط لإعادة وضع الأوامر المعلقة الشراء و البيع من نفس النقطة بعد الوصول للهدف تكون كالتالي :كود PHP:
double LastPend(){
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && MagicNumberP==OrderMagicNumber()&& (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)){
double LastPend=OrderType();
}
}
return(LastPend);
}
كود PHP:///////////////////4-RE PUT BUY PENDING////////////
if( lastP=="profit" && LastPend()==OP_BUYSTOP )
double bl=LastP_openprice ;
{
OrderSend(Symbol(),OP_BUYLIMIT,Lots,bl,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
}
if( lastP=="profit" && LastPend()==OP_BUYLIMIT )
double bss=LastP_openprice ;
{
OrderSend(Symbol(),OP_BUYSTOP,Lots,bss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
}
//======================
///////////////////3-RE PUT SELL PENDING////////////
if( lastP=="profit" && LastPend()==OP_SELLSTOP )
double sll=LastP_openprice ;
{
OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
}
if( lastP=="profit" && LastPend()==OP_SELLLIMIT )
double sss=LastP_openprice ;
{
OrderSend(Symbol(),OP_SELLSTOP,Lots,sss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
}
//=======================
و تكون شروط مضاعفة العقود الخاسرة هكذا :
و تكون شروط وضع أمر معلق مره أخرى بعد إصابة المضاعفات الهدف و توضع الأوامر من نفس نقطة آخر أمر تم مضاعفته :كود PHP:////////////////////////6-MULTIPLIERS FOR LOSS BUY//////////////////////
if( X_Multiplier && lastP=="loss" && LastPend()==OP_BUYSTOP||LastPend()==OP_BUYLIMIT )
double newLot1=Multiplier*LastP_lots;
{
if(StopLoss==0||HideSL){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0||HideTP){TP=0;}else{TP=Ask+TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,newLot1,Ask,3*Q,SL,TP,"Expert EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
Time0=Time[0];
}
/////////
if( X_Multiplier && lastM=="loss" && LastM_ordertype==OP_BUY )
double newLot2=Multiplier*LastM_lots;
{
if(StopLoss==0||HideSL){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0||HideTP){TP=0;}else{TP=Ask+TakeProfit*point;}
OrderSend(Symbol(),OP_BUY,newLot2,Ask,3*Q,SL,TP,"Expert EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
Time0=Time[0];
}
////////////////////////5-MULTIPLIERS FOR LOSS SELLS//////////////////////
if( X_Multiplier && lastP=="loss" && LastPend()==OP_SELLSTOP||LastPend()==OP_SELLLIMIT )
double newLot3=Multiplier*LastP_lots;
{
if(StopLoss==0||HideSL){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0||HideTP){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,newLot3,Bid,3*Q,SL,TP,"Dentist_Hussein EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
Time0=Time[0];
}
/////////
if( X_Multiplier && lastM=="loss" && LastM_ordertype==OP_SELL )
double newLot4=Multiplier*LastM_lots;
{
if(StopLoss==0||HideSL){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0||HideTP){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,newLot4,Bid,3*Q,SL,TP,"Dentist_Hussein EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
Time0=Time[0];
}
//================================
معلشي هتعبك معايا أخي أسامه .. رجاء مراجعة أكواد الدوال و الشروطكود PHP://////////////////8- PUT BUY PENDING AFTER PROFIT /////////////
if( lastM=="profit" && LastM_ordertype==OP_BUY )
double bsss=firstP_openprice ;
{
OrderSend(Symbol(),OP_BUYSTOP,Lots,bsss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
}
//////////////////7- PUT BUY PENDING AFTER PROFIT /////////////
if( lastM=="profit" && LastM_ordertype==OP_SELL )
double ssss=firstP_openprice ;
{
OrderSend(Symbol(),OP_SELLSTOP,Lots,ssss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
}
//====================
و جزاك الله كل خير .
[/PHP]profit
- 02-09-2012, 06:07 PM #2705
السلام عليكم
أريد المساعدة في إيجاد كود يقوم بإغلاق جميع الأوامر المعلقة(OP_BUYSTOP,OP_SELLSTOP) مع الإبقاء على الأمرين المعلقين الأخيرين فقط.
وشكرا للجميع
- 02-09-2012, 11:12 PM #2706
الكود تقوم بعمله بناء على الشرط فلا يوجد ما يسمى دالة للمضاعفات مع الهيدج
مثلا لو تريد فتح مضاعفه وفي نفس الوقت تفتح معها صفقة هيدج بنصف حجم لوت المضاعفه
مثال
كود PHP:double lastlot(int type){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
return(OrderLots());
}
}
return(0);
}
double lastopenprice(int type){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
return(OrderOpenPrice());
}
}
return(0);
}
if(Ask-lastopenprice(OP_SELL)>50*Point&&lastopenprice(OP_SELL)!=0){
OrderSend(Symbol(),OP_BUY,lastlot(OP_SELL),NormalizeDouble(Ask,Digits),3,0,0,"Hedge",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELL,lastlot(OP_SELL)*2,NormalizeDouble(Bid,Digits),3,0,0,"Multiplier",MagicNumber,0,Red);
}
- 02-09-2012, 11:17 PM #2707
رد:موضوع مخصص للأسئلة البرمجية
استاذي مستر دولار عندي مشكلة في دالة ايقاف الأكسبيرت لباقي اليوم بعد تحقيق الربح ، على ان يعاود العمل في اليوم التالي دون تدخل يدوي لتشغيله ، برجاء تجربته والتعديل وشكرا
مرفق الأكسبيرت
- 03-09-2012, 12:00 AM #2708
عمل الحلقات هي التي بها أخطاء لكن المصفوفه صحيحه
أولا بالنسبه للحلقه التي ستبحث عن العناصر
المصفوفه ترتيب العناصر فيها من 0 إلى حجم المصفوفه -1كود PHP:for(int i=1; i<=23; i++)
فعند البحث سوف تجعل الحلقه
ثانيا بالنسبه لباقي الحلقات فبها أيضا أخطاء في رقم العنصر بداخل المصفوفهكود PHP:for(int i=0; i<23; i++)
مثلا
فعندما تصل قيمة i مثلا إلى 20 فعندها ستصبح رقم المصفوفه بالسالب class_H-iكود PHP:for(int i_1=0; i_1<i; i_1++)
{
counter++;
array[class_H-i_1][class_V+i_1]= counter;
}
ولا يوجد ترتيب لعنصر مصفوفه بالسالب
فلو جربت أن تقوم بطباعة جميع العناصر سوف تجد أن بعضها يأخذ القيم الصحيحه له وبعضها يأخذ القيم صفر
الخطأ عندك في تنفيذ الفكره وليس خطأ برمجيكود PHP:for(int i_1=0; i_1<i; i_1++)
{
counter++;
array[class_H-i_1][class_V+i_1]= counter;
Print(array[class_H-i_1][class_V+i_1]);
}
ما هي الفكره التي تريد عملها وسوف أساعدك لمعرفة كيفية تنفيذها
- 03-09-2012, 06:10 AM #2709
نعم سوف تقوم بتغيير عدد الشموع بدلا من 5 إلى 3
أيضا الفكره الثانيه رائعه لكن لا أعتقد أنها ستحل مشكلة تكرار الإشارات لأنك إذا كنت ستضع شرط أن آخر إشارة كانت للشمعه السابقه فما الفائده من البحث عن باقي الشموع يكفي فقط المقارنه مع آخر شمعه والتأكد من تحقق الشرط فيها
- 03-09-2012, 08:33 AM #2710
غلبتك معاي استاذ اسامه واشكرك علي سرعة الرد اعيد صياغة الفكرة يمكن التبس الوضع القصد هو مثلا شراء بعقد واحد علا تقاطع موفنج باللوت الابتداءي ١ اذا اعطا التقاطع اشاره عكسية والعملية الاولى خسرانه يدخل بعقدين ٢ معاكس اذا جاب التارقت يسكر اذا لا عطا اشاره عكسية ثالثه ندخل بثلاث عقود مع عدم تسكير العقود المفتوحه هذا الهدج الذي اقصده لين تحقيق التارقت لجميع العقود انا احدده. طبعا مع العلم اذا وصل المظاعفه الثالثه والعقود الاولية ماجابت تارقت بس التوتل بوزتف يدخل من جديد اغلب الاكواد الموجودة مضاعفات بس تسكر العقود علا خساره محققه انا ابيها معلقه لين يكون الناتج للعقود موجب هذا الهدج الذي اقصده لانه العقد الاول خسران علا مثلا ١٠ نقاط ودخلت بعقدين هدف خمسه عندما يتحرك السعر معاي ١٥ نقطه يعوض الخساره الاولي للعقد الاول والخمسه ربح طبعا هذي الفكرة طبعا علا المظاعفتين تكون سلبية لكن لو ثلاثه واربع تكون اامن لانه المضاعفات تتجاوز خمسه وسته بالغالب نتيجة التذبذب
- 03-09-2012, 10:49 AM #2711
بارك الله بك أخي اسامة الفكرة لدي اني اريد بناء مربع التسعة المعروف (مربع جان) داخل مصفوفة ثنائية البعد يعني لو اردنا إنشاء مربع التسعة بابعاد (فرضا) 23 * 23 فيجب ان تكون الخانة ذات الاحداثيات (12,12)=1 اي ابعاد المربع + 1 تقسيم 2 ثم يبدأ العد وتعبئة جميع خانات المصفوفة كما هو معروف في مربع التسعة
كما هو الحال في هذه الصورة
جزاك الله عني كل خيرآخر تعديل بواسطة turkm ، 03-09-2012 الساعة 10:52 AM
- 03-09-2012, 11:26 PM #2712
رد:موضوع مخصص للأسئلة البرمجية
استاذ اسامة ، انا وضعت شرط يسمح بإضافة لوت جديد إلى اللوت الإبتدائي عند الوصول للربح المحدد
داخل ستارت
والمتغيرات الخارجيةكود PHP:if(AutoLot==true){
if(AccountEquity()>=Money_Account){
Lots=Firstlot+Add_Lot;}
else{Lots=Firstlot;}
و الـ Firstlot داخل دالة initكود PHP:extern bool AutoLot = true;
extern double Add_Lot = 1;
extern double Money_Account = 500;
الشروط السابقة تعمل بشكل صحيح ، ولكن أنا أريد إضافة كود يسمح بزيادة حجم اللوت الجديد(Add_Lot) اذا كان الربح أكبر من الربح المحدد (Money_Account) ، زيادة اللوت مع زيادة الربح .كود PHP:Firstlot=Lots ;
حاولت وضع الحلقة التالية داخل ستارت
ولكنها لم تعمل !!كود PHP:if(AutoLot==true){
for(int ii=0;ii<Money_Account;ii++){
if(AccountEquity()>=ii*Money_Account){
Lots=Firstlot+ii*Add_Lot;}
else{Lots=Firstlot;}
}
}
آخر تعديل بواسطة spiders101 ، 03-09-2012 الساعة 11:30 PM
- 04-09-2012, 12:09 AM #2713
رد:موضوع مخصص للأسئلة البرمجية
استخدمت دالة IsTradeContextBusy مع الأمر Sleep
ووضع كود لعدد المحاولات ..
هل التعديل صحيح ، ولي سؤال دالة OrdersTotal() هنا تعود بعدد الصفقات التي فتحها اكسيبرت محدد أم عدد الصفقات الكلية التي تم فتحها على المنصة(سواء عن طريق اكسيبرت أو يدوي) !!كود PHP:if(Use_USD_Profit_Global==true){//Close Total profit for all pairs >>> ACCount profit ||Close Total profit for one pair >>> profit2(OP_BUY)+profit2(OP_SELL)||***ADD Code to CloseOrders() Function
int triednumber2;
if(OrdersTotal()>0&&triednumber2<20){
while(true)
{
if(IsTradeContextBusy()){Sleep(1000);}
else {
if(AccountProfit()>=USD_Profit && Use_USD_Profit==true){
signalbuy1=false;signalbuy2=false;signalsell1=false;signalsell2=false;
CloseOrders();}
if(AccountProfit()<=-USD_Loss&&Use_USD_Loss==true){
signalbuy1=false;signalbuy2=false;signalsell1=false;signalsell2=false;
CloseOrders();}
if(AccountProfit()<=-(lossratio*AccountBalance()/100)&&LossRatio==true){
signalbuy1=false;signalbuy2=false;signalsell1=false;signalsell2=false;
CloseOrders();}
if(AccountProfit()>=(profitratio*AccountBalance()/100)&&ProfitRatio==true){
signalbuy1=false;signalbuy2=false;signalsell1=false;signalsell2=false;
CloseOrders();}
if(DayOfWeek()==5&&Hour()==CloseHour&&Closeby_EndofWeek==true){
signalbuy1=false;signalbuy2=false;signalsell1=false;signalsell2=false;
CloseOrders();}
}
}
triednumber2++;
}
}
- 04-09-2012, 12:36 AM #2714
- 04-09-2012, 04:28 AM #2715
سوف تستخدم نفس الطريقة لكن بدلا من عمل الداله للبحث عن آخر صفقه مغلقه سوف تستخدم آخر صفقه مفتوحه
وأيضا تقوم بعمل دالة لمعرفة آخر صفقه أغلقت هل هي بيع أو شراء
مثال
ثم لو إعتمدنا مثلا على تقاطع الموفينج أفريجكود PHP:double lastlot(int type){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
return(OrderLots());
}
}
return(0);
}
double lastordertype(int type){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
return(OrderType());
}
}
return(-1);
}
كود PHP:double ma_fast=iMA(Symbol(),0,14,0,0,0,1);
double ma_slow=iMA(Symbol(),0,25,0,0,0,1);
if(ma_fast>ma_slow&&lastordertype()==OP_SELL){
OrderSend(Symbol(),OP_BUY,lastlot(OP_SELL)*2,NormalizeDouble(Ask,Digits),3,0,0,"ea",MagicNumber,0,Blue);
}
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM
الأكثر زيارة


رد مع اقتباس