Ask! - page 7

 

Hi, I've attached an indicator in mq4 that alerts whenever cci<-150

It alerts in a tick by tick basis; can anyone modify it so it only alerts at close of the candle?

In this case I would only like to be alerted when cci is < -150 at the end of a 5m candle

Thanks in advance

Files:
 

ok, 2nd question, i think this one is easy:

I'm building a user indicator to alert me when price close crosses a MA

I'm using the iCustom to import the MA indicator

and then I don't know how to use the price close; i tried CLOSE and PRICE_CLOSE but with no results:

if (CLOSE?>ma1)

adxvalue= -1;

if (PRICE_CLOSE?>ma1)

adxvalue= -1;

Also, I want the alert to sound only at the end of a 5m bar and not work on a tick by tick basis: what else should I change (this question is the one in my previous post)

Thanks

 

Hi Codersguru,

Could you help me code an alert into Osma Color so that it alerts when the colors change.

Thanks

Duncan

//+------------------------------------------------------------------+

//| OsMA_color.mq4 |

//| Rafael |

//| marynarz15@wp.pl |

//+------------------------------------------------------------------+

#property copyright "Rafael"

#property link "marynarz15@wp.pl"

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

//---- indicator parameters

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---- indicator buffers

double ind_buffer1a[];

double ind_buffer1b[];

double ind_buffer2[];

double ind_buffer3[];

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(4);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexDrawBegin(0,SignalSMA);

SetIndexDrawBegin(1,SignalSMA);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,ind_buffer1a) &&

!SetIndexBuffer(1,ind_buffer1b) &&

!SetIndexBuffer(2,ind_buffer2) &&

!SetIndexBuffer(3,ind_buffer3))

Print("cannot set indicator buffers!");

//---- name for DataWindow and indicator subwindow label

IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");

//---- initialization done

return(0);

}

//+------------------------------------------------------------------+

//| Moving Average of Oscillator |

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- check for possible errors

if(counted_bars<0) return(-1);

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st additional buffer

for(int i=0; i<limit; i++)

ind_buffer2=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)

-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line counted in the 2-nd additional buffer

for(i=0; i<limit; i++)

ind_buffer3=iMAOnArray(ind_buffer2,Bars,SignalSMA,0,MODE_SMA,i);

//---- main loop

double value=0;

for(i=0; i<limit; i++)

{

ind_buffer1a=0.0;

ind_buffer1b=0.0;

value=ind_buffer2-ind_buffer3;

if (value>0) ind_buffer1a=value;

if (value<0) ind_buffer1b=value;

}

//---- done

return(0);

}

//+------------------------------------------------------------------+

 

Hi

i have an indicatore which is able to recognize the butterfly pattern but it is written for MT3 can anybody do me a favor and convert it to MQL4.

Files:
butterfly.mql  3 kb
 

i attachd two pdf.the gist of the pattern and the rules are mentioned

Files:
attachment2.pdf  141 kb
attachment1.pdf  189 kb
 

hi

hello guys,

you all may know the name of this author but never knew that

his method coded into software.

Pesavento wroted among the others this wonderful books:

* Fibonacci Ratios with Pattern Recognition

* Profitable Patterns for Stock Trading

* Astro-Cycles : Traders Viewpoint

by the way i know that ENSIGN software also have his original Pesavento Patterns study tool wich can be seen in the next link.

if someone can import it from ENSIGN to MetaTrader 4 it will be amazing.

http://www.ensignsoftware.com/help/pesavento.htm

 

hi again

i found the code for the gartley 222 pattern on two platforms.

if anybody can translate it to MetaTrade 4 it will be superb!

here are the codes :

1.TradeStation code for Gartley 222 pattern found in "Trading the Gartley 222" by Aaron Behle and Mark Conway, p. 38:

Inputs:

Length(100),

Strength(8),

Tolerance(0.10),

BullColor(Blue),

BearColor(Red);

Variables:

F1(0.618),

F2(0.786),

F3(1.27),

F4(1.618),

P1Bar(-1),

P2Bar(-1),

T1Bar(-1),

T2Bar(-1),

P1(0.0),

P2(0.0),

T1(0.0),

T2(0.0),

PTValid(False),

HLValid(False),

InZone(False),

GD(0.0),

XA(0.0),

AB(0.0),

BC(0.0),

CD(0.0),

AD(0.0),

C1(False),

C2(False),

C3(False),

C4(False),

ABdXA(0.0),

BCdAB(0.0),

CDdBC(0.0),

ADdXA(0.0),

TL1(-1),

TL2(-1),

TL3(-1),

TL4(-1),

TL5(-1),

TL6(-1);

P1Bar = SwingHighBar(1, High, Strength, Length);

P2Bar = SwingHighBar(2, High, Strength, Length);

T1Bar = SwingLowBar(1, Low, Strength, Length);

T2Bar = SwingLowBar(2, Low, Strength, Length);

If P1Bar -1 and

P2Bar -1 and

T1Bar -1 and

T2Bar -1 Then Begin

{Test for a bullish 222}

{Trough X is T2}

T2 = Low[T2Bar];

{Peak A is P2}

P2 = High[P2Bar];

{Trough B is T1}

T1 = Low[T1Bar];

{Peak C is P1}

P1 = High[P1Bar];

{D is the buy point}

GD = Low;

PTValid = P1Bar < T1Bar and T1Bar < P2Bar and P2Bar < T2Bar;

HLValid = P1 T2 and P1 > T1;

InZone = GD T2 and P2 >= Highest(High, T2Bar);

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2;

AB = P2 - T1;

BC = P1 - T1;

CD = P1 - GD;

AD = P2 - GD;

ABdXA = AB / XA; {AB should be 61.8% of XA}

C1 = ABdXA > F1 - Tolerance and ABdXA < F1 + Tolerance;

BCdAB = BC / AB; {BC should be 61.8-78.6% of AB}

C2 = BCdAB > F1 - Tolerance and BCdAB < F2 + Tolerance;

CDdBC = CD / BC; {CD should be 127-161.8% of BC}

C3 = CDdBC > F3 - Tolerance and CDdBC < F4 + Tolerance;

ADdXA = AD / XA; {AD should be 78.6% of XA}

C4 = ADdXA > F2 - Tolerance and ADdXA < F2 + Tolerance;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P2Bar], Time[P2Bar], P2);

If TL1 >= 0 Then Begin

TL_SetColor(TL1, BullColor);

TL_SetStyle(TL1, Tool_Solid);

TL_SetSize(TL1, 2);

End;

TL2 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T1Bar], Time[T1Bar], T1);

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BullColor);

TL_SetStyle(TL2, Tool_Solid);

TL_SetSize(TL2, 2);

End;

TL3 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date[P1Bar], Time[P1Bar], P1);

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BullColor);

TL_SetStyle(TL3, Tool_Solid);

TL_SetSize(TL3, 2);

End;

TL4 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD);

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BullColor);

TL_SetStyle(TL4, Tool_Solid);

TL_SetSize(TL4, 2);

End;

TL5 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD);

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BullColor);

TL_SetStyle(TL5, Tool_Dotted);

End;

TL6 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date, Time, GD);

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BullColor);

TL_SetStyle(TL6, Tool_Dotted);

End;

End;

End;

{Test for a bearish 222}

{Peak X is P2}

{Trough A is T2}

{Peak B is P1}

{Trough C is T1}

{GD is the short point}

GD = High;

PTValid = T1Bar < P1Bar and P1Bar < T2Bar and T2Bar < P2Bar;

HLValid = T1 > T2 and P1 < P2 and T1 < P1;

InZone = GD > P1 and GD < P2 and T2 <= Lowest(Low, P2Bar);

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2;

AB = P1 - T2;

BC = P1 - T1;

CD = GD - T1;

AD = GD - T2;

ABdXA = AB / XA; {AB should be 61.8% of XA}

C1 = ABdXA > F1 - Tolerance and ABdXA < F1 + Tolerance;

BCdAB = BC / AB; {BC should be 61.8-78.6% of AB}

C2 = BCdAB > F1 - Tolerance and BCdAB < F2 + Tolerance;

CDdBC = CD / BC; {CD should be 127-161.8% of BC}

C3 = CDdBC > F3 - Tolerance and CDdBC < F4 + Tolerance;

ADdXA = AD / XA; {AD should be 78.6% of XA}

C4 = ADdXA > F2 - Tolerance and ADdXA < F2 + Tolerance;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T2Bar], Time[T2Bar], T2);

If TL1 >= 0 Then Begin

TL_SetColor(TL1, BearColor);

TL_SetStyle(TL1, Tool_Solid);

TL_SetSize(TL1, 2);

End;

TL2 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P1Bar], Time[P1Bar], P1);

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BearColor);

TL_SetStyle(TL2, Tool_Solid);

TL_SetSize(TL2, 2);

End;

TL3 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date[T1Bar], Time[T1Bar], T1);

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BearColor);

TL_SetStyle(TL3, Tool_Solid);

TL_SetSize(TL3, 2);

End;

TL4 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD);

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BearColor);

TL_SetStyle(TL4, Tool_Solid);

TL_SetSize(TL4, 2);

End;

TL5 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD);

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BearColor);

TL_SetStyle(TL5, Tool_Dotted);

End;

TL6 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date, Time, GD);

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BearColor);

TL_SetStyle(TL6, Tool_Dotted);

End;

End;

End;

End;

2.Wealth-Lab code:

procedure Gartley222

(

VPFactor: float;

Tolerance: float;

Lookback: integer;

HoldBars: integer;

VolMin: integer

);

begin

var ATRValue, VP, Reversal: float;

var F1, F2, F3, F4, P1, P2, T1, T2: float;

var Bar, P1Bar, P2Bar, T1Bar, T2Bar, p: integer;

var XA, AB, BC, CD, AD, D, XD, DT, ABdXA, BCdAB, CDdBC, ADdXA: float;

var PTValid, HLValid, InZone, C1, C2, C3, C4: boolean;

var BT, BS, ST, SS: float;

{Fibonacci Constants}

F1 := 0.618;

F2 := 0.786;

F3 := 1.27;

F4 := 1.618;

InstallTimeBasedExit(HoldBars);

for Bar := Lookback to BarCount() - 1 do

begin

ApplyAutoStops(Bar);

ATRValue := ATR(Bar, Lookback);

SetShareSize( 1000 * Int( 10 / ATRValue ) );

VP := 100 * ATRValue / PriceClose(Bar);

{Find peaks and troughs}

Reversal := Int(VPFactor * VP);

P1 := Peak(Bar, #High, F1 * Reversal);

P1Bar := PeakBar(Bar, #High, F1 * Reversal);

P2 := Peak(P1Bar, #High, Reversal);

P2Bar := PeakBar(P1Bar, #High, Reversal);

T1 := Trough(Bar, #Low, F1 * Reversal);

T1Bar := TroughBar(Bar, #Low, F1 * Reversal);

T2 := Trough(T1Bar, #Low, Reversal);

T2Bar := TroughBar(T1Bar, #Low, Reversal);

{Test for a bullish 222}

{Trough X is T2}

{Peak A is P2}

{Trough B is T1}

{Peak C is P1}

{D is the buy zone}

D := PriceLow(Bar);

PTValid := (P1Bar > T1Bar) and (T1Bar > P2Bar) and (P2Bar > T2Bar);

HLValid := (P1 T2) and (P1 > T1);

InZone := (D T2);

if (MarketPosition = 0) and

(SMA(Bar, #Volume, Lookback) >= VolMin) and

(PTValid) and (HLValid) and (InZone) then

begin

XA := P2 - T2;

AB := P2 - T1;

BC := P1 - T1;

XD := P2 - (F2 * XA);

CD := P1 - XD;

AD := P2 - XD;

ABdXA := AB / XA; {AB should be 61.8% of XA}

C1 := (ABdXA > F1 - Tolerance) and (ABdXA < F1 + Tolerance);

BCdAB := BC / AB; {BC should be 61.8-78.6% of AB}

C2 := (BCdAB > F1 - Tolerance) and (BCdAB < F2 + Tolerance);

CDdBC := CD / BC; {CD should be 127-161.8% of BC}

C3 := (CDdBC > F3 - Tolerance) and (CDdBC < F4 + Tolerance);

ADdXA := AD / XA; {AD should be 78.6% of XA}

C4 := (ADdXA > F2 - Tolerance) and (ADdXA < F2 + Tolerance);

if C1 and C2 and C3 and C4 then

begin

DrawLine(P2Bar, P2, T2Bar, T2, 0, #Blue, #Solid);

DrawLine(T1Bar, T1, P2Bar, P2, 0, #Blue, #Solid);

DrawLine(P1Bar, P1, T1Bar, T1, 0, #Blue, #Solid);

DrawLine(Bar, D, P1Bar, P1, 0, #Blue, #Solid);

DrawLine(Bar, D, T1Bar, T1, 0, #Blue, #Dotted);

DrawLine(Bar, D, T2Bar, T2, 0, #Blue, #Dotted);

AnnotateBar('B', Bar, True, #Blue, 10);

BuyAtLimit(Bar, XD, 'G222 LE');

DT := F1 * CD;

BT := XD + DT;

BS := T2;

end;

end;

{Test for a bearish 222}

{Peak X is P2}

{Trough A is T2}

{Peak B is P1}

{Trough C is T1}

{D is the short zone}

D := PriceHigh(Bar);

PTValid := (T1Bar > P1Bar) and (P1Bar > T2Bar) and (T2Bar > P2Bar);

HLValid := (T1 > T2) and (P1 < P2) and (T1 < P1);

InZone := (D > P1) and (D < P2);

if (MarketPosition = 0) and

(PriceClose( Bar ) >= 5) and

(SMA(Bar, #Volume, Lookback) >= VolMin) and

(PTValid) and (HLValid) and (InZone) then

begin

XA := P2 - T2;

AB := P1 - T2;

BC := P1 - T1;

XD := T2 + (F2 * XA);

CD := XD - T1;

AD := XD - T2;

ABdXA := AB / XA; {AB should be 61.8% of XA}

C1 := (ABdXA > F1 - Tolerance) and (ABdXA < F1 + Tolerance);

BCdAB := BC / AB; {BC should be 61.8-78.6% of AB}

C2 := (BCdAB > F1 - Tolerance) and (BCdAB < F2 + Tolerance);

CDdBC := CD / BC; {CD should be 127-161.8% of BC}

C3 := (CDdBC > F3 - Tolerance) and (CDdBC < F4 + Tolerance);

ADdXA := AD / XA; {AD should be 78.6% of XA}

C4 := (ADdXA > F2 - Tolerance) and (ADdXA < F2 + Tolerance);

if C1 and C2 and C3 and C4 then

begin

DrawLine(T2Bar, T2, P2Bar, P2, 0, #Red, #Solid);

DrawLine(P1Bar, P1, T2Bar, T2, 0, #Red, #Solid);

DrawLine(T1Bar, T1, P1Bar, P1, 0, #Red, #Solid);

DrawLine(Bar, D, T1Bar, T1, 0, #Red, #Solid);

DrawLine(Bar, D, P1Bar, P1, 0, #Red, #Dotted);

DrawLine(Bar, D, P2Bar, P2, 0, #Red, #Dotted);

AnnotateBar('S', Bar, False, #Red, 10);

ShortAtLimit(Bar, XD, 'G222 SE');

DT := F1 * CD;

ST := XD - DT;

SS := P2;

end;

end;

if LastPositionActive then

begin

if MarketPosition = 1 then begin

SellAtLimit(Bar+1, BT, #All, 'G222 LX+');

SellAtStop(Bar+1, BS, #All, 'G222 LX-');

end;

if MarketPosition = -1 then begin

CoverAtLimit(Bar+1, ST, #All, 'G222 LX+');

CoverAtStop(Bar+1, SS, #All, 'G222 LX-');

end;

end;

end;

end;

Gartley222(2.0, 0.1, 20, 7, 2000000);

 

What is SMCMA and WCMA ???

Anybody Knows anything about these 2 things MA and where to get and use them for Meta Trader 4

1. SMCMA

2. WCMA

The only thing I able to know that these are some Type of MA

(Moving Averages) but where to get them and how to use them ??

bye

Zero_Forex

 

Using other currency pairs in an EA?

Does anyone know how to make an Expert Advisor check other currency pair charts to help decide if you want to do a buy or sell? For example, how could I make an EA look at the usd-chf as part of criteria to decide whether to buy or sell on the gbp-chf? I have an EA that I like so far, but I think it could be better if I could also have it written into the program to check other related pairs. Codersguru, or anyone else that can help, please let me know.

Thanks!

 
codersguru:
Hi folks,

I've got a lot of private messages asking me for helping with some pieces of code.

Here you can post your questions related to MQL4, and I'll do my best to answer them.

Hi Coder.

Is it possible to have an alert sound only once per 5 Minute bar?

Is it possible for an alert to sound only once when the condition is met?

Then switch off.

Then on the opening of the next bar to refresh the indicator ready to sound again.

Then switch off once again until the condition of 0.0005 is met again.

Then switch on again and so on......

The indicator below can sound many alerts per bar when Triggered.

See Below.

//+------------------------------------------------------------------+

//| Juice.mq4 |

//| Perky_z |

//| http://fxovereasy.atspace.com/index |

//+------------------------------------------------------------------+

#property copyright "perky"

#property link "http://fxovereasy.atspace.com/index"

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

//---- indicator parameters

extern bool DoAlerts = false;

extern int AlertFromPips = 5;

extern int Periyod=7;

extern double Level=5;

extern bool JuiceLevelsVisible = true;

extern int JuiceStartPips = 5;

extern int JuiceStepPips = 5;

extern int JuiceLevelsNumber = 4;

extern color JuiceLevelColor = Silver;

//---- indicator buffers

double OsMAUpBuffer[];

double OsMADownBuffer[];

double OsMAValue;

double currentJuiceLevel;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(2);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1);

SetIndexDrawBegin(0,Level);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);

//---- 2 indicator buffers mapping

if(!SetIndexBuffer(0,OsMAUpBuffer) &&

!SetIndexBuffer(1,OsMADownBuffer))

Print("cannot set indicator buffers!");

//---- name for DataWindow and indicator subwindow label

IndicatorShortName("Juice("+Periyod+","+Level+")");

//---- initialization done

return(0);

}

int SetLevelLines()

{

string levelLabel;

if(JuiceLevelsVisible)

{

SetLevelStyle(STYLE_DASH,1,JuiceLevelColor);

for(int i=1; i<= JuiceLevelsNumber; i++)

{

currentJuiceLevel = (JuiceStartPips + (i-1)*JuiceStepPips)*Point;

SetLevelValue(i,currentJuiceLevel);

levelLabel = "Level "+i+": "+currentJuiceLevel;

SetIndexLabel(i,levelLabel);

}

}else

{

for(i=1; i<= JuiceLevelsNumber; i++)

{

SetLevelValue(i,0.0);

}

}

}

//+------------------------------------------------------------------+

//| Moving Average of Oscillator |

//+------------------------------------------------------------------+

int start()

{

//if ( Period != 15) Alert ("Juice Is Recommended for 15 Min Chart only!!");

int limit,i;

int counted_bars=IndicatorCounted();

double Juice;

bool TurnOnAlert = true;

//---- check for possible errors

if(counted_bars<0) return(-1);

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

Level = Level*Point;

if (Period()==5 ) Level=Level/2;

SetLevelLines();

//---- main loop

for(i=0; i<limit; i++)

{

Juice=iStdDev (NULL,0,Periyod,MODE_EMA,0,PRICE_CLOSE,i)-Level;

if(Juice>0){

OsMAUpBuffer=Juice;

OsMADownBuffer=0;

}else if(Juice<0){

OsMADownBuffer=Juice;

OsMAUpBuffer=0;

}else{

OsMAUpBuffer=0;

OsMADownBuffer=0;

}

}

if (DoAlerts)

{

if (Juice > AlertFromPips*Point && Period() == 5)

{

if (TurnOnAlert)

{

Alert("Juice above ",AlertFromPips*Point," for ", Symbol());

PlaySound("Tick.wav");

TurnOnAlert = false;

}

}

else

{

TurnOnAlert = true;

}

}

//---- done

return(0);

}

//+------------------------------------------------------------------+

Your help would be greatly appreciated.

Many Thanks.

Leigh.

Reason: