| / | Форум |
|
maloma
06.06.2006 01:55
Гонял этот эксп прошлой версии. Есть глюки, но и рациональное зерно есть. Мне прислали новую версию. Проблема в том, что после компиляции без ошибок не создается ex4 файл. Помогите понять что к чему. //+------------------------------------------------------------------+ //| Farhad.mq4 | //| Copyright © 2006, Farhad Farshad | //| http://www.rahbord-investment.com //| http://farhadfarshad.Com //| This EA is optimized to work on //| GBP/JPY ... if you want the optimized //| EA s for any currency pair please //| mail me at: info@farhadfarshad.Com //| This is the first version of this EA. If //| you want the second edition (Farhad2.mq4) //| with considerably better performance mail me. // //| Enjoy a better automatic investment:) with at least 70% a month. //| //| Modified by Robert Hill to allow optimization for different currency pairs //+-----------------------------------------------------------------+ #property copyright "Copyright © 2006, Farhad Farshad" #property link "http://www.rahbord-investment.com" #include <stdlib.mqh> extern bool AccountIsMini = false; // Change to true if trading mini account extern bool MoneyManagement = false; // Change to false to shutdown money management controls. // Lots = 1 will be in effect and only 1 lot will be open regardless of equity. extern double TradeSizePercent = 5; // Change to whatever percent of equity you wish to risk. extern double Lots = 1; // you can change the lot but be aware of margin. Its better to trade with 1/4 of your capital. extern double MaxLots = 100; //+---------------------------------------------------+ //|Money Management | //+---------------------------------------------------+ //extern double stopLoss = 0; // do not use s/l at all. Take it easy man. I'll guarantee your profit :) extern int StopLossType = 1; // 1 standard StopLoss, 2 pSar, 3 ... extern double StopLoss = 10; // Maximum pips willing to lose per position. extern double TrailingStop = 8; // Change to whatever number of pips you wish to trail your position with. extern bool UseTrailingStop = true; extern int TrailingStopType = 2; // Type 1 moves stop immediately, Type 2 waits til value of TS is reached extern double FirstMove = 20; // Type 3 first level pip gain extern double TrailingStop1 = 20; // Move Stop to Breakeven extern double SecondMove = 30; // Type 3 second level pip gain extern double TrailingStop2 = 20; // Move stop to lock is profit extern double ThirdMove = 40; // type 3 third level pip gain extern double TrailingStop3 = 20; // Move stop and trail from there extern int TakeProfitType = 1; // 1 standard TakeProfit, 2 use support/resistance, 3 use fib... extern int TakeProfit = 10; // Maximum profit level achieved. recomended no more than 20 extern double MarginCutoff = 300; // Expert will stop trading if equity level decreases to that level. extern int Slippage = 3 ; // Possible fix for not getting closed Could be higher with some brokers extern color clOpenBuy = Green; //Different colors for different positions extern color clOpenSell = Red; //Different colors for different positions //+---------------------------------------------------+ //|Indicator Variables | //| Change these to try your own system | //| or add more if you like | //+---------------------------------------------------+ //Mode : 0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA //Price : 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4) // All settings are the defaults from Farhad version 1 extern bool UseMACD = true; extern int MACD_Price = 1; extern bool UseMA_Cross = false; extern int MA_SlowPeriod = 21; extern int MA_FastPeriod = 2; extern int MA_Shift = 1; extern int MA_Mode = 2; extern int MA_Price = 5; extern bool UseMomentum = true; extern int MomentumPeriod = 14; extern int MomentumPrice = 1; extern double MomentumHigh = 100; extern double MomentumLow = 100; extern bool UsePSAR = true; extern bool UseStochLevel = true; extern int Stoch_Mode = 0; extern int StochPrice = 0; // 0, 1 extern double StochHigh = 60; extern double StochLow = 35; extnt>=MomentumLow) return (false); } if (UseMA_Cross) { if (MA_Mode == 4) { maLongCurrent = LSMA(MA_SlowPeriod,MA_Price,SignalTimeFrame,SignalCandle); // maLongPrevious = LSMA(MA_SlowPeriod,MA_Price,SignalTimeFrame,SignalCandle+1); maShortCurrent = LSMA(MA_FastPeriod,MA_Price,SignalTimeFrame,SignalCandle); // maShortPrevious = LSMA(MA_FastPeriod,MA_Price,SignalTimeFrame,SignalCandle+1); } else { maLongCurrent = iMA(NULL,SignalTimeFrame,MA_SlowPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle); // maLongPrevious = iMA(NULL,SignalTimeFrame,MA_SlowPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle+1); maShortCurrent = iMA(NULL,SignalTimeFrame,MA_FastPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle); // maShortPrevious = iMA(NULL,SignalTimeFrame,MA_FastPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle+1); } // Check if MA Cross and separation is showing a sell so do not take a buy if (maShortCurrent <= maLongCurrent) return(false); } if (UseMAHighLow) { if (MA_HL_Mode == 4) { faEMA1 = LSMA(MA_HL_Period,MA_HL_BuyPrice,SignalTimeFrame,SignalCandle); } else { faEMA1=iMA(NULL,SignalTimeFrame,MA_HL_Period,0,MA_HL_Mode,MA_HL_BuyPrice,SignalCandle); } lowCurrent = iLow(NULL,SignalTimeFrame,SignalCandle); //Low Price Current if (lowCurrent<=faEMA1) return(false); } //} // Check for BUY, SELL, and CLOSE signal // isBuying = (sarCurrent<=Ask && sarPrevious>sarCurrent && momCurrent<MomentumLow && macdHistCurrent<macdSignalCurrent && stochHistCurrent<StochLow); // If we get this far all rules are met return (true); } //+------------------------------------------------------------------+ //| CheckEntryCondition | //| Check if rules are met for open of trade | //+------------------------------------------------------------------+ bool CheckEntryConditionSELL() { // calculateIndicators(); // Calculate indicators' value // Moved code here for faster running // Check each rule for false for faster return // commented out what is not used //void calculateIndicators() { // Calculate indicators' value if (UseMACD) { // Check MACD Rules macdHistCurrent = iMACD(NULL,SignalTimeFrame,12,26,9,MACD_Price,MODE_MAIN,SignalCandle); // macdHistPrevious = iMACD(NULL,SignalTimeFrame,12,26,9,MACD_Price,MODE_MAIN,SignalCandle+1); macdSignalCurrent = iMACD(NULL,SignalTimeFrame,12,26,9,MACD_Price,MODE_SIGNAL,SignalCandle); // macdSignalPrevious = iMACD(NULL,SignalTimeFrame,12,26,9,MACD_Price,MODE_SIGNAL,SignalCandle+1); if (macdHistCurrent<=macdSignalCurrent) return (false); } // Check Stochastic rules if (UseStochLevel) { stochHistCurrent = iStochastic(NULL,SignalTimeFrame,5,3,3,Stoch_Mode,StochPrice,MODE_MAIN,SignalCandle); if (stochHistCurrent<=StochHigh) return(false); } if (UseStochCross) { stochHistCurrent = iStochastic(NULL,SignalTimeFrame,5,3,3,Stoch_Mode,StochPrice,MODE_MAIN,SignalCandle); stochHistPrevious = iStochastic(NULL,SignalTimeFrame,5,3,3,Stoch_Mode,StochPrice,MODE_MAIN,SignalCandle+1); stochSignalCurrent = iStochastic(NULL,SignalTimeFrame,5,3,3,Stoch_Mode,StochPrice,MODE_SIGNAL,SignalCandle); stochSignalPrevious = iStochastic(NULL,SignalTimeFrame,5,3,3,Stoch_Mode,StochPrice,MODE_SIGNAL,SignalCandle+1); if (stochHistCurrent <= StochHigh) return(false); if (stochSignalCurrent <= stochHistCurrent) return(false); if (stochSignalPrevious >= stochHistPrevious) return(false); } if (UsePSAR) { // Check Paraboloc SAR rules sarCurrent = iSAR(NULL,SignalTimeFrame,0.02,0.2,SignalCandle); // Parabolic Sar Current if (sarCurrent< Bid) return (false); sarPrevious = iSAR(NULL,SignalTimeFrame,0.02,0.2,SignalCandle+1); //Parabolic Sar Previous if (sarPrevious>=sarCurrent) return (false); } if (UseMomentum) { // Check Momentum rules momCurrent = iMomentum(NULL,SignalTimeFrame,MomentumPeriod,PRICE_OPEN,SignalCandle); // Momentum Current momPrevious = iMomentum(NULL,SignalTimeFrame,MomentumPeriod,PRICE_OPEN,SignalCandle+1); // Momentum Previous if(momCurrent<=MomentumHigh) return (false); } if (UseMA_Cross) { if (MA_Mode == 4) { maLongCurrent = LSMA(MA_SlowPeriod,MA_Price,SignalTimeFrame,SignalCandle); // maLongPrevious = LSMA(MA_SlowPeriod,MA_Price,SignalTimeFrame,SignalCandle+1); maShortCurrent = LSMA(MA_FastPeriod,MA_Price,SignalTimeFrame,SignalCandle); // maShortPrevious = LSMA(MA_FastPeriod,MA_Price,SignalTimeFrame,SignalCandle+1); } else { maLongCurrent = iMA(NULL,SignalTimeFrame,MA_SlowPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle); // maLongPrevious = iMA(NULL,SignalTimeFrame,MA_SlowPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle+1); maShortCurrent = iMA(NULL,SignalTimeFrame,MA_FastPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle); // maShortPrevious = iMA(NULL,SignalTimeFrame,MA_FastPeriod,MA_Shift,MA_Mode,MA_Price,SignalCandle+1); } // Check if MA Cross and separation is showing a buy so do not take a sell if (maShortCurrent >= maLongCurrent) return(false); } if (UseMAHighLow) { if (MA_HL_Mode == 4) { faEMA3 = LSMA(MA_HL_Period,MA_HL_SellPrice,SignalTimeFrame,SignalCandle); } else { faEMA3=iMA(NULL,SignalTimeFrame,MA_HL_Period,0,MA_HL_Mode,MA_HL_SellPrice,SignalCandle); } highCurrent = iHigh(NULL,SignalTimeFrame,SignalCandle); //High price Current if (highCurrent>=faEMA3) return(false); } // Check for BUY, SELL, and CLOSE signal // isSelling = (sarCurrent>=Bid && sarPrevious<sarCurrent && momCurrent>MomentumHigh && macdHistCurrent>macdSignalCurrent && stochHistCurrent>StochHigh); // If we get this far all rules are met return (true); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { // Check if any open positions HandleOpenPositions(); TradesInThisSymbol = openPositions(); //+------------------------------------------------------------------+ //| Check if OK to make new trades | //+------------------------------------------------------------------+ // Only allow 1 trade per Symbol if(TradesInThisSymbol > 0) { return(0);} // If there is no open trade for this pair and this EA if(AccountFreeMargin() < MarginCutoff) { Print("Not enough money to trade Strategy:", ExpertName); return(0); } lotMM = GetLots(); // if(isBuying && !isSelling && !isBuyClosing && !isSellClosing) { // Check for BUY entry signal if ( CheckEntryConditionBUY() ) { OpenBuyOrder(); } // if(isSelling && !isBuying && !isBuyClosing && !isSellClosing) { // Check for SELL entry signal if (CheckEntryConditionSELL()) { OpenSellOrder(); } return(0); } //+------------------------------------------------------------------+ //| OpenBuyOrder | //| If Stop Loss or TakeProfit are used the values are calculated | //| for each trade | //+------------------------------------------------------------------+ void OpenBuyOrder() { int err,ticket; double myStopLoss = 0, myTakeProfit = 0; myStopLoss = GetStopLossBuy(StopLossType); myTakeProfit = GetTakeProfitBuy(TakeProfitType); ticket=OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,myStopLoss,myTakeProfit,ExpertName,MagicNumber,0,clOpenBuy); prtAlert ("FarhadHill : OpenBuy for " + DoubleToStr(Ask,4)); if(ticket<=0) { err = GetLastError(); Print("Error opening BUY order [" + ExpertName + "]: (" + err + ") " + ErrorDescription(err)); } } //+------------------------------------------------------------------+ //| OpenSellOrder | //| If Stop Loss or TakeProfit are used the values are calculated | //| for each trade | //+------------------------------------------------------------------+ void OpenSellOrder() { int err, ticket; double myStopLoss = 0, myTakeProfit = 0; myStopLoss = GetStopLossSell(StopLossType); myTakeProfit = GetTakeProfitSell(TakeProfitType); if (TakeProfit > 0) myTakeProfit = Bid - TakeProfit * Point; ticket=OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,myStopLoss,myTakeProfit,ExpertName,MagicNumber,0,clOpenSell); prtAlert("FarhadHill : OpenSell for " + DoubleToStr(Bid,4)); if(ticket<=0) { err = GetLastError(); Print("Error opening Sell order [" + ExpertName + "]: (" + err + ") " + ErrorDescription(err)); } } double GetTakeProfitBuy(int which) { double TP; if (which == 1) { TP = 0; if (TakeProfit > 0) TP = Ask+TakeProfit*Point; } /* Code here for later types of TakeProfit switch(which) { case 1 : TP = 0; if (TakeProfit > 0) TP = Ask+TakeProfit*Point; break; case 2 : TP = 0; if (TakeProfit > 0) TP = CalculateNextResistance(); break; } */ return(TP); } double GetTakeProfitSell(int which) { double TP; if (which == 1) { TP = 0; if (TakeProfit > 0) TP = Bid-TakeProfit*Point; } /* Code here for later types of TakeProfit switch(which) { case 1 : TP = 0; if (TakeProfit > 0) TP = Bid-TakeProfit*Point; break; case 2 : TP = 0; if (TakeProfit > 0) TP = CalculateNextSupport(); break; } */ return(TP); } double GetStopLossBuy(int which) { double SL; switch(which) { case 1 : SL = 0; if ( StopLoss > 0 ) SL = Ask - StopLoss * Point ; break; case 2 : SL = iSAR(NULL,SignalTimeFrame,0.02,0.2,SignalCandle); // Parabolic Sar Current break; // case 3 : SL = CalculateNextResistance(); // break; } return(SL); } double GetStopLossSell(int which) { double SL; if (which == 1) { SL = 0; |
|
Бесплатная Groupware для групп разработчиков Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение. |
5198 |
stringo
06.06.2006 10:24
разберёмся |
|
njel
06.06.2006 10:41
Строка 161 символ 7 псалом 4. Тут же не весь код... Как он может компилится?
|
5198 |
stringo
06.06.2006 12:38
Пропущен кусок исходного текста
extern bool UseStochLevel = true; extern int Stoch_Mode = 0; extern int StochPrice = 0; // 0, 1 extern double StochHigh = 60; extern double StochLow = 35; extnt>=MomentumLow) return (false); } if (UseMA_Cross) { if (MA_Mode == 4) { maLongCurrent = LSMA(MA_SlowPeriod,MA_Price,SignalTimeFrame,SignalCandle); Между StochLow=35; и extnt>=MomentumLow |
5198 |
stringo
08.06.2006 12:28
maloma, Вы представите весь исходный текст?
Если есть проблема с компилятором, её надо обязательно решить |
|
narvere
25.08.2008 09:04
А у тебя Виста? |
|
TheXpert
25.08.2008 10:05
maloma писал (а) >>
Гонял этот эксп прошлой версии. Есть глюки, но и рациональное зерно есть. Мне прислали новую версию. Проблема в том, что после компиляции без ошибок не создается ex4 файл. Помогите понять что к чему. В \experts перенесли? |
|
DrShumiloff
25.08.2008 10:33
Возможно, файл создается в Users\YourName\AppData\Local\VirtualStore\Program Files\...
|
|
maryan.dirtyn
07.10.2008 01:03
у меня такое било,что файл не компилировался.. оказалось.. банально нехватает места.. (логи длинние били) -) |
|
Stells
07.10.2008 08:22
maryan.dirtyn >>:
у меня такое било,что файл не компилировался.. оказалось.. банально нехватает места.. (логи длинние били) -) у меня тоже так было. как я думаю в папке experts было слишком много экспертов, после удаления части скомпилировался нужный. |
|
Zhunko
07.10.2008 11:34
Компилированный файл всегда лежит рядом с исходником. Если исходник открывается из другой директории, то и компилированный файл должен лежать в этой же директории. Работать в МТ4 он не будет, пока его не будет в соответствующей папке МТ4. |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий