النتائج 1,561 إلى 1,575 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 27-01-2012, 06:07 PM #1561
السلام عليكم ورحمة الله أستاذ اسامة
حاولت تعديل الإكسبريت بحيث يغلق صفقة البيع عند تحقق شروط صفقة الشراء
وان يغلق صفقة الشراء عند تحقق شروط صفقة البيع
هذا هو الكود الذي أضفته
كود PHP:{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt > 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && (S<5000&&S_Previous>5000) )
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && (B<5000&&B_Previous>5000) )
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
لاكن دون هدف وستوب وتبقى هكذا ....
أرجو من فضلك ان تدلني على الخطأ وشكرااا جزيلاااا
- 27-01-2012, 08:05 PM #1562
الدوال الخاصة بإخفاء الهدف والأستوب لوز
كود PHP:int CloseBuyOrdersHiddenTP()
{
int total=OrdersTotal();
for (int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*point))
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
}
}
}
return(0);
}
void CloseBuyOrdersHiddenSL()
{
int total=OrdersTotal();
for (int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY&&Bid<(OrderOpenPrice()-StopLoss*point))
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
}
}
}
}
void CloseSellOrdersHiddenTP()
{
int total=OrdersTotal();
for(int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL&&Ask<(OrderOpenPrice()-TakeProfit*point))
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
}
}
}
}
void CloseSellOrdersHiddenSL()
{
int total=OrdersTotal();
for(int cnt=total;cnt>=0;cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL&&Ask>(OrderOpenPrice()+StopLoss*point))
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
}
}
}
}
بحيث تضع شرط
كود PHP:if(HideSL)SL=0;
if(HideTP)TP=0;
- 27-01-2012, 08:11 PM #1563
وعليكم السلام ورحمة الله وبركاته
لاحظ شرط الدخول الأول
كود PHP:if(B<5000&&B_Previous>5000){// *********
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
كود PHP:if(B<5000&&B_Previous>5000){// *********
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
}//********
كود PHP:total=OrdersTotal();
- 28-01-2012, 01:02 AM #1564
بارك الله فيك أستاذ اسامة على مساعداتك الطيبة
حاولت حصر وقت عمل الإكسبريت يعني يعمل كل يوم من 7h صباحا حتى 23h ليلا
ولا يفتح أي صفقة خارج هذا الوقت لاكن لم اتمكن من ذلك
إستخدمت كود إكسبريت Scalp_net_v1.3.2_tf (مرفق)
هكذا
كود PHP://--------- int Order = SIGNAL_NONE; ************************************** Work Time ***********************************************************************
if (Hour()>=FromHourTrade && Hour()<=ToHourTrade) Order = SIGNAL_BUY; ///////////////////////////////////////---- #define SIGNAL_BUY 1
if (Hour()>=FromHourTrade && Hour()<=ToHourTrade) Order = SIGNAL_SELL; ///////////////////////////////////////---- #define SIGNAL_SELL 2
كود PHP:if(B<5000&&B_Previous>5000 && Order == SIGNAL_BUY){//------- A :p
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
PlaySound("Alert.wav");
}//------------------------------- A
//------------------------------------------------------------
if(S<5000&&S_Previous>5000 && Order == SIGNAL_SELL){ //-------- B
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
} //--------------- B
وبعد 100 نقطة > ينتقل إلى 0.3 وهكذا
وشيء أخير أيضا لو تكرمت طريقة أو كود تحديد الربح اليومي يعني بعد تحقيق 20 نقطة من مجمل الصفقات مثلا في اليوم يتوقف عن العمل حتى بداية اليوم الجديد
أرجو اني لم أثقل عليك أستاذي الكريم وجزاك الله خيراآخر تعديل بواسطة cher90 ، 28-01-2012 الساعة 01:11 AM
- 28-01-2012, 06:41 AM #1565
قمت بإضافة الدوال ولكن يظهر عندي خطئان لم أستطع إصلاحهما
هل هذا الكودكود:if(HideSL)SL=0; if(HideTP)TP=0;
كود:if(HideSL&&StopLoss>0) { CloseBuyOrdersHiddenSL();CloseSellOrdersHiddenSL(); } if(HideTP&&TakeProfit>0) { CloseBuyOrdersHiddenTP();CloseSellOrdersHiddenTP(); }
- 28-01-2012, 06:56 AM #1566
- 28-01-2012, 02:02 PM #1567
اخى مستر دولار
لديا سؤال اذا سمحت
كيف اقوم بتعريف فيبوناتشى فى لغة البرمجة
فانا اريد تعريف Fibonacci Expansion
فمثلا اذا كان السعر اعلى من مستوى 100 يقوم بالشراء ولو اقل من مستوى 100 يقوم بالبيع
- 28-01-2012, 02:19 PM #1568السلام عليكم ورحمة الله وبركاته
سؤال برمجي للأستاذ مستر دولار
أنا برمجت اكسبيرت بسيط يقوم بفتح صفقتين احداهما بيع والاخرى شراء وهدف كل منهما 20 نقطة ومن غير ستوب لوز
ثم عرفت دالة لغلق الصفقة عندما يعكس السعر 20 نقطة (يعني كأني عملت ستوب لوز 20 نقطة)
المشكلة عند تشغيل هذا الاكسبيرت مثلا على يوم 14/11/2011 يفتح الاكسبيرت صفقتان بيع+شراء ولكن لا يتم تفعيل أمر غلق صفقة الشراء بعد عكس السعر لأسفل بينما يتم تفعيل أمر غلق صفقة البيع عندما يعكس السعر لأعلى
وهذا هو كود البرنامج
////////////////////////////////////////////////////////////
double TP,B,S;
int Magicnumber1=123456;
int Magicnumber2=123457;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double Lot,F;
F=AccountEquity()/AccountBalance();
Comment(F*100,"--",AccountEquity(),"--",AccountBalance());
Lot=NormalizeDouble(AccountFreeMargin()/25000,1);
TP=200;
if(MyOrdersTotal(Magicnumber1)==0)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,Ask+TP*Point ,"l",Magicnumber1,0,Green);
B=Ask;
}
if(MyOrdersTotal(Magicnumber2)==0)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,0,0,Bid-TP*Point,"l",Magicnumber2,0,Green);
S=Bid;
}
if(Ask<=B-TP*Point)
{
CloseOrders(Magicnumber1);
}
if(Bid>=S+TP*Point)
{
CloseOrders(Magicnumber2);
}
//////////////////////////////////////////////////////////////////////
return(0);
}
//+------------------------------------------------------------------+
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
//+------------------------------------------------------------------+
int CloseOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt > 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
///////////////////////////////////////////////
- 28-01-2012, 03:01 PM #1569
- 28-01-2012, 09:18 PM #1570
راجع الإكسبرت المرفق وإستخدم منه فلتر التوقيت والمضاعفات
بالنسبه لتحديد الربح اليومي فسوف تحتاج إلى عمل داله لمعرفة الربح اليومي بالنقاط مثال :
كود PHP:double profitpoints(){
double ProfitPips;
for(int i=OrdersTotal();i>0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&OrderMagicNumber()==MagicNumber&&OrderOpenTime()>iTime(Symbol(),1440,0)){
if(OrderType()==OP_SELL)ProfitPips+=(OrderOpenPrice()-OrderClosePrice());
if(OrderType()==OP_BUY)ProfitPips+=(OrderClosePrice()-OrderOpenPrice());
}
if(OrderOpenTime()<iTime(Symbol(),1440,0))return(ProfitPips/Point);
}
return(ProfitPips/Point);
}
كود PHP:if(profitpoints()<20)
- 28-01-2012, 09:33 PM #1571
- 28-01-2012, 09:34 PM #1572
- 28-01-2012, 09:52 PM #1573
- 28-01-2012, 10:34 PM #1574
شكرا جزيلا أخي اسامه على تعبك معي .
أنا لم افهم اخي لماذا يجب أن تكون القيمه صفر في هذا الكود كما أخبرتنيكود:if(HideSL)SL=0; if(HideTP)TP=0;
يعني لو اردت هدف الصفقه مثلا 10 نقاط و الإستوب 10 نقاطو أردتهما مخفيان سوف اجعل الكود هكذا
كود:extern int BreakEven=0; extern int movestopto=0; extern bool HideSL=true; extern int StopLoss=10; extern bool HideTP=true; extern int TakeProfit=10; extern int TrailingStop=0; extern int TrailingStep=0; extern int MagicNumber=2533;
كود:if(StopLoss==0||HideSL){SL=0;}else{SL=Ask-StopLoss*point;} if(TakeProfit==0||HideTP){TP=0;}else{TP=Ask+TakeProfit*point;}
كود:if(HideSL)SL=0; if(HideTP)TP=0;
- 28-01-2012, 10:43 PM #1575
وعليكم السلام ورحمة الله وبركاته
لماذا جعلت عدد الصفقات -1
كود PHP:int total = OrdersTotal()-1;
فسوف يصبح 2 - 1 = 1
ثم يبدأ في البحث عن الصفقات بالرقم 1 أي سيبحث عن صفقه واحده فقط
كود PHP:for (int cnt = total ; cnt > 0 ; cnt--)
وإذا أغلقت صفقه فسوف يبقى صفقه واحده فسوف يصبح معنى
كود PHP:int total = OrdersTotal()-1;
بالتالي لن يتم تنفيذ الحلقه أساسا
قم بتعديله إجعلها
كود PHP:int total = OrdersTotal();
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM