//+------------------------------------------------------------------+ //| wip.mq4 | //| Copyright © 2007, fxid10t@yahoo.com | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, fxid10t@yahoo.com" #property link "http://www.metaquotes.net" //internal variables double sto15s,sto60s,sto240s,sto1440s,sto10080s,sto43200s; double sto15m,sto60m,sto240m,sto1440m,sto10080m,sto43200m; double rng,sum.rng,avg.rng; string DR; int ticket,cnt,total; double profit; int MagicNumber=9876543210; extern double lots=0.01; extern double min.profit=0.05; datetime TimePrev; string Ordercomment=""; color Color; //--**-- int init() {return(0);} int deinit() {return(0);} int start() { Pivot.Plot(); //stoch signal sto15s = iStochastic(Symbol(),15,5,3,3,MODE_SMA,0,MODE_SIGNAL,0); sto60s = iStochastic(Symbol(),60,5,3,3,MODE_SMA,0,MODE_SIGNAL,1); sto240s = iStochastic(Symbol(),240,5,3,3,MODE_SMA,0,MODE_SIGNAL,1); sto1440s = iStochastic(Symbol(),1440,5,3,3,MODE_SMA,0,MODE_SIGNAL,1); /* sto10080s = iStochastic(Symbol(),10080,5,3,3,MODE_SMA,0,MODE_SIGNAL,1); sto43200s = iStochastic(Symbol(),43200,5,3,3,MODE_SMA,0,MODE_SIGNAL,1); */ //stoch main sto15m = iStochastic(Symbol(),15,5,3,3,MODE_SMA,0,MODE_MAIN,0); sto60m = iStochastic(Symbol(),60,5,3,3,MODE_SMA,0,MODE_MAIN,1); sto240m = iStochastic(Symbol(),240,5,3,3,MODE_SMA,0,MODE_MAIN,1); sto1440m = iStochastic(Symbol(),1440,5,3,3,MODE_SMA,0,MODE_MAIN,1); /* sto10080m = iStochastic(Symbol(),10080,5,3,3,MODE_SMA,0,MODE_MAIN,1); sto43200m = iStochastic(Symbol(),43200,5,3,3,MODE_SMA,0,MODE_MAIN,1); */ // total=OrdersTotal(); if(total>0) { for(cnt=0; cnt=80.0000 && profit > min.profit && sto15m > 80.0000) { OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive); return; } if(OrderComment()=="Oversold 4hr" && sto60m>=80.0000 && profit > min.profit) { OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive); return; } if(OrderComment()=="Oversold uptrend" && sto15s > 80.0000 && profit > min.profit) { OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive); return; } if(profit <= (-3.00/0.01)*lots) { OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),Olive); return; } if(sto15m >= 75.000 && profit > min.profit && OrderComment()=="") { OrderClose(OrderTicket(),OrderLots(),Bid,MarketInfo(Symbol(),MODE_SPREAD),MintCream); return; } } } if(OrderType()==OP_SELL) { profit=OrderProfit(); if(OrderComment()=="Overbought Daily" && sto240s<=20.0000 && profit > min.profit && sto15m < 20.0000) { OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet); return; } if(OrderComment()=="Overbought 4hr" && sto60m<=20.0000 && profit > min.profit) { OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet); return; } if(OrderComment()=="Overbought downtrend" && sto15s < 20.0000 && profit > min.profit) { OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet); return; } if(profit <= (-3.00/0.01)*lots) { OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),Violet); return; } if(sto15m <= 25.000 && profit > min.profit && OrderComment()=="") { OrderClose(OrderTicket(),OrderLots(),Ask,MarketInfo(Symbol(),MODE_SPREAD),MintCream); return; } } } } comments(); Ordercomment=""; Daily.Range(); if( Time[0] == TimePrev ) { return(0); } //---- Yes we have a new bar ... set TimePrev & continue TimePrev = Time[0] ; if(sto15m==0 || sto15s==0 || sto60m==0 || sto60s==0 || sto240m==0 || sto240s==0 || sto1440m==0 || sto1440s==0) {return(0);} if(sto1440s > 90.0000 && sto15m >80.0000) { Ordercomment="Overbought Daily"; Color=Red; Sell(); } if(sto1440s < 10.0000 && sto15m < 20.0000) { Ordercomment="Oversold Daily"; Color=Blue; Buy(); } /* if(sto240s > 90.0000 && sto60m > 80 && sto15m > 80.0000) { Ordercomment="Overbought 4hr"; Color=Crimson; Sell(); } sells to early if(sto240s < 10.0000 && sto60m < 20 && sto15m < 20.0000) { Ordercomment="Oversold 4hr"; Color=MediumBlue; Buy(); } buys to early*/ if( sto1440m > 20.0000 &&/* sto240s > 20.0000 && (sto1440m < sto1440s) &&*/ (sto240m < 75.0000) && sto60s > 80.0000 && sto15s > 80.0000) { Ordercomment="Overbought downtrend"; Color=OrangeRed; Sell(); } if( sto1440m < 80.0000 &&/* sto240s < 80.0000 && (sto1440m > sto1440s) &&*/ (sto240m > 25.0000) && sto60s < 20.0000 && sto15s < 20.0000) { Ordercomment="Oversold uptrend"; Color=RoyalBlue; Buy(); } /* if( sto15m > 80.0000 && sto60m > 80.0000) { Ordercomment=""; Color=DeepPink; Sell(); } if( sto15m < 20.0000 && sto60m < 20.0000) { Ordercomment=""; Color=Lime; Buy(); } */ // origional scripting if( ((sto1440s < 80 && (sto1440m > sto1440s)) || sto1440m < 10) && ( ((sto240s < 80 && (sto240m > sto240s)) || sto240m < 10) && sto60s<20 && sto15s<20) ) { // buy... Ordercomment=""; Color=Lime; Buy(); } if( ((sto1440s > 20 && (sto1440m < sto1440s)) || sto1440m > 90) && ( ((sto240s > 20 && (sto240m < sto240s)) || sto240m > 90) && sto60s>80 && sto15s>80) ) { // sell... Ordercomment=""; Color=DeepPink; Sell(); } return(0);} //+------------------------------------------------------------------+ void Buy() { ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,//Ask MarketInfo(Symbol(),MODE_SPREAD),//slippage 0,//no stoploss defined 0,//no tp defined Ordercomment,//comment MagicNumber, 0,//time expire, Color); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {Print(ticket);} else Print("Error Opening BuyStop Order: ",GetLastError()); return(0); } } void Sell() { ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,//Bid MarketInfo(Symbol(),MODE_SPREAD),//slippage 0,//no stoploss set when stop order is executed 0,//no tp defined Ordercomment, MagicNumber, 0,//time expire, Color); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {Print(ticket);} else Print("Error Opening SellStop Order: ",GetLastError()); return(0); } } void comments() { if(MarketInfo(Symbol(),MODE_SWAPLONG)>0) string swap="longs,"; else swap="shorts."; if(MarketInfo(Symbol(),MODE_SWAPLONG)<0 && MarketInfo(Symbol(),MODE_SWAPSHORT)<0) swap="your broker, :("; Comment("Last Tick: ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),"\n", "Swap favors ",swap, " Swap Long ",MarketInfo(Symbol(),MODE_SWAPLONG), ", Swap Short ",MarketInfo(Symbol(),MODE_SWAPSHORT),"\n", /*"Average Daily Range: ",NormalizeDouble(avg.rng,Digits),"\n",*/ "Current Spread: ",Ask-Bid,", Profit: ",profit,"\n", "sto15s: ",sto15s," sto15m: ",sto15m,"\n", "sto60s: ",sto60s," sto60m: ",sto60m,"\n", "sto240s: ",sto240s," sto240m: ",sto240m,"\n", "sto1440s: ",sto1440s," sto1440m: ",sto1440m,"\n", "AccountProfit() ",AccountProfit(),"\n", "AccountBalance() ",AccountBalance(),"\n", "AccountEquity() ",AccountEquity()); } double Daily.Range() { if(DR==TimeToStr(TimeCurrent(),TIME_DATE)) {return(NormalizeDouble(avg.rng,Digits));} //Print(DR," ",NormalizeDouble(avg.rng,Digits)); rng=0;sum.rng=0;avg.rng=0; for(int i=0;i=1440) {ObjectDelete(PPn); ObjectDelete(s1n); ObjectDelete(s2n); ObjectDelete(r1n); ObjectDelete(r2n); ObjectDelete(LOPS1n);ObjectDelete(LOPS2n);ObjectDelete(HOPS1n); ObjectDelete(HOPS2n); }}