صباح الخير
انا احاول تعلم البرمجة لكن اواجه بعض المشاكل بسبب عدم وجود اساس برمجة لدي لكن اتمنى تجاوز المشاكل عبر مساعدة الاساتذة في المنتدى وخاصة الاستاذ اسلام .
حاولت برمجة اكسبرت افتراضي يفتح ويغلق الصفقات عبر تقاطع الموفينك و الباربوليك سار وكان كل شيء على ما يرام ويفتح ويغلق بدون مشاكل الى ان حاولت اضافة خاصية التريلنج ستوب حيث بعد اضافته ورغم عدم اعطائه لاي اخطاء في الكود يتوقف البرنامج بالكامل اول ما احاول تشغيله في التستر كما يحصل في نهاية فيديو الاستاذ اسلام ذو الاسم (درس رقم 10 من سلسلة دورة البرمجة الاحترافية على منتديات اف اكس ارابيا http://www.fx-arabia.com ) .
ارجوا من الاخوة المبرمجين المساعدة لحل هذا المشكلة.
الكود
كود:
//+------------------------------------------------------------------+ //| Byu_Sell_Day.mq4 | //| Copyright © 2007, www.****forex.net | //| http://www.****forex.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, www.****forex.net" #property link "http://www.****forex.net" extern double LotSize=0.01; extern double StopLossPips=30; extern double TakeProfitPips=30; extern int MagicNumber = 55558; extern int breakEven = 20 ; extern int TrailingStop = 30; extern int matimeframe = 240; extern int maperiod = 8; extern int mashift = 0; extern int mamethod = 0; extern int maappliedprice=0; extern int sartimeframe=240; extern double sarstep=0.02; extern double sarmaximum=0.2; extern int sarshift=0; double buySL,buyTP,selSl,selTP; double ma1,ma2,sma1,sma2,sar1,sar2; void Indicators(){ ma1 = iMA(NULL,matimeframe,maperiod,mashift,mamethod,maappliedprice,1); ma2 = iMA(NULL,matimeframe,maperiod,mashift,mamethod,maappliedprice,2); sar1 = iSAR (NULL,sartimeframe,sarstep,sarmaximum,1); sar2 = iSAR (NULL,sartimeframe,sarstep,sarmaximum,2); } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ double t; int init() { //---- double tik=MarketInfo(Symbol(),MODE_TICKSIZE); if(tik==0.00001 || tik==0.001) t=tik*10; else t=tik; //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { Indicators(); if(count(1)==0&&count(2)==0){ if(sar1 < ma1 && sar2 > ma2) { if (StopLossPips ==0)buySL =0 ; else buySL =Ask - (StopLossPips*t); if(TakeProfitPips==0)buyTP=0; else buyTP = Ask +(TakeProfitPips*t); bool x = OrderSend (Symbol(),OP_BUY,LotSize,Ask,5,buySL,buyTP,NULL,MagicNumber,0,Green); } } if(count(2)==0&&count(1)==0){ if(sar1 > ma1 && sar2 < ma2){ if(StopLossPips ==0)selSl=0; else selSl= Bid+(StopLossPips*t); if(TakeProfitPips==0)selTP=0; else selTP=Bid -(TakeProfitPips*t); bool xx = OrderSend (Symbol(),OP_SELL,LotSize,Bid,5,selSl,selTP,NULL,MagicNumber,0,Red); } } if (sar1 > ma1 && sar2 < ma2) bool g = OrderClose(OrderTicket() ,LotSize ,Bid,5,Red); if (sar1 < ma1 && sar2 > ma2) bool gg= OrderClose(OrderTicket() ,LotSize ,Ask,5,Red); if (breakEven > 0)breakeven(); if (TrailingStop > 0) Trailingstop (); //---- return(0); } //+------------------------------------------------------------------+ void breakeven () { for (int i= OrdersTotal ()-1; i >=0;i--) { if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol ()) if (OrderMagicNumber() == MagicNumber ) if (OrderType() == OP_BUY) if (Bid - OrderOpenPrice ()> breakEven*t ) if (OrderOpenPrice() > OrderStopLoss ()) bool xx= OrderModify (OrderTicket(),OrderOpenPrice (),OrderOpenPrice (),OrderTakeProfit(),0,Pink); } for (int ii= OrdersTotal()-1; ii >=0;ii--) { if (OrderSelect (ii,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol ()) if (OrderMagicNumber() == MagicNumber ) if (OrderType() == OP_SELL) if (OrderOpenPrice() - Ask > breakEven*t ) if (OrderOpenPrice() < OrderStopLoss ()) bool x= OrderModify (OrderTicket(),OrderOpenPrice (),OrderOpenPrice (),OrderTakeProfit(),0,Pink); } } void Trailingstop () { for (int i= OrdersTotal ()-1; i >=0;i--) { if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol ()) if (OrderMagicNumber() == MagicNumber ) if (OrderType() == OP_BUY) if (Bid - OrderOpenPrice ()> TrailingStop*t ) if (OrderStopLoss()< Bid- TrailingStop*t ) bool xx= OrderModify (OrderTicket(),OrderOpenPrice (), Bid - (TrailingStop*t),OrderTakeProfit(),0,CLR_NONE); } for (int ii= OrdersTotal ()-1; ii >=0;i--) { if (OrderSelect (ii,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol ()) if (OrderMagicNumber() == MagicNumber ) if (OrderType() == OP_SELL) if (OrderOpenPrice()-Ask> TrailingStop*t ) if (OrderStopLoss()> Ask+ TrailingStop*t ) bool x =OrderModify (OrderTicket(),OrderOpenPrice (), Ask + (TrailingStop*t),OrderTakeProfit(),0,CLR_NONE); } } int count(int t){ int T=0; for (int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if (OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) { if(OrderType() == OP_BUY&&t==1)T++; if(OrderType() == OP_SELL&&t==2)T++; } } } return(T); }