//+------------------------------------------------------------------+ //| | //| Copyright © 1999-2007, MetaQuotes Software Corp. | //| http://www.metaquotes.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, ForexProf" //---- #define MAGICNUM 112116 //---- extern double StopLoss=30; extern double TakeProfit=60; extern int slippage=0; extern int shift=1; extern double Lots=0.1; extern double MaximumRisk=10; extern int mm=0; extern int Tenkan=9; extern int Kijun=26; extern int Senkou=52; //---- bool buysig,sellsig; int lastsig; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- int total=OrdersTotal(); for(int i=0;i0) 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 if (mm!=0) lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100000.0,1); else lot=Lots; //---- return lot size if(lot<0.1) lot=0.1; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForSignals() { int i=1; while(i<=Bars-1) { double chinkou1=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_CHINKOUSPAN,i); double chinkou2=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_CHINKOUSPAN,i+1); if ((chinkou1>=Open[1] && chinkou2<=Open[1]) || (chinkou1<=Open[1] && chinkou2>=Open[1])) break; i++; } double senkouAi=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,i); double senkouBi=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,i); double senkouB1=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,shift); double senkouB2=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,shift+1); double senkouB3=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,shift+2); //---- if(Open[shift+2] senkouB2 && Close[shift+1] > senkouB2 && Open[shift] > senkouB1 && Close[shift] > senkouB1 && Close[shift+1]>Open[shift+1] && Close[shift]>Open[shift] && !(chinkou1<=senkouBi && chinkou1>=senkouAi && senkouAisenkouB3 && Open[shift+1] < senkouB2 && Close[shift+1] < senkouB2 && Open[shift] < senkouB1 && Close[shift] < senkouB1 && Close[shift+1]=senkouAi && senkouAi