![]() |
رد: دورة تعليم برمجة الاكسبريت
السلام عليكم حاولت ابرمج اكسبيرات لي مؤشر RIS وشروط الشراء والبيع هي قطع خط 50 في البيع و الشراء ولكن عندي مشكلة في الجورنال في الامر OrderSend
الكود [PHP]extern int StopLoss=250; extern int TakeProfit=250; extern double Lot=0.1; extern int Magic=15000; int point; int digits; int Q; //+------------------------------------------------------------------+ //| 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; } return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double Ris1,Ris2; double SL,TP; Ris1=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,1); Ris2=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,2); if(Ris1>50&&Ris2<50&&OrdersTotal()==0) { if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;} if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;} OrderSend(Symbol(),OP_BUY,Lot,Ask,Q*3,SL,TP,"EA",M agic,0,Green); } if(Ris1<50&&Ris2>50&&OrdersTotal()==0) { if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;} if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;} OrderSend(Symbol(),OP_SELL,Lot,Bid,Q*3,SL,TP,"EA", Magic,0,Red); } } return(0);[/PHP] علما عند مسح كود تعريف الهدف والاستوب لوس وجعل الاستوب والهدف في الدلة OrderSend يشتغل الاكسبيرات بدون مشاكل مثال علي الكود [PHP]OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask+250*Point, Ask-250*Point,"EA",Magic,0,Green);[/PHP] :1 (88): |
رد: دورة تعليم برمجة الاكسبريت
صورة من الخطا في الجورنال
http://www.fx-arabia.com/vb/uploaded...1365920515.png |
رد: دورة تعليم برمجة الاكسبريت
:1 (104)::1 (88):
|
رد: دورة تعليم برمجة الاكسبريت
1 مرفق
السلام عليكم اخي مصطفي عندي اكسبيرات لا يشتغل علي منصة الخمس ارقام ياريت يتم التعديل فية وشكرا مرفق الاكسبيرات
|
رد: دورة تعليم برمجة الاكسبريت
اقتباس:
|
رد: دورة تعليم برمجة الاكسبريت
اقتباس:
لا تقبل انزال اوامر مع تحديد الهدف والخسارة مسبقا الحل انك تنزل الامر بدون هدف ولا وقف خسارة ثم تغير الهدف ووقف الخسارة |
رد: دورة تعليم برمجة الاكسبريت
اقتباس:
مثلا لم تحدد كم عقد يمكن ان يفتح الاكسبريت فيقوم بفتح صفقات لا تنتهي |
رد: دورة تعليم برمجة الاكسبريت
اقتباس:
مثلا يمكن معرفة اخر صفقة اغلقة اما رابحة او خاسرة بعدة طرق من بين هته الطرق مراجعة ربح الصفقة ان كان سالب يعني ان الصفقة خسرت |
رد: دورة تعليم برمجة الاكسبريت
اقتباس:
|
رد: دورة تعليم برمجة الاكسبريت
اقتباس:
بما ان الموضوع تعليمي ساريك طريقة حذف الاخطاء احسن اولا استعمل هذه الدالة لفتح اي صفقة لكي ترتاح من مشاكل ECN [PHP] int open(int ty,double lot,double prc,int pof,int sll) { double sl=0,tp=0; color clr; bool modi; string T;double pr; if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT) { if(sll>0){sl=prc-(sll*point);}else{sl=0;} if(pof>0){tp=prc+(pof*point);}else{tp=0;} clr=Green; T="Ask "; pr=NormalizeDouble(Ask,Digits); } if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT) { if(sll>0){sl=prc+(sll*point);}else{sl=0;} if(pof>0){tp=prc-(pof*point);}else{tp=0;} clr=Red; T="Bid"; pr=NormalizeDouble(Bid,Digits); } int tik=OrderSend(Symbol() ,ty ,lot ,NormalizeDouble(prc,Digits) ,10 ,0 ,0 ,"" ,MagicNumber ,0 ,clr); string t; if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(t y==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT"; if(tik>0) { if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,D igits),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true; if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));} Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits)); } else { Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD)); } ////// return(tik); } [/PHP] مثلا لو تريد فتح عملية BUY اكتب فقط [PHP] open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ; [/PHP] |
الساعة الآن 06:25 AM |
Powered by vBulletin® Copyright ©2000 - 2025
جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com