Quote:
Originally Posted by tiger_wong
Hello,
I notice that you want to use BBStop as your indicator in the EA.
From my experience, the syntax should be
Trend = iCustom(NULL,0, "BBands_Stop_v1", Length, Deviation, MoneyRisk, 1, 1);
while Trend > 0 it was downtrend (bearish)
while Trend < 0 it was uptrend (bullish)
hope this can help.
|
Hi!! Also I use BBands stop but I've modified it. I've written an EA that call this indicators but it's dosen't work fine. The modified BBands draw an histogram and I want that while the histogram is green buy is enable and viceversa. here is the code that I've writeen to open position. Attaced is the code of BBands modified. Any help?
PHP Code:
double Trend = iCustom(NULL,0, "BBands-1", 20, 2, 1, 0, 1);
double Trend1 = iCustom(NULL,0, "BBands-1", 20, 2, 1, 1, 1);
if (Trend > 0){buy=1;sell=0;}
if (Trend1> 0) {buy=0;sell=1;}
if(TimeDayOfYear(TimeCurrent())!=DayOfLastBuyTrade && Ask==buystart && buy==1){
ticket=OrderSend(Symbol(),OP_BUY,getLotSize(),buystart,2,buystart-sl,buystart+tp,"EA4",MagicNumber,0,CLR_NONE);
DayOfLastBuyTrade=TimeDayOfYear(TimeCurrent());
if(ticket > 0)
{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalAlert){Alert("EA4 Opened Buy on ",Symbol()," at ",OrderOpenPrice());}}
}
else
Print("Error opening BUY order : ", GetLastError());
}
else if(TimeDayOfYear(TimeCurrent())!=DayOfLastSellTrade && Bid==sellstart && sell==1){
ticket=OrderSend(Symbol(),OP_SELL,getLotSize(),sellstart,2,sellstart+sl,sellstart-tp,"EA4",MagicNumber,0,CLR_NONE);
DayOfLastSellTrade=TimeDayOfYear(TimeCurrent());
if(ticket > 0)
{
if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)){
Print("SELL order opened : ", OrderOpenPrice());
if (SignalAlert){Alert("EA4 Opened Sell on ",Symbol()," at ",OrderOpenPrice());}}
}
else
Print("Error opening SELL order : ", GetLastError());
}
Code of BBANDS-MOdified:
PHP Code:
//+------------------------------------------------------------------+
//| BBands--.mq4 |
//| |
//|
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007."
#property link "http://www.website.com"
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_color4 Red
#property indicator_color5 Green
#property indicator_color6 Red
//---- input parameters
extern int Length=20; // Bollinger Bands Period
double Deviation=2; // Deviation was 2
double MoneyRisk=1.00; // Offset Factor
int Signal=1; // Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals;
int Line=1; // Display line mode: 0-no,1-yes
int Nbars=2000;
//---- indicator buffers
double UpTrendBuffer[];
double DownTrendBuffer[];
double UpTrendSignal[];
double DownTrendSignal[];
double UpTrendLine[];
double DownTrendLine[];
extern bool SoundON=true;
bool TurnedUp = false;
bool TurnedDown = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexBuffer(0,UpTrendBuffer);
SetIndexBuffer(1,DownTrendBuffer);
SetIndexBuffer(2,UpTrendSignal);
SetIndexBuffer(3,DownTrendSignal);
SetIndexBuffer(4,UpTrendLine);
SetIndexBuffer(5,DownTrendLine);
SetIndexStyle(0,DRAW_NONE,0,1);
SetIndexStyle(1,DRAW_NONE,0,1);
SetIndexStyle(2,DRAW_NONE,0,1);
SetIndexStyle(3,DRAW_NONE,0,1);
SetIndexStyle(4,DRAW_HISTOGRAM,1,4);
SetIndexStyle(5,DRAW_HISTOGRAM,1,4);
SetIndexArrow(0,159);
SetIndexArrow(1,159);
SetIndexArrow(2,108);
SetIndexArrow(3,108);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
short_name="BBands-1";
IndicatorShortName(short_name);
SetIndexLabel(0,"UpTrend Stop");
SetIndexLabel(1,"DownTrend Stop");
SetIndexLabel(2,"UpTrend Signal");
SetIndexLabel(3,"DownTrend Signal");
SetIndexLabel(4,"UpTrend Line");
SetIndexLabel(5,"DownTrend Line");
//----
SetIndexDrawBegin(0,Length);
SetIndexDrawBegin(1,Length);
SetIndexDrawBegin(2,Length);
SetIndexDrawBegin(3,Length);
SetIndexDrawBegin(4,Length);
SetIndexDrawBegin(5,Length);
//----
return(0);
}
int start()
{
int i,shift,trend;
double smax[25000],smin[25000],bsmax[25000],bsmin[25000];
for (shift=Nbars;shift>=0;shift--)
{
UpTrendBuffer[shift]=0;
DownTrendBuffer[shift]=0;
UpTrendSignal[shift]=0;
DownTrendSignal[shift]=0;
UpTrendLine[shift]=EMPTY_VALUE;
DownTrendLine[shift]=EMPTY_VALUE;
}
for (shift=Nbars-Length-1;shift>=0;shift--)
{
smax[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_UPPER,shift);
smin[shift]=iBands(NULL,0,Length,Deviation,0,PRICE_CLOSE,MODE_LOWER,shift);
if (High[shift]>=smax[shift]) {trend=1;}
if (Low[shift]<=smin[shift]) {trend=-1;}
bsmax[shift]=smax[shift];
bsmin[shift]=smin[shift];
if (trend>0)
{
if (Signal>0 && UpTrendBuffer[shift]==-1.0)
{
UpTrendSignal[shift]=bsmin[shift];
UpTrendBuffer[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
if (SoundON==true && shift==0 && !TurnedUp)
{
Alert("BBands-1 going Up on ",Symbol(),"-",Period());
TurnedUp = true;
TurnedDown = false;
}
}
else
{
UpTrendBuffer[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
UpTrendSignal[shift]=-1;
}
if (Signal==2) UpTrendBuffer[shift]=0;
DownTrendSignal[shift]=-1;
DownTrendBuffer[shift]=-1.0;
DownTrendLine[shift]=EMPTY_VALUE;
}
if (trend<0)
{
if (Signal>0 && DownTrendBuffer[shift]==-1.0)
{
DownTrendSignal[shift]=bsmax[shift];
DownTrendBuffer[shift]=bsmax[shift];
if(Line>0) DownTrendLine[shift]=bsmax[shift];
if (SoundON==true && shift==0 && !TurnedDown)
{
Alert("BBands going Down on ",Symbol(),"-",Period());
TurnedDown = true;
TurnedUp = false;
}
}
else
{
DownTrendBuffer[shift]=bsmax[shift];
if(Line>0)DownTrendLine[shift]=bsmax[shift];
DownTrendSignal[shift]=-1;
}
if (Signal==2) DownTrendBuffer[shift]=0;
UpTrendSignal[shift]=-1;
UpTrendBuffer[shift]=-1.0;
UpTrendLine[shift]=EMPTY_VALUE;
}
}
return(0);
}
|