النتائج 5,056 إلى 5,070 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 06-04-2014, 10:16 PM #5056
- 07-04-2014, 10:31 PM #5057
في البداية أنت إستخدمت الدالتين start و OnTick في الإكسبرت وهذا خطأ
فيجب أن تستخدم واحده فقط في هذه الحاله فالداله start كأن ليس لها وجود
بالنسبه للشرط
كود PHP:if(true==false&&FiveDigitBroker) PipValue=10;
أما بالنسبه للخطئ الرئيسي لديك
كود PHP:for (int i=1; i<=20; i++)
{
double LineB=ObjectGet("Bi"+i,OBJPROP_PRICE1);
double LineS=ObjectGet("Si"+i,OBJPROP_PRICE1);
//+---OR
/*double LineB=ObjectGet("B"+i,OBJPROP_PRICE1);
double LineS=ObjectGet("S"+i,OBJPROP_PRICE1);*/
//+---OR
/*double LineB=ObjectGet("B+i",OBJPROP_PRICE1);
double LineS=ObjectGet("S+i",OBJPROP_PRICE1);*/
//+---OR
/*double LineB=ObjectGet("Bi",OBJPROP_PRICE1);
double LineS=ObjectGet("Si",OBJPROP_PRICE1);*/
//+---OR
/*double LineB=ObjectGet("Bi+i",OBJPROP_PRICE1);
double LineS=ObjectGet("Si+i",OBJPROP_PRICE1);*/
}
if((Open[0]<=LineB&&Close[0]>=LineB)||(Open[0]<=LineS&&Close[0]>=LineS))
{
LimitOpenOrdersB();
LimitOpenOrdersS();
}
ليصبح
كود PHP:void TechnicalAnalysis()
{
for (int i=1; i<=20; i++)
{
double LineB=ObjectGet("Bi"+i,OBJPROP_PRICE1);
double LineS=ObjectGet("Si"+i,OBJPROP_PRICE1);
//+---OR
/*double LineB=ObjectGet("B"+i,OBJPROP_PRICE1);
double LineS=ObjectGet("S"+i,OBJPROP_PRICE1);*/
//+---OR
/*double LineB=ObjectGet("B+i",OBJPROP_PRICE1);
double LineS=ObjectGet("S+i",OBJPROP_PRICE1);*/
//+---OR
/*double LineB=ObjectGet("Bi",OBJPROP_PRICE1);
double LineS=ObjectGet("Si",OBJPROP_PRICE1);*/
//+---OR
/*double LineB=ObjectGet("Bi+i",OBJPROP_PRICE1);
double LineS=ObjectGet("Si+i",OBJPROP_PRICE1);*/
if((Open[0]<=LineB&&Close[0]>=LineB)||(Open[0]<=LineS&&Close[0]>=LineS))
{
LimitOpenOrdersB();
LimitOpenOrdersS();
}
}
}
- 07-04-2014, 10:32 PM #5058
- 07-04-2014, 11:57 PM #5059
- 09-04-2014, 05:33 AM #5060
- 10-04-2014, 04:25 PM #5061
السلام عليكم
هذا الاكسبيرت يعطي تنبية عند توفر شروط البيع والشراء
لكنة لا يفتح صفقات
كود:#property copyright "Abukareem" #property link "Abukareem" extern double StopLoss = 60; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); else return(-sells); } //---------------------------------------------------------------------------------------------------------------------------------------------------------------+++ void CheckForOpen() { double ma11,ma12,ma13,ma14,ma15,ma16,ma17,ma18,ma19,ma20,ma21,ma22,ma23,ma24,ma25; double sl,tp; RefreshRates(); ma11=iCustom(NULL,0,"SuperTrend",10,0,0); ma12=iCustom(NULL,0,"SuperTrend",10,0,1); ma13=iCustom(NULL,0,"SuperTrend",10,0,2); ma14=iCustom(NULL,0,"TraderWawasan HA",240,0,1); ma15=iCustom(NULL,0,"TraderWawasan HA",240,1,1); ma16=iCustom(NULL,0,"TraderWawasan HA",240,3,1); ma17=iCustom(NULL,0,"TraderWawasan HA",240,4,1); ma18=iCustom(NULL,0,"TraderWawasan MACD 2",0,2,1); ma19=iCustom(NULL,0,"TraderWawasan MACD 2",0,3,1); ma20=iCustom(NULL,0,"TraderWawasan MACD",0,2,1); ma21=iCustom(NULL,0,"TraderWawasan MACD",0,3,1); ma22=iCustom(NULL,0,"TraderWawasan HADM",0,0,1); ma23=iCustom(NULL,0,"TraderWawasan HADM",0,1,1); ma24=iCustom(NULL,0,"TraderWawasan HADM",0,2,1); ma25=iCustom(NULL,0,"TraderWawasan HADM",0,3,1); //---- sell conditions if(Minute()<=1 && Close[2]>ma13 && Close[0]<ma11 && ma14>ma15 && ma14>ma17 && ma16>ma15 && ma16>ma17 && ma19<0 && ma21<0 && ma22>ma23 && ma22>ma25 && ma24>ma23 && ma24>ma25) { if (ma11==2147483647.00000000)sl=(Bid+StopLoss*Point); else sl=MathCeil(ma11/Point)*Point; Alert("SELL "+Symbol()," StopLoss ="+sl); return; } //---- buy conditions if(Minute()<=1 && Close[2]<ma13 && Close[0]>ma11 && ma15>ma14 && ma15>ma16 && ma17>ma14 && ma17>ma16 && ma18>0 && ma20>0 && ma23>ma22 && ma23>ma24 && ma25>ma22 && ma25>ma24) { if (ma11==2147483647.00000000)sl=(Bid-StopLoss*Point); else sl=MathCeil(ma11/Point)*Point; Alert("BUY "+Symbol()," StopLoss ="+sl); return; } //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++ } void CheckForClose() { double DI11,DI12,DI13,DI14,Var1,Var2,ma14,ma15,ma16,ma17; RefreshRates(); Var1=iCustom(NULL,0,"Stokastik",13,0,1); Var2=iCustom(NULL,0,"Stokastik",13,0,2); ma14=iCustom(NULL,0,"TraderWawasan HA",240,0,0); ma15=iCustom(NULL,0,"TraderWawasan HA",240,1,0); ma16=iCustom(NULL,0,"TraderWawasan HA",240,3,0); ma17=iCustom(NULL,0,"TraderWawasan HA",240,4,0); if(OrderType()==OP_BUY) { if (Var2>Var1 && ma14>ma15 && ma14>ma17 && ma16>ma15 && ma16>ma17) Alert("Close Orders"); } if(OrderType()==OP_SELL) { if (Var2<Var1 && ma15>ma14 && ma15>ma16 && ma17>ma14 && ma17>ma16) Alert("Close Orders"); } } //---------------------------------------------------------------------------------------------------------------------------------------------------------------++ //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //---- } //+-------------------------------------------------------------------------------------------------------------------------------------------------------------++
كود:#property copyright "Abukareem" #property link "Abukareem" extern double Lot = 0.1; extern double StopLoss = 700; extern int TakeProfit = 400; extern int MagicNumber = 12345; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); else return(-sells); } //---------------------------------------------------------------------------------------------------------------------------------------------------------------+++ void CheckForOpen() { double ma11,ma12,ma13,ma14,ma15,ma16,ma17,ma18,ma19,ma20,ma21,ma22,ma23,ma24,ma25; double sl,tp; RefreshRates(); ma11=iCustom(NULL,0,"SuperTrend",10,0,0); ma12=iCustom(NULL,0,"SuperTrend",10,0,1); ma13=iCustom(NULL,0,"SuperTrend",10,0,2); ma14=iCustom(NULL,0,"TraderWawasan HA",240,0,1); ma15=iCustom(NULL,0,"TraderWawasan HA",240,1,1); ma16=iCustom(NULL,0,"TraderWawasan HA",240,3,1); ma17=iCustom(NULL,0,"TraderWawasan HA",240,4,1); ma18=iCustom(NULL,0,"TraderWawasan MACD 2",0,2,1); ma19=iCustom(NULL,0,"TraderWawasan MACD 2",0,3,1); ma20=iCustom(NULL,0,"TraderWawasan MACD",0,2,1); ma21=iCustom(NULL,0,"TraderWawasan MACD",0,3,1); ma22=iCustom(NULL,0,"TraderWawasan HADM",0,0,1); ma23=iCustom(NULL,0,"TraderWawasan HADM",0,1,1); ma24=iCustom(NULL,0,"TraderWawasan HADM",0,2,1); ma25=iCustom(NULL,0,"TraderWawasan HADM",0,3,1); //---- sell conditions if(Minute()<=1 && Close[2]>ma13 && Close[0]<ma11 && ma14>ma15 && ma14>ma17 && ma16>ma15 && ma16>ma17 && ma19<0 && ma21<0 && ma22>ma23 && ma22>ma25 && ma24>ma23 && ma24>ma25) { if (ma11==2147483647.00000000)sl=(Bid+StopLoss*Point); else sl=MathCeil(ma11/Point)*Point; OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+StopLoss,Bid-TakeProfit,"Abukareem",MagicNumber,0,Red); } //---- buy conditions if(Minute()<=1 && Close[2]<ma13 && Close[0]>ma11 && ma15>ma14 && ma15>ma16 && ma17>ma14 && ma17>ma16 && ma18>0 && ma20>0 && ma23>ma22 && ma23>ma24 && ma25>ma22 && ma25>ma24) { if (ma11==2147483647.00000000)sl=(Bid-StopLoss*Point); else sl=MathCeil(ma11/Point)*Point; OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-StopLoss,Ask+TakeProfit,"Abukareem",MagicNumber,0,Blue); } //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++ } void CheckForClose() { double DI11,DI12,DI13,DI14,Var1,Var2,ma14,ma15,ma16,ma17; RefreshRates(); Var1=iCustom(NULL,0,"Stokastik",13,0,1); Var2=iCustom(NULL,0,"Stokastik",13,0,2); ma14=iCustom(NULL,0,"TraderWawasan HA",240,0,0); ma15=iCustom(NULL,0,"TraderWawasan HA",240,1,0); ma16=iCustom(NULL,0,"TraderWawasan HA",240,3,0); ma17=iCustom(NULL,0,"TraderWawasan HA",240,4,0); if(OrderType()==OP_BUY) { if (Var2>Var1 && ma14>ma15 && ma14>ma17 && ma16>ma15 && ma16>ma17) Alert("Close Orders"); } if(OrderType()==OP_SELL) { if (Var2<Var1 && ma15>ma14 && ma15>ma16 && ma17>ma14 && ma17>ma16) Alert("Close Orders"); } } //---------------------------------------------------------------------------------------------------------------------------------------------------------------++ //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //---- } //+-------------------------------------------------------------------------------------------------------------------------------------------------------------++
- 10-04-2014, 10:07 PM #5062
- 11-04-2014, 10:49 AM #5063
بارك الله فيك مستر دولار وجعله الله في ميزان حسناتك وعفر الله لك ولوالديك
ولا تنسانى في تكملة الدورة التعليمية لتعلم البرمجة بلغة MQL4
فنحن والله ننتظرك بشغف
جعلك الله في عون اخوانك دائما وزادك من علمه
- 12-04-2014, 09:25 PM #5064
- 12-04-2014, 11:01 PM #5065
بارك الله فيك وفي رزقك وفي اهلك
- 13-04-2014, 05:52 PM #5066
السلام عليكم أستاذي الكريم مستر دولار
تحية طيبة وبعد
أستاذي الكريم قمت ببرمجة اكسبيرت بالمنتدى وواجهتنا مشكلة ليست لدي خبرة فيها وهي تتعلق بحسابات السنت
أرجو فضلا وكرما مراجعة مشاركة صاحب الموضوع على الرابط التالي :
https://forum.arabictrader.com/t1942...ml#post2806648
وفقنا الله وإياكم
لدي استفسار برمجى بالمشاركة القادمة أرجو المساعدة الكريمة كما تعودنا منك فضلا لا أمرا
فأنت google بالنسبة لنا ما شاء الله تبارك الله
- 13-04-2014, 06:26 PM #5067
تحياتي مستر دولار وبعد :
أريد أن أحدد المدة الزمنية بين فتح صفقة وصفقة أخرى لا يقل عن 30 ثانية (على جميع الصفقات على جميع العملات)
مثال :
لدينا اكسبيرت مفعل على 25 عملة، كل له ماجيك نمبر خاص به
الفترة التي تفصل بين دخول صفقة وصفقة أخرى لا يقل عن 30 ثانية وهو شرط يتم معاينته على جميع الأزواج وليس لكل زوج
كي نتفادى تحقق دخول صفقتين في وقت واحد (أقل من 30 ثانية)
تحية ود وتقدير
- 14-04-2014, 09:14 AM #5068
اهلا حسن ، تفضل دالة ترجع بالوقت لآخر صفقة على المنصة
كود PHP:datetime LastOrderOpenTimee(){ for(int i=OrdersTotal()-1; i>=0; i--){ if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { return(OrderOpenTime()); } } return(0);}
كود PHP:if((Time[0]-LastOrderOpenTimee())<(0.5*60)) return;
- 14-04-2014, 09:55 AM #5069
السلام عليكم مبرمجين واعضاء ومشرفين المنتدى
هذا الاكسبيرت يعطي تنبية للشراء والبيع
لكنه لا يدخل صفقات . الرجاء توضيح كيف الغي التنبية واجعلة يدخل صفقات
وكذلك به تنبية modify order . اريد ان الغي التنبيهات واحولها لاوامر تنفيذ
بارك الله فيكم جميعا
كود:#property copyright "Abukareem" #property link "abukareem" //#include <Debug.mqh> extern int MaxSL = 1100; extern int MinSL = 400; extern int MinMoveValue = 200; extern double BBMaxOpenOrderDeviation = 1.5; extern double BBSLDeviation = 1.0; extern double BBScalpingDeviation = 3.0; extern int SEFCPeriod = 12; int buys=0; int sells=0; int ticket = -1; // valid when one ticket is opened double orderSL; double orderTP; #define SLIPPAGE 2 #define ORDER_COMMENT "FPSS" bool CalculateOpenOrders(string symbol) { buys=0; sells=0; for (int i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) break; if (OrderCloseTime() != 0) continue; if (StringFind(OrderComment(), ORDER_COMMENT) < 0) continue; // if for tester only, all orders are ours if (OrderSymbol()==Symbol()) { if (OrderType()==OP_BUY) buys++; if (OrderType()==OP_SELL) sells++; ticket = OrderTicket(); orderSL = OrderStopLoss(); orderTP = OrderTakeProfit(); } } if (buys > 0 && sells > 0) { Print("WARNING: opened both buy and sell orders"); ticket = -1; } return (buys>0 || sells>0); } datetime lastOrderCandle = 0; void DoOpenOrder(int type, string typeS, double price, double sl, double tp) { if (lastOrderCandle == Time[0]) { return; // to protect Order/SL, Order/SL during one candle } lastOrderCandle = Time[0]; Alert("Trend change signalized, open "+typeS+" order, symbol: "+Symbol()+", price: "+price+", stoploss: "+sl, ", tp: "+tp + ", Comment: "+ORDER_COMMENT); if (!IsTesting()) return; int ot = OrderSend(Symbol(), type, MarketInfo(Symbol(), MODE_MINLOT), price, SLIPPAGE, sl, tp, ORDER_COMMENT, 0, 0, Yellow); if (ot < 0) Print(GetLastError()); } void DoCloseOrder(int type, string typeS, double price) { static datetime lastCloseCandle = 0; static int lastCloseTicket = -1; if (Time[0] == lastCloseCandle && lastCloseTicket == ticket) return; lastCloseTicket = ticket; lastCloseCandle = Time[0]; lastOrderCandle = 0; Alert("Trend change signalized, close "+typeS+" orders. Close price: "+price); if (!IsTesting()) return; for (int i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) break; if (OrderType() == type) { if (!OrderClose(OrderTicket(), OrderLots(), price, SLIPPAGE, Orange)) { Print("OrderClose", GetLastError()); } } } } void DoModifyOrder(int type, string typeS, double sl, double tp) { //Debug("Modif1", ticket, type, sl, tp, orderSL, orderTP); if (ticket < 0) return; double minMove = Point*MinMoveValue; if (MathAbs(sl-orderSL) < minMove && MathAbs(tp-orderTP) < minMove) return; // if (lastOrderCandle == Time[0]) return; // do not modify in order period, ne have higher TP when (Ask/Bid+deviation) // lastOrderCandle = Time[0]; // modify SL/TP once per period ?? Alert("Modify order: ", typeS, ", Move SL: ", sl, ", TP: ", tp); if (!IsTesting()) return; bool res = OrderModify(ticket, OrderOpenPrice(), sl, tp, 0, Yellow); //Debug("Modify", type, ticket, sl, tp, res); } int init() { //DebugOpen("", "FPS.dbg"); return(0); } void deinit() { //DebugClose(); } int start() { if (Bars<100) { return(0); // not enough data } // test for signal arrow, current signal, indicator has Signal=1 to draw arrows int BBBuySignal = 0; int BBSellSignal = 0; double sl; sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 2 /*buy arrow*/, 1); if (sl != EMPTY_VALUE) { // buy arrow is at the lower band BBBuySignal++; // and the trend go on at leas in one sample, i.e. filter case when close price won't reach previous one a tall if (Close[0] > Close[1]) { BBBuySignal++; } } else { sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 3 /*sell arrow*/, 1); if (sl != EMPTY_VALUE) { BBSellSignal++; if (Close[0] < Close[1]) { BBSellSignal++; } } } if (sl == EMPTY_VALUE) { sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 0 /*buffer*/, 1); // previous sample not to be so strict if (sl == EMPTY_VALUE) { sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 1 /*buffer*/, 1); } } double middle = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 6 /*middle trend */, 0); double bbWidth = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 7 /*width */, 0); // double tp = MathMax(BBScalpingDeviation*bbWidth, Point*MaxSL); double tp = BBScalpingDeviation*bbWidth; //Debug("middle/stp", sells, buys, BBBuySignal, BBSellSignal, Bid, middle, bbWidth, sl, tp, MathAbs(Bid-sl), MathAbs(Bid-sl) <= Point*MaxSL, MathAbs(Bid-sl) >= Point*MinSL, MathAbs(Bid-middle)<= BBMaxOpenOrderDeviation*bbWidth); // trend detection may be anothe criterion bool Bullish = iCustom(Symbol(), Period(), "SEFC084", SEFCPeriod, 1/* bull*/, 1) > 0; // is not bull then must be bear if (CalculateOpenOrders(Symbol())) { if ((Bid > sl /* in tester is applied on SL but has effect in manual mode */|| BBBuySignal >0) && sells > 0) { DoCloseOrder(OP_SELL, "SELL", Ask); sells = 0; } if ((Bid < sl || BBSellSignal >0) && buys > 0) { DoCloseOrder(OP_BUY, "BUY", Bid); buys = 0; } double sl2; if (buys == 1) { if (MathAbs(Bid-sl) < Point*MinSL) { sl2 = orderSL; } else { sl2 = MathMax(orderSL, sl); } DoModifyOrder(OP_BUY, "BUY", sl2, middle + tp); } if (sells == 1) { if (MathAbs(Bid-sl) < Point*MinSL) { sl2 = orderSL; } else { sl2 = MathMin(orderSL, sl+Ask-Bid); } DoModifyOrder(OP_SELL, "SELL", sl2, middle - tp + Ask-Bid); } } if (MathAbs(Bid-sl) <= Point*MaxSL && // do not open order when deviation is too high and price is already far from band MathAbs(Bid-sl) >= Point*MinSL && // price is back in channel or channel is too narrow MathAbs(Bid-middle)<= BBMaxOpenOrderDeviation*bbWidth // price is not too far, bounce danger ) { if (BBBuySignal>1 && Bullish && buys == 0) { DoOpenOrder(OP_BUY, "BUY", Ask, sl, middle + tp); } else if (BBSellSignal>1 && !Bullish && sells == 0) { DoOpenOrder(OP_SELL, "SELL", Bid, sl + Ask-Bid, middle - tp + Ask-Bid); } } return(0); }
- 14-04-2014, 02:16 PM #5070
شكرا على المساعدة الكريمة
وسؤال آخر لو سمحت
كيف يمكن أن أجعل الاكسبيرت ان لا يفتح أكثر من 20 صفقة في اليوم الواحد
عملت اول جزء كالتالي :
كود PHP://+------------------Limit Open All Orders--------------------------------+
int LimitOpenAllOrders1()
{
int count;
for (int i=OrdersTotal()-1; i>=0; i--)
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
if(OrderType()==OP_SELL&&OrderType()==OP_BUY)
{
count++;
}
return(count);
}
int LimitOpenAllOrders2()
{
int count;
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
if(OrderType()==OP_SELL&&OrderType()==OP_BUY)
{
count++;
}
return(count);
}
//+------------------Open Order1 CONDITIONS--------------------------------+
void Technical()
{
if ((LimitOpenAllOrders1()+LimitOpenAllOrders2())<30)
{
//////
}
}
بمعنى آخر كل يوم لا يفتح أكثر من 20 صفقة إجمالية على جميع العملات
جزاك الله خيراآخر تعديل بواسطة kira-h ، 14-04-2014 الساعة 02:43 PM
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM