النتائج 7,306 إلى 7,320 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 22-04-2016, 04:55 PM #7306
- 23-04-2016, 06:23 PM #7307
بعد البحث وجدت اكثر من داله ناقصه وبها أخطاء ولم تضبط معي حقيقةَ .
هل ممكن أحد يفيدنا عن :
دالة للتعامل مع أخر قمه وقاع لـ ZigZag
وفقكم الله
- 24-04-2016, 03:27 AM #7308
بسم الله الرحمن الرحيم
اعمل الاتي
كود:double ZigZag[2]={0,0}; int i = 0; int j = 0; while(i <= 2){ double zig = iCustom(NULL, 0, "ZigZag", 0, j) ; if( zig != 0){ ZigZag[i] = iCustom(NULL , 0, "ZigZag", 0, j); SetLines("zigzag__"+i, Time[0],ZigZag[i]) ; i++; } j++; }
ثم الدالة SetLines تستدعيها كما هو مبين في الاعلى وقد وضعتها لك فقط لتتاكد من النتيجة
كود:void SetLines(string name,datetime time, double price) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_HLINE, 0, time,price); ObjectSet(name, OBJPROP_COLOR, Yellow); } else { if(ObjectGet(name,OBJPROP_TIME1)!=time || ObjectGet(name,OBJPROP_PRICE1)!=price ) {ObjectDelete(name);} } }
- 24-04-2016, 04:44 AM #7309
- 24-04-2016, 06:25 PM #7310
بسم الله الرحمن الرحيم
ضع متغيرين عامين وسمهم ماشئت مثال
كود:double high , low ;
كود:void zigzag(){ double Zig1,Zig2,Zig3; int i = 0 , j = 0 ; while(i < 3){ if( Zig1 != 0){ Zig3=Zig2 ; Zig2=Zig1 ; } Zig1 = iCustom(NULL , 0, "ZigZag", 0, j); if(Zig1 > 0 ){ i++; } j++; } if(Zig1>Zig2){ high = Zig1 ;low = Zig2 ; }else{high = Zig2 ;low = Zig1 ;} Print("low : ",low , " high :",high) ; }
لاحظ المقارنة المتغير high ياخذ اكبر قيمة مسترجعة والعكس بالنسبة للمتغير low
ثم اذا كان اغلاق الشمعة فوق الهاي والعكس بالنسبة للو هكذا
كود:if(Close[0] > high);
- 24-04-2016, 10:42 PM #7311
واضيف لك من الشعر بيتا تتمة للموضوع ومن الاكواد الجميلة للمعلم اسامة مع بعض التصرف
دالة تعيد اخر قاع انت تختاره من المتغير shift
كود:double ZigZagLow(int shift){ int found = 0 , i = 0 ; for(i = 0 ; i < Bars ; i++){ double lo = iCustom(NULL,0,"ZigZag",0,i); if(lo !=0 && lo == Low[i]) found++ ; if(shift == found)return(lo) ; } return(lo) ; }
كود:double ZigZagHigh(int shift){ int found = 0 , i = 0 ; for(i = 0 ; i < Bars ; i++){ double hi = iCustom(NULL,0,"ZigZag",0,i); if(hi !=0 && hi == High[i]) found++ ; if(shift == found)return(hi) ; } return(hi) ; }
كود:if(Close[0] > ZigZagHigh(2)) ;
تقبل ودي
- 25-04-2016, 07:53 AM #7312
- 25-04-2016, 07:00 PM #7313
وعليكم السلام ورحمة الله وبركاته
أهم جزء هو SMTP username وهذا ستضع إيميلك
و SMTP password وهذا ستضع فيه باسوورد الإيميل
أما SMTP server فهي تختلف من كل مزود إيميل لآخر فيجب أن تتصل بهم لتعرف ما هو مزود السيرفر الخاص بهم
راجع هذا الموضوع
https://forum.arabictrader.com/t135536.html
- 25-04-2016, 07:59 PM #7314
إستفسار :
هل ممُكن ( برمجياً ) عمل trailing stop كـ ( سكربت ) وليس ( اكسبريت )
بحيث يقوم بتحريك الهدف والستوب بعد كل عدد مُعين من النقاط ؟
وهل يشترط بـ ( السكربت ) ان يكون الجهاز شغال مثل الاكسبريت او لا ؟
- 25-04-2016, 08:15 PM #7315
- 25-04-2016, 08:29 PM #7316
- 26-04-2016, 06:18 PM #7317
استاذ اسامه الكريم معلش اتعبك معاي
مرفق كود مؤشر ارسال الايميل وكود الاكسبرت واريد الدمج بينهما وليس لي خبره بالمؤشرات فلم انجح.
لو تكرمت كيف ادمج بينهما حتى يرسل الاكسبرت رسائل الى ايميلي تحتوي على معلومات الحساب .مع العلم ان ملف الDLL يوضع في مكتبة الميتاتريدر.
SMTP//smtp.mail.yahoo.com:465
كود المؤشر
كود://+------------------------------------------------------------------+//| SendAdvancedEmail.mq4 | //| Copyright 2014, Dorian Ocsovszki | //| | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, Dorian Ocsovszki" #property link "http://ocsovszki-dorian.blogspot.co.uk/2014/05/sendextendedemail-dll-function-for.html" #property version "1.00" #property strict #property indicator_chart_window #import "SendAdvancedEmail.dll" void SendAdvancedEmail(string MailFrom, string MailFromName, string MailTo, string MailCC, string MailSubject, string MailBodyContent, string MailBodyTemplate, string MailPriority, string MailAttachmentPath, string MailAttachmentName, string SMTPServer, int SMTPPort, bool SMTPEnableSSL, int SMTPTimeout, string SMTPUsername, string SMTPPassword); #import input string Separator1 = NULL; //=== SCREENSHOT SETTINGS === input string PathToScreenshots = "C:\\DATA\\%MT4DIR%\\MQL4\\Files\\"; // Path to Screenshots ( %MT4DIR%\MQL4\Files ) input int SCWidth = 1920; // Screenshot Width input int SCHeight = 1080; // Screenshot Height input string Separator2 = NULL; //=== MAIL SETTINGS === input string MailFrom = ""; // FROM: input string MailFromName = "MT4 Advanced eMail Notifier"; // FROM NAME: input string MailTo = ""; // TO: input string MailCC = ""; // CC: (Mail1;Mail2;MailN ...) input string Separator3 = NULL; //=== SMTP SETTINGS === input string SMTPServer = ""; input int SMTPPort = 587; input string SMTPUsername = ""; input string SMTPPassword = ""; int SMTPTimeout = 10000; bool SMTPEnableSSL = true; string MailSubject = "MT4 Notifier"; string MailBody = "MT4 Notifier MailBody"; string MailAttachmentPath = NULL; string MailAttachmentName = NULL; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping string SCFileNameVer1 = StringConcatenate(Symbol(), "_Period", Period(), "_", TimeYear(TimeLocal()), "-", TimeMonth(TimeLocal()), "-", TimeDay(TimeLocal()), "_", PadString(DoubleToStr(TimeHour(TimeLocal()),0),"0",2), "-", PadString(DoubleToStr(TimeMinute(TimeLocal()),0),"0",2), "-", PadString(DoubleToStr(TimeSeconds(TimeLocal()),0),"0",2), ".gif" ); if (ShootScreenShot(SCFileNameVer1)) { SendAdvancedEmailSimple("[FOREX] New Order Opened", "2014.05.18 13:38:15.738 OrderHistoryTest GBPNZD,M15: #40320001 2014.05.08 18:21:20 buy limit 2.00 GBPNZD 1.92168 0.00000 0.00000 2014.05.15 19:40:55 1.94523 0.00 0.00 0.00 cancelled 0", "C:\\DATA\\XMMT4-GBPNZD\\MQL4\\Libraries\\MailBody.html", "Normal", PathToScreenshots + SCFileNameVer1, SCFileNameVer1); } else { Print("ERROR: Screenshot failed. Email event cancelled."); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ void SendAdvancedEmailSimple(string fMailSubject, string fMailBodyContent, string fMailBodyTemplate, string fMailPriority = "Normal", string fMailAttachmentPath = NULL, string fMailAttachmentName = NULL) { SendAdvancedEmail(MailFrom, MailFromName, MailTo, MailCC, fMailSubject, fMailBodyContent, fMailBodyTemplate, fMailPriority, fMailAttachmentPath, fMailAttachmentName, SMTPServer, SMTPPort, SMTPEnableSSL, SMTPTimeout, SMTPUsername, SMTPPassword); } bool ShootScreenShot(string SCFileName) { bool status = WindowScreenShot(SCFileName,SCWidth,SCHeight,-1,-1,-1); return (status); } string PadString(string toBePadded, string paddingChar, int paddingLength) { while(StringLen(toBePadded) < paddingLength) { toBePadded = StringConcatenate(paddingChar,toBePadded); } return (toBePadded); }
كود://+------------------------------------------------------------------+//| FireStrategy_EA.mq4 | //| ENG.ABDELOUAHAB KEBICI | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "ENG.ABDELOUAHAB KEBICI" #property link "https://www.mql5.com" #property version "1.00" #property strict extern double lot=0.1; extern double lot2=0.3; extern double Increment_lot=0.4; extern int Gap=20; extern string _Use_One_Type_Order_="=====Use One Type Order====="; extern bool Use_BuyOrder=false; extern bool Use_SellOrder=false; extern string _Close_At_TotalProfit="=====Close at TotalProfit====="; extern double TotalProfit=50; extern string _UseFullHedget="=====Use Full Hedge====="; extern bool UseFullHedge=true; extern double Floating=200; extern string __="=======Time Filter========"; extern bool UseTimeFilter= true; extern int Start_Time = 6; extern int Finish_Time =21; extern string ___ooo___="================="; extern int MagicNumber=2016; double point; int digits,Q; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- if(Digits==5 || Digits==3)Q=10; else Q=1; if(Digits<4) { point=0.01; digits=2; } else { point=0.0001; digits=4; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- DeletPendOrders(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ double SL,TP,lot1,lots,Lots; void OnTick() { Comment("AccountEquity = ",AccountEquity(),"\n", "AccountBalance = ",AccountBalance(),"\n", "=============","\n", "SommeLots_Buy = ",SommeLots_Buy(),"\n", "SommeLots_Sell = ",SommeLots_Sell(),"\n", "=============","\n", "Floating = ",ProfitAllorders() ); //+------------------------------------------------------------------+ //| Time | //+------------------------------------------------------------------+ datetime Current_Time = TimeHour(TimeCurrent()); if (UseTimeFilter&&orderstotal()<1){ if (Start_Time == 0) Start_Time = 24; if (Finish_Time == 0) Finish_Time = 24; if (Current_Time == 0) Current_Time = 24; if ( Start_Time < Finish_Time ) { if ( (Current_Time < Start_Time) || (Current_Time >= Finish_Time) ) {Comment("Non-Trading Hours!");return;} } if ( Start_Time > Finish_Time ) { if ( (Current_Time < Start_Time) && (Current_Time >= Finish_Time) ){Comment("Non-Trading Hours!"); return;} } } //--- //+------------------------------------------------------------------+ //| FullHedge | //+------------------------------------------------------------------+ if(UseFullHedge==true&&SommeLots_Buy()>SommeLots_Sell()&&MathAbs(ProfitAllorders())>=Floating&&ProfitAllorders()<0){ Lots=NormalizeDouble(SommeLots_Buy(),Digits)-NormalizeDouble(SommeLots_Sell(),Digits); int ticket91000=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Red); DeletPendOrders(); return; } if(UseFullHedge==true&&SommeLots_Sell()>SommeLots_Buy()&&MathAbs(ProfitAllorders())>=Floating&&ProfitAllorders()<0){ Lots=NormalizeDouble(SommeLots_Sell(),Digits)-NormalizeDouble(SommeLots_Buy(),Digits); int ticket100001=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Blue); DeletPendOrders(); return; } //+------------------------------------------------------------------+ //| First Trades | //+------------------------------------------------------------------+ if (orderstotal()<1&&Use_BuyOrder==true&&Use_SellOrder==false){ lot1=lot; int ticket1=OrderSend(Symbol(),OP_BUY,lot1,NormalizeDouble(Ask,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Blue); } if (orderstotal()<1&&Use_SellOrder==true&&Use_BuyOrder==false){ lot1=lot; int ticket2=OrderSend(Symbol(),OP_SELL,lot1,NormalizeDouble(Bid,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Red); } //+------------------------------------------------------------------+ //| OpenNext Orders | //+------------------------------------------------------------------+ if(orderstotal()>0&&TypeLastOrder()=="buy"&&orderstotalPend_Sell()<1&&SommeLots_Buy()!=SommeLots_Sell()){ if(orderstotal()==1)lots=lot2;else lots=LastLotBuy()+Increment_lot; int ticket11=OrderSend(Symbol(),OP_SELLSTOP,lots,NormalizeDouble(OpenorderBuy()-Gap*point,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Red); } if(orderstotal()>0&&TypeLastOrder()=="sell"&&orderstotalPend_Buy()<1&&SommeLots_Buy()!=SommeLots_Sell()){ if(orderstotal()==1)lots=lot2;else lots=LastLotSell()+Increment_lot; int ticket22=OrderSend(Symbol(),OP_BUYSTOP,lots,NormalizeDouble(OpenorderSell()+Gap*point,Digits),3*Q,SL,TP,"FireStrategy",MagicNumber,0,Blue); } //+------------------------------------------------------------------+ //| Close orders at TotalProfit | //+------------------------------------------------------------------+ if(ProfitAllorders()>=TotalProfit){ CloseBuyOrders(); CloseSellOrders(); DeletPendOrders(); } //--- } //+------------------------------------------------------------------+ int orderstotal() { int cnt=0; for(int i=0;i<OrdersTotal();i++) { bool ticket1=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()!=OP_BUYSTOP&&OrderType()!=OP_SELLSTOP) { cnt++; } } return(cnt); } //*************** int orderstotalBuy() { int cnt=0; for(int i=0;i<OrdersTotal();i++) { bool ticket1=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()) { if(OrderType()==OP_BUY) cnt++; } } return(cnt); } //**** int orderstotalSell() { int cnt=0; for(int i=0;i<OrdersTotal();i++) { bool ticket2=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()) { if(OrderType()==OP_SELL) cnt++; } } return(cnt); } //***** double OpenorderBuy() { double openorderBuy=0; for(int i=0;i<=OrdersTotal();i++) { bool ticket7=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY) { openorderBuy=OrderOpenPrice(); } } return(openorderBuy); } //--------------------- double OpenorderSell() { double openorderSell=0; for(int i=0;i<=OrdersTotal();i++) { bool ticket8=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL) { openorderSell=OrderOpenPrice(); } } return(openorderSell); } //**///////// string TypeLastOrder() { string type; for(int i=0;i<=OrdersTotal();i++) { bool ticket88=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ){ if(OrderType()==OP_BUY)type="buy"; if(OrderType()==OP_SELL)type="sell"; } } return (type); } //******* double LastLotBuy() { double B=0; for(int i=0;i<=OrdersTotal();i++) { bool ticket4=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY) { B=OrderLots(); } } return(B); } //***************** double LastLotSell() { double S=0; for(int i=0;i<=OrdersTotal();i++) { bool ticket5=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL) { S=OrderLots(); } } return(S); } //--- int orderstotalPend_Buy() { int cnt=0; for(int i=0;i<OrdersTotal();i++) { bool ticket1=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()) { if(OrderType()==OP_BUYSTOP) cnt++; } } return(cnt); } //**** int orderstotalPend_Sell() { int cnt=0; for(int i=0;i<OrdersTotal();i++) { bool ticket2=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()) { if(OrderType()==OP_SELLSTOP) cnt++; } } return(cnt); } //***** double ProfitAllorders() { double ProfitAllorders=0; for(int i=0;i<=OrdersTotal();i++) { bool ticket112=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { ProfitAllorders=ProfitAllorders+OrderProfit(); } } return(ProfitAllorders); } //--- void CloseBuyOrders() { int cnt=OrdersTotal(); for(int i=cnt-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if(OrderType()==OP_BUY&&OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { bool ticketclose1=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3*Q,Red); } } } void CloseSellOrders() { int cnt=OrdersTotal(); for(int i=cnt-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if(OrderType()==OP_SELL&&OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { bool ticketclose2=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3*Q,Blue); } } } //--- void DeletPendOrders(){ int cnt=OrdersTotal(); for(int i=cnt-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if((OrderType()==OP_BUYSTOP||OrderType()==OP_SELLSTOP)&&OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { bool ticketclose1=OrderDelete(OrderTicket(),Blue) ; } } } //--- double SommeLots_Buy(){ double SLot=0; for(int i=0;i<=OrdersTotal();i++) { bool ticket133=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==OP_BUY) { SLot=SLot+OrderLots(); } } return(SLot); } //--- double SommeLots_Sell(){ double SsLot=0; for(int i=0;i<=OrdersTotal();i++) { bool ticket133=OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==OP_SELL) { SsLot=SsLot+OrderLots(); } } return(SsLot); } //*********************************
آخر تعديل بواسطة wahaab ، 26-04-2016 الساعة 06:27 PM
- 28-04-2016, 07:26 PM #7318
سلام عليكم استاذا المبرمجين
هل يوجد سطر برمجي يوضاف الى موشر لحفظ ارقام التي يرسلها الموشر على صيغة ملف اكسل
للتوضيح لا اريد OPEN او HI او LOW
اريد فقط سحب وحفظ ارقام معادلة الموشر مع تاريخ والوقت والفريم المستخدام
وشكرا
- 28-04-2016, 07:27 PM #7319
سلام عليكم استاذا المبرمجين
هل يوجد سطر برمجي يوضاف الى موشر لحفظ ارقام التي يرسلها الموشر على صيغة ملف اكسل
للتوضيح لا اريد OPEN او HI او LOW
اريد فقط سحب وحفظ ارقام معادلة الموشر مع تاريخ والوقت والفريم المستخدام
وشكرا
- 29-04-2016, 12:00 AM #7320
اخي الكريم ستستعمل الدالة iCustom() وتختار المؤشر الذي تريد
ثم بعد ذلك تستعمل الدالتين FileOpen و FileWrite لحفظ الداتا في الملف في هذا المثال اسم الملف هو data.csv
ستجده في المجلد file في نفس مسار الميتاتريد
كود://+--------------------------------------------------------------------+ //| FileWrite.mq4 | //| [email protected] | | //| | //+--------------------------------------------------------------------+ #property copyright "Copyright 2016,[email protected] " #property link "[email protected]" #property version "1.00" #property strict #property script_show_inputs int Handle = 0; int Count = 0 ; double imacd[] ; datetime dateBuffer[]; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int i ; ArraySetAsSeries(imacd,true) ; ArraySetAsSeries(dateBuffer,true) ; ResetLastError(); string txt = StringConcatenate("Time Frame : ",Period()) ; int itime = CopyTime(NULL,0,0,1000,dateBuffer) ; if(itime <= 0){ Print(" error to copy time value , code error ",GetLastError()); } ArrayResize(imacd,itime) ; Handle=FileOpen("data.csv", FILE_CSV|FILE_WRITE, ';'); for(i = 0 ; i < itime ; i++){ imacd[i] = iCustom(NULL,0,"MACD",12,26,9,MODE_MAIN,i);Count++; } if (Handle > 0) { for(i = 0 ; i < Count ; i++) FileWrite(Handle,dateBuffer[i],NormalizeDouble(imacd[i],Digits),txt) ; FileFlush(Handle); } }
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM