Индикатор на который ни кто не обращает внимание. - страница 3 12345 Новый комментарий Victor Nikolaev 2011.05.05 18:21 #21 supergiz: Чё создавать то идею? она уже есть)). Эксперт надо сделать, который будет открыватся по сигналам rsi и двух MA. Не стоит эта идея выеденного яйца. (особенно в подобной реализации). Поправил индикатор и понял что от него надо держаться подальше [Удален] 2011.05.05 18:25 #22 а вот чё я своими кривыми руками и опытом програмирования 3 дня, сделал. Файлы: a_sidus.mq4 4 kb [Удален] 2011.05.05 18:26 #23 Скачай, потести на периоде пол года. [Удален] 2011.05.05 18:26 #24 Или больше. [Удален] 2011.05.05 18:27 #25 Vinin: Не стоит эта идея выеденного яйца. (особенно в подобной реализации). Поправил индикатор и понял что от него надо держаться подальше Это же недолго. просто по тестеру прогони. [Удален] 2011.05.05 18:29 #26 В этом эксперте можно поставить лот равным 0.1 даже при депо в 50 баксов.supergiz: Это же недолго. просто по тестеру прогони. В этом эксперте можно поставить лот равным 0.1 даже при депо в 50 баксов. [Удален] 2011.05.05 18:49 #27 Андрей Кирилёв. Pavel Pavlov 2011.05.05 19:50 #28 О! А я как раз его сейчас потрошу и заодно учу MQl4 =) Pavel Pavlov 2011.05.05 19:54 #29 supergiz: а вот чё я своими кривыми руками и опытом програмирования 3 дня, сделал. А что значит: Low[1]-offset*Point High[1]+offset*Point ? Pavel Pavlov 2011.05.05 20:00 #30 На основе сидуса и Moving Average Simple Только я еще учусь и даже не знаю, что значит ... Low[1]-offset*Point High[1]+offset*Point ... и тут один ордер закрывает другой (без TP и SL) //+------------------------------------------------------------------+ //| Moving Average+Идея Сидус.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #define MAGICMA 20110505 extern double Lots = 0.1; extern double MaximumRisk = 0.02; extern double DecreaseFactor = 3; extern double MovingPeriodFast = 5; extern double MovingPeriodSlow = 12; extern double RSIPeriod = 21; //+------------------------------------------------------------------+ //| 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() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); //---- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- return lot size if(lot<0.1) lot=0.1; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { double FastMA; double SlowMA; double RsiSig=0; int res; int sigCurrent=0; int sigPrevious=0; double pipdiffCurrent=0; double pipdiffPrevious=0; //---- go trading only for first tiks of new bar if(Volume[0]>1) return; //---- get Moving Average FastMA=iMA(NULL,0,MovingPeriodFast,0,MODE_EMA,PRICE_CLOSE,0); SlowMA=iMA(NULL,0,MovingPeriodSlow,0,MODE_EMA,PRICE_CLOSE,0); RsiSig=iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0); pipdiffCurrent=(FastMA-SlowMA); Comment("pipdiffCurrent = "+pipdiffCurrent+" "); if (pipdiffCurrent>0 && RsiSig>50) { sigCurrent = 1; //Up } else if (pipdiffCurrent<0 && RsiSig<50) { sigCurrent = 2; //Down } //---- sell conditions if(sigCurrent == 2) {res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); return;} //---- buy conditions if(sigCurrent == 1) {res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);return;} //---- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double FastMA; double SlowMA; double RsiSig=0; int sigCurrent=0; int sigPrevious=0; double pipdiffCurrent=0; double pipdiffPrevious=0; //---- go trading only for first tiks of new bar if(Volume[0]>1) return; //---- get Moving Average FastMA=iMA(NULL,0,MovingPeriodFast,0,MODE_EMA,PRICE_CLOSE,0); SlowMA=iMA(NULL,0,MovingPeriodSlow,0,MODE_EMA,PRICE_CLOSE,0); RsiSig=iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 0); pipdiffCurrent=(FastMA-SlowMA); Comment("pipdiffCurrent = "+pipdiffCurrent+" "); if (pipdiffCurrent>0 && RsiSig>50) { sigCurrent = 1; //Up } else if (pipdiffCurrent<0 && RsiSig<50) { sigCurrent = 2; //Down } //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- check order type if(OrderType()==OP_BUY) { if(sigCurrent == 2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White); break; } if(OrderType()==OP_SELL) { if(sigCurrent == 1) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); break; } } //---- } //+------------------------------------------------------------------+ //| 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(); //---- } //+------------------------------------------------------------------+ 12345 Новый комментарий
Чё создавать то идею? она уже есть)). Эксперт надо сделать, который будет открыватся по сигналам rsi и двух MA.
Не стоит эта идея выеденного яйца. (особенно в подобной реализации). Поправил индикатор и понял что от него надо держаться подальше
Не стоит эта идея выеденного яйца. (особенно в подобной реализации). Поправил индикатор и понял что от него надо держаться подальше
Это же недолго. просто по тестеру прогони.
Это же недолго. просто по тестеру прогони.
В этом эксперте можно поставить лот равным 0.1 даже при депо в 50 баксов.
а вот чё я своими кривыми руками и опытом програмирования 3 дня, сделал.
А что значит:
?На основе сидуса и Moving Average Simple
Только я еще учусь и даже не знаю, что значит ...
... и тут один ордер закрывает другой (без TP и SL)