النتائج 1,561 إلى 1,575 من 10363
الموضوع: موضوع مخصص للأسئلة البرمجية
- 27-01-2012, 06:07 PM #1561
السلام عليكم ورحمة الله أستاذ اسامة
.gif)
حاولت تعديل الإكسبريت بحيث يغلق صفقة البيع عند تحقق شروط صفقة الشراء
وان يغلق صفقة الشراء عند تحقق شروط صفقة البيع
هذا هو الكود الذي أضفته
لاكن لايحدث شيء وضعت الستوب و الهدف 0 يعني يفتح صفقة شراء عند تحقق شروطها و نفس الشيء للبيعكود 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
الدوال الخاصة بإخفاء الهدف والأستوب لوز
ثم لا تنسى عندما تقوم فتح الصفقه بأن تجعل الهدف والأستوب لوز = 0كود 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");
ثم total إجعلهاكود 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
بارك الله فيك أستاذ اسامة على مساعداتك الطيبة
.gif)
حاولت حصر وقت عمل الإكسبريت يعني يعمل كل يوم من 7h صباحا حتى 23h ليلا
ولا يفتح أي صفقة خارج هذا الوقت لاكن لم اتمكن من ذلك
إستخدمت كود إكسبريت Scalp_net_v1.3.2_tf (مرفق)
هكذا
وأضفت الشرط Order == SIGNAL_BUY في شروط الدخولكود 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
و أريد أيضا من فضلك كود مضاعفات يعني كل 100 نقطة من كل الصفقات بحجم 0.1 لوت > ينتقل إلى 0.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 نقاطو أردتهما مخفيان سوف اجعل الكود هكذا
و داخل الداله ستارت تكون قيمة hidetp و ال hidesl صفر هكذاكود: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
بالتالي إذا كان عدد الصفقات 2كود PHP:int total = OrdersTotal()-1;
فسوف يصبح 2 - 1 = 1
ثم يبدأ في البحث عن الصفقات بالرقم 1 أي سيبحث عن صفقه واحده فقط
ولن يبحث عن الصفقه الأخرىكود PHP:for (int cnt = total ; cnt > 0 ; cnt--)
وإذا أغلقت صفقه فسوف يبقى صفقه واحده فسوف يصبح معنى
أي 1 - 1 = 0كود 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
الأكثر زيارة
رد مع اقتباس