النتائج 9,301 إلى 9,315 من 10278
الموضوع: موضوع مخصص للأسئلة البرمجية
- 10-08-2018, 01:35 PM #9301
السلام عليكم ورحمة الله ويركاته
لقد وجدت الحل باستخدام Global Variables
لكن هذه الاخيرة لا تشتغل على متغير نصي فقمت بالتماطل عليها ونجحت في ذلك لكن هذا الحل غير فعاب ويضيف سطور برمجية جديدة نحن في غنا عنها .. لذا اخواني اذا كان هناك حل آخر فلا تبخلو علينا وشكرا لكم
- 16-08-2018, 02:05 PM #9302
السلام عليكم مرحبا استاذ اسامه الحبيب
اتمنى انك بخير وصحه وعافيه
لك رساله عالخاص
اخوك
- 27-08-2018, 09:45 PM #9303
اخي مستر دولار العزيز
هناك مشكله واجهتني عندما اريد اغلاق شمعه الربع ساعه اعلى من قمه شمعه الساعه
مثال للتوضيح
الساعه 6:59 الربع ساعه اعلى من قمه الشمعه الساعه رتبه واحد
الساعه 7:00 الشمعه رتبه واحد للساعه سابقا اصبحت شمعه رتبه 2 مع ان اغلاق الشمعه ربع ساعه اعلى من رتبه واحد سابقا لذلك لا يعطيني تنبيه
لا ادري اذا وفقت بشرح المشكله واذا مرت عليك سابقا وما هو الحل وجزاك الله كل خير
- 29-08-2018, 03:32 PM #9304
- 29-08-2018, 06:11 PM #9305السلام عليكم ورحمة الله وبركاتةالأستاذ الفاضل أسامة بعد التحية .
لقد قمت بعمل أكسبرت يعمل بعد أخذ صفقة لها هدف وأستوب يدوى ولكن لا ينفذ الشروط أرجوا الأطلاع على الكود وتعرفنى اين الخطأ
والفكرة هى: عندما يتحقق التيك بروفت يفتح مباشرة صفقة جديدة سواء كانت بيع أو شراء
وعندما يضرب الستوب لوز يفتح صففقة مباشرة جديدة ,بمعنى اذا كانت الصفقة شراء وضربت استوب يأخذ شراء ايضا وكذلك للبيع
كود:int orderscnt(int type) { int cnt=0; for(int i =0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){ cnt++; } } } return(cnt); } double LastOrder(string info,int type=-1) { for(int i=OrdersHistoryTotal();i>=0;i--) { bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); string sy=OrderSymbol(); int ot=OrderType(), mn=OrderMagicNumber(); double pt=OrderProfit(); double sl=OrderStopLoss(); if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) { if(info=="Type")return(ot); if(info=="Profit")return(pt); else if(info=="LOSS")return(sl); } } return(0); } double order_stoploss = OrderStopLoss(); double order_takeprofit = OrderTakeProfit(); //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy(); if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell(); if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell(); } void Buy() { double ask_76 = MarketInfo(Symbol(), MODE_ASK); double bid_84 = MarketInfo(Symbol(), MODE_BID); double price=NormalizeDouble(Ask,digits); if(orderscnt(OP_BUY)<1){ if ((order_takeprofit < ask_76 + TakeProfit * point) && bid_84 - OrderOpenPrice() > VALL&&Time0!=iTime(Symbol(),0,0)){ order_stoploss =( bid_84 - StopLoss - AddPriceGap); order_takeprofit=( ask_76 + TakeProfit * point); int ticket=-1; ticket=OrderSend(Symbol(),OP_BUY,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Blue); if(ticket>-1) { bool select=OrderSelect(ticket,SELECT_BY_TICKET); bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),order_stoploss,order_takeprofit,0,Red); } if(UseSound)PlaySound("Alert.wav"); Time0=iTime(Symbol(),0,0); } } } //+---------------------------------------------------------------------------------+ void Sell() { double ask_76 = MarketInfo(Symbol(), MODE_ASK); double bid_84 = MarketInfo(Symbol(), MODE_BID); double price=NormalizeDouble(Bid,digits); if ((order_takeprofit > bid_84 - TakeProfit * point) && OrderOpenPrice() - ask_76 > VALL &&Time0!=iTime(Symbol(),0,0)) { order_stoploss =(ask_76 + StopLoss + AddPriceGap); order_takeprofit =(bid_84 - TakeProfit * point); if(orderscnt(OP_SELL)<1){ int ticket=-1; ticket= OrderSend(Symbol(),OP_SELL,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Red); if(ticket>-1) { bool select=OrderSelect(ticket,SELECT_BY_TICKET); bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red); } if(UseSound)PlaySound("Alert.wav"); Time0=iTime(Symbol(),0,0); } } }
- 29-08-2018, 07:17 PM #9306
- 29-08-2018, 09:50 PM #9307
اعتذر لك استاذ اسامة ارسلت الكود بية بعض الأخطاء البسيطة ونم نعديلها
اعتقد ان المشكلة فى دوال معرفة الربح او نوع اخر صفقة مغلقة
تحياتى لشخصك الكريم
الكود الجدبد
كود:int orderscnt(int type) { int cnt=0; for(int i =0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){ cnt++; } } } return(cnt); } double LastOrder(string info,int type=-1) { for(int i=OrdersHistoryTotal();i>=0;i--) { bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); string sy=OrderSymbol(); int ot=OrderType(), mn=OrderMagicNumber(); double pt=OrderProfit(); double sl=OrderStopLoss(); if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) { if(info=="Type")return(ot); if(info=="Profit")return(pt); else if(info=="LOSS")return(sl); } } return(0); } double order_stoploss = OrderStopLoss(); double order_takeprofit = OrderTakeProfit(); //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy(); if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell(); if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell(); } void Buy() { double ask_76 = MarketInfo(Symbol(), MODE_ASK); double bid_84 = MarketInfo(Symbol(), MODE_BID); double price=NormalizeDouble(Ask,digits); if(orderscnt(OP_BUY)<1){ if ((order_takeprofit < ask_76 + TakeProfit * point) && bid_84 - OrderOpenPrice() > VALL&&Time0!=iTime(Symbol(),0,0)){ SL =( bid_84 - StopLoss* point - AddPriceGap); TP=( ask_76 + TakeProfit * point); int ticket=-1; ticket=OrderSend(Symbol(),OP_BUY,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Blue); if(ticket>-1) { bool select=OrderSelect(ticket,SELECT_BY_TICKET); bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red); } if(UseSound)PlaySound("Alert.wav"); Time0=iTime(Symbol(),0,0); } } } //+---------------------------------------------------------------------------------+ void Sell() { double ask_76 = MarketInfo(Symbol(), MODE_ASK); double bid_84 = MarketInfo(Symbol(), MODE_BID); double price=NormalizeDouble(Bid,digits); if ((order_takeprofit > bid_84 - TakeProfit * point) && OrderOpenPrice() - ask_76 > VALL &&Time0!=iTime(Symbol(),0,0)) { SL =(ask_76 + StopLoss * point+ AddPriceGap); TP =(bid_84 - TakeProfit * point); if(orderscnt(OP_SELL)<1){ int ticket=-1; ticket= OrderSend(Symbol(),OP_SELL,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Red); if(ticket>-1) { bool select=OrderSelect(ticket,SELECT_BY_TICKET); bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red); } if(UseSound)PlaySound("Alert.wav"); Time0=iTime(Symbol(),0,0); } } }
- 30-08-2018, 06:44 AM #9308
- 30-08-2018, 08:43 PM #9309
- 30-08-2018, 09:30 PM #9310
الخطأ لديك في هذا الجزء
كود PHP:double LastOrder(string info,int type=-1)
{
for(int i=OrdersHistoryTotal();i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol();
int ot=OrderType(),
mn=OrderMagicNumber();
double pt=OrderProfit();
double sl=OrderStopLoss();
if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1))
{
if(info=="Type")return(ot);
if(info=="Profit")return(pt);
}
}
return(0);
}
double order_stoploss = OrderStopLoss();
double order_takeprofit = OrderTakeProfit();
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy();
if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy();
if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
}
- 31-08-2018, 01:15 AM #9311
أشكرك أستاذ اسامة
اعتقد ان حضرتك نسيت ان تضيف التعريف للخسارة ()OrderStopLoss وايضا تعرفها داخل دالة ()void OnTick لأن كلها Profit وهى للمكسب فقط
لأنى اريد فى حالة الخسارة أذا كانت الصفقة شراء وضربت استوب يأخذ شراء أخر مباشرة ونفس الشىء للبيع
هناك أستفسار مهم أستاذ أسامة : ()OrderProfit وهى لمعرفة الصفقة الرابحة التى أقفلت -- و() OrderTakeProfit هى معرفة قيمة السعر الموجود حاليا على الشارت لأخذ
الربح
() OrderStopLoss هل هى لمعرفة قيمة السعر الموجود على الشارت لوقف الخسارة أم لمعرفة الصفقة الخاسرة التى اقفلت
() OrderOpenPrice وهى قيمة السعر للصفقة المفتوحة حاليا
أعتذر لحضرتك لكثرة أسئلتى
الكود بعد ما اضفت تعريف الصفقات الخاسرة هل صحيح
كود:int orderscnt(int type) { int cnt=0; for(int i =0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){ cnt++; } } } return(cnt); } double LastOrder(string info,int type=-1) { for(int i=OrdersHistoryTotal();i>=0;i--) { bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); string sy=OrderSymbol(); int ot=OrderType(), mn=OrderMagicNumber(); double pt=OrderProfit(); double sl=OrderStopLoss(); if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) { if(info=="Type")return(ot); if(info=="Profit")return(pt); if(info=="LOSS")return(sl); // هذا ما تم أضافتة } } return(0); } double order_takeprofit = OrderTakeProfit(); //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy(); // وهنا ايضا if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell(); if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell(); // وهنا ايضا }
- 03-09-2018, 05:39 PM #9312
- 03-09-2018, 06:19 PM #9313
- 05-09-2018, 08:35 PM #9314
- 09-09-2018, 04:54 PM #9315
حل مشكلة التكرار
السلام عليكم
لدي اكسبريت بسيط
يعطيني اشارة اذا كان الفرق بين الهاي واللو اليومي اكبر 38 نقطة على فريم اليومي
والمسافة ما بين الموفنغ والسعر الحالي اكبر من 20 نقطة على فريم الربع ساعة
المشكلة ان الاكسبريت يرسل تنبيهات مع كل حركة للسعر
والمطلوب ان التنبيه يكون مره واحده فقط في اليوم
مع اني وضعت دالة Time[ ] ولكنها لا تعمل
اعتقد وجود خطأ في فاصله او قوس أو ما شابه
اذا تفضل أحد الاخوة بالتعديل ليكون التنبيه مره واحده فقط خلال اليوم الواحد
وشكرا جزيلا
مرفق الاكسبريت والكود
كود PHP:double iHigh[];
double iLow[] ;
extern datetime onetime = 0;
extern datetime Time0 = 0;
bool SendNotification ;
extern double EMA1 = 100;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double EMA1_M1=iMA(NULL,0,EMA1,0,1,2,1);
if ( iHigh(Symbol(),PERIOD_D1,0)- iLow(Symbol(),PERIOD_D1,0) > 0.00380 && Close[0] > (EMA1_M1+0.00200) && Time0 !=Time[0])
{ Time0=Time[0];
Print ("GBPUSD>38>20");
}
//--SendNotification
//---
}
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM