النتائج 3,541 إلى 3,555 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 28-03-2013, 05:09 PM #3541
السلام عليكم
ممكن مساعدة في دالة الغاء التنبيه في كل مرة
اي عند تحقيق الشرط يعطي تنبيه واحد فقط
برمجة مؤشر لكن كلما تحقق المطلوب يعيد تنبيه
عدة مرات
- 29-03-2013, 09:23 PM #3542
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
نعم يمكنك حفظ توقيت كل صفقه في مصفوفه
مثال
كود PHP:datetime OrdersTime[];
void SetArrayTime()
{
int newSize;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
datetime opentime=OrderOpenTime();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
newSize++;
ArrayResize(OrdersTime,newSize);
OrdersTime[newSize-1]=opentime;
}
}
}
- 29-03-2013, 09:26 PM #3543
رد:موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
كود هذا المؤشر بسيط لذلك الأسهل وضع الكود مباشرة بداخل الإكسبرت بدلا من إستدعاء المؤشر
سوف تضيف الكود
كود PHP:double LastHigh=0,LastLow=999999;
for(int i=1;i<=BarsBack;i++)
{
double HD=iHigh(NULL,TF,i);
double LD=iLow(NULL,TF,i);
if(HD>LastHigh)LastHigh=HD;
if(LD<LastLow)LastLow=LD;
}
ولا تنسى تعريف المتغيرات الخارجيه الموجوده في المؤشر
كود PHP:extern int TF=240;
extern int BarsBack=2;
- 29-03-2013, 09:28 PM #3544
رد:موضوع مخصص للأسئلة البرمجية
قم بتعريف متغير يحفظ رقم الشمعه التي أعطت التنبيه بحيث لا يتم التنبيه إلا مره واحده
مثال
كود PHP:static datetime AlertTime;
if(/*alert*/&&AlertTime!=Time[0])
{
Alert("Enter Signal");
AlertTime=Time[0];
}
- 29-03-2013, 09:58 PM #3545
- 29-03-2013, 10:46 PM #3546
- 30-03-2013, 06:32 PM #3547
- 31-03-2013, 12:24 AM #3548
- 31-03-2013, 04:54 PM #3549
رد:موضوع مخصص للأسئلة البرمجية
استاذ مستر دولار ممكن مساعدة في هذا الاكسبيرت
حيث قمة ببرمجته واضفت له التريلنج وايضا دالة
اغلاق الصفقة في حال لو ظهرة اشارة معاكسة
لكن اصبح يفتح بدل صفقة 5 صفقات في ان واحد
رغم اني قمت بتحديد عدد صفقات المسموح بها
التريلنج استوب لا يعمل وكذلك لا يغلق الصفقة في
حال تكون اشارة عكسية
كود PHP:extern double Lots = 0.1;
double point;
int digits,Q;
extern int MaxTrades = 1;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int TrailingStop=0;
extern int TrailingStep=0;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;
}
if(Digits==4)
{
point=0.0001;
}
if(Digits==3)
{
point=0.01;
}
if(Digits==5)
{
point=0.0001;
}
}
int magic=0 ;
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
//----
//----
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
t("Programmed byd"+"\n"+""+"\n"+"");
if(TrailingStop>0)MoveTrailingStop();
//////////////////////////////////////////////////
double indigreen=iCustom(0,0,"imad",1,1);
double indired=iCustom(0,0,"imad",0,1);
//////////////////////////////////////////////////
double TP,SL;
if(indigreen<10000) {
if(orderstotal()<MaxTrades)
{CloseSellOrders();}
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
//////////////////////////////////////////////////
if(indired<10000){
if(orderstotal()<MaxTrades)
{CloseBuyOrders();}
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",MagicNumber,0,Red);
}
return(0);
}
//+------------------------------------------------------------------+
void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
//////////////////////////////////////////////////
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
if (OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
//////////////////////////////////////////////////
void MoveTrailingStop()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
}
}
}
}
}
}
فقط لتعلم لا اكثر اي اني لا اعمل عليهآخر تعديل بواسطة imaddine1986 ، 31-03-2013 الساعة 04:56 PM
- 01-04-2013, 12:37 AM #3550
رد:موضوع مخصص للأسئلة البرمجية
الخطأ لديك في طريقة فتح وإغلاق الأقواس فقط عند وضع اشروط
هذا الكود
كود PHP:
if(indigreen<10000) {
if(orderstotal()<MaxTrades)
{CloseSellOrders();}
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
كود PHP:if(orderstotal()<MaxTrades)
{CloseSellOrders();}
التعديل الصحيح
كود PHP:if(indigreen<10000) {
if(orderstotal()<MaxTrades)
{
CloseSellOrders();
//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",MagicNumber,0,Blue);
}
}
- 01-04-2013, 01:17 AM #3551
- 01-04-2013, 02:29 AM #3552
السلام عليكم ممكن دالة المضاعفات بطريقة *2 وبطريقة + اللوت
يكونوا الاتنين في نفس الاكسبيرت ويتعمل ترو او فالس
- 01-04-2013, 07:08 PM #3553
- 01-04-2013, 07:12 PM #3554
- 02-04-2013, 02:20 AM #3555
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM