МГС  Московская Гигабитная Сеть
 www.umos.su info@umos.su  Выделенные линии Ве/б-Студия Хостинг Collocation
 Тарифы Вопросы и ответы Полезная информация Контакты

Методы >> Волны. Фибо. Крокодилы. Аттракторы. Нейро.

Страниц в ветке: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | (все)
Товаровед
двоечник
***

Зарегистрирован: 14/11/2005
Сообщений: 654
Нахождение: русская народная сказка
Re: Евро [re: wildmouse]
      #119875 - 21/05/2006 00:08

трёхволновое??? ээээ....
я конечно, не эллиотчик, но я там 5 насчитал...

правда, тогда 1=3... даже не знаю, можно ли так...

--------------------
жадность порождает бедность.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
wildmouse
Этот wild wild wild mouse;))
****

Зарегистрирован: 21/09/2005
Сообщений: 670
Нахождение: Минск
Re: Евро [re: Товаровед]
      #119902 - 21/05/2006 14:37 прикреплённые файлы (152 загрузок)

В ответ на :

Гудрый Мудвин писал:
я конечно, не эллиотчик, но я там 5 насчитал...




хе-хе, а что тогда здесь делаем?



Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Товаровед
двоечник
***

Зарегистрирован: 14/11/2005
Сообщений: 654
Нахождение: русская народная сказка
Re: Евро [re: wildmouse]
      #119966 - 22/05/2006 06:36 прикреплённые файлы (167 загрузок)

я ж говорю... знаю только 5 цифр и 3 буквы... не грамотный..


--------------------
жадность порождает бедность.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
shulmasha
Гость


Зарегистрирован: 17/03/2004
Сообщений: 17
Нахождение: Israel - Minsk
Re: Евро [re: Товаровед]
      #125244 - 02/07/2006 20:50

Вопрос. Может ли волна на дневном графике (первая) состаять только из одной свечи? Заранее спасибо за ответ.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Korner
Клим Чугункин
***

Зарегистрирован: 19/06/2004
Сообщений: 834
Нахождение: Угу, положение у меня графичес...
Re: Евро [re: shulmasha]
      #125488 - 04/07/2006 23:52

Может.
Некоторым дотошным умникам одной свечи бывает мало, так они мерзкие и пративные разкладывают на минутки, а там свечей как га.. ну много короче. В общим не проблема, нужны свечи наклепать не вопрос.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Неверный
Свой человек
*

Зарегистрирован: 09/07/2006
Сообщений: 113
Re: Евро [re: Korner]
      #126032 - 11/07/2006 09:59 прикреплённые файлы (158 загрузок)

1.32 по моим расчетам достигнет евро к ноябрю. Кто думает также?

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Palij
Гость


Зарегистрирован: 11/07/2006
Сообщений: 10
Нахождение: Хохланд
Re: Евро [re: Неверный]
      #126192 - 12/07/2006 11:05 прикреплённые файлы (153 загрузок)

Категорически приветствую! Я как раз думаю иначе. Картинка прилагается. Позже выложу на дэйли.
С уважением.


Редактировано Palij (12/07/2006 11:11)


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Неверный
Свой человек
*

Зарегистрирован: 09/07/2006
Сообщений: 113
Re: Евро [re: Palij]
      #126218 - 12/07/2006 15:38 прикреплённые файлы (165 загрузок)

У меня возник такой вариант потому что фигура больше напоминает пятиволновую последовательность нежели зигзаг. Если цена в очередной раз пересечет паралель 100 канала Фибоначчи, то этот вариант летит в корзину.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Неверный
Свой человек
*

Зарегистрирован: 09/07/2006
Сообщений: 113
Re: Евро [re: Palij]
      #126219 - 12/07/2006 15:41 прикреплённые файлы (177 загрузок)

А во всем остальном я с Вами согласен. (См. рисунок)

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Palij
Гость


Зарегистрирован: 11/07/2006
Сообщений: 10
Нахождение: Хохланд
Re: Евро [re: Неверный]
      #126221 - 12/07/2006 16:19

Время покажет. Пока веду сценарий изображённый выше. Просто предполагаемая волна В, являясь на данный момент трёхволновкой устраивает полностью. Прибавить сюда head-n-shoulders на monthly.
Сценарий сломается, думаю, тогда, когда цена закрепится выше 1,30.
Как предложение: спуститься на более короткие таймфреймы.
Прогулявшись по форумам, понял, что большинство трейдеров ведут евру вверх. Может стоит сделать наоборот.
Но это уже лирика

Редактировано Palij (12/07/2006 16:21)


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Неверный
Свой человек
*

Зарегистрирован: 09/07/2006
Сообщений: 113
Re: Евро [re: Palij]
      #126223 - 12/07/2006 16:56

По евр/фунт есть какие-нибудь мысли?
Я вот совсем не знаю что делать с этим боковым движением.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Palij
Гость


Зарегистрирован: 11/07/2006
Сообщений: 10
Нахождение: Хохланд
Re: Евро [re: Неверный]
      #126225 - 12/07/2006 17:16 прикреплённые файлы (177 загрузок)

Ну его, этот еврофунт. Думаю, евро вниз, но разметок нету. Вот евро на часах. Там без букв и т.д., но основная мысль, что будет пока падение локальное, а там посмотрим.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Неверный
Свой человек
*

Зарегистрирован: 09/07/2006
Сообщений: 113
Re: Евро [re: Palij]
      #126302 - 13/07/2006 15:02 прикреплённые файлы (177 загрузок)

Вот мой прогноз по евре/дол.
Если цена в ближайшее время перешагнет и не задержится на 1,2660 то это обозначит развитие нисходящего движения и если в дальнейшем падении цена пробьет сигнальную линию 1,2453 тогда ближайшая цель 1,23и ниже, а там уже без перспектив повышения, формируя таким образом таким образом зигзаг А-В-С
основного уровня с минимумом где-то 1,05.
Альтернативный сценарий куда веселее (но вероятность меньше):
в настоящее время уже сформировалась или сформируется на 1,2669 волна 2, вслед за которой начнется волна 3 вторичного уровня с окончанием на1,2968, а там уже и пятая под 1,3 зайдет. Но я сам в это с трудом верю.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Maumax
Свой человек
****

Зарегистрирован: 04/06/2006
Сообщений: 149
Re: Euro [re: Неверный]
      #126577 - 15/07/2006 05:59

Это подготовит все волны на вашей диаграмме
/*[[
Name := Elliot wave recognization
Author := Copyright В© 2004, T-1000, Lithuania
Notes := Searches for Elliot wave patterns and places markers on chart
Link := irc://irc.omnitel.net/forex
Update on every tick := Yes
Enable Alerts := Yes
Disable alert once hit := Yes
Lots := 0.1
Stop Loss := 70
Take Profit := 150
Trailing Stop := 35
]]*/


/*

An Impulse pattern moves in the direction of the underlying trend and is made up of five waves, or moves.
Each wave is labeled at its endpoint. The Elliott Wave Principle identifies an Impulse wave when:

1. Wave 2 does not fall below the starting price of wave 1.
2. Wave 3 is not the shortest wave by price movement when comparing to wave 1 and wave 5.
3. Wave 4 does not overlap the range of wave 1.

*/

Defines: MaxBars(200),RetracementBars(100),EWPeriod(10),NoisePips(30),MinTakeProfit(50),SARstep(0.0015),SARmax(0.0100);
Defines: MaxTrades(1),AntiStopLoss(0),Slippage(5),DelayedBidsTimeout(172800),BidStopPoints(60),BidLimitPoints(50),TrailingStep(10),IncrementLots(1),MinMoney(0),MiniForexMode(1);
vars: counter(0),counter2(0),ComputedPricesCount(0),StartMoney(0);
vars: EW1(0),EW2(0),EW3(0),EW4(0),EW5(0);
vars: LastEW1(0),LastEW2(0),LastEW3(0),LastEW4(0),LastEW5(0);
vars: EW0MARK(0),EW1MARK(0),EW2MARK(0),EW3MARK(0),EW4MARK(0),EW5MARK(0),EW3ORDERMARK(0),ORDERMARK(0),ORDERANGLE(0),ORDERSKIP(0),ORDERPRICE(0),ORDERCOUNT(0),MinTakeProfitPtS(0);
vars: MaxPrice(0),MinPrice(0),WaveAngle(0),tempval(0),tempval2("");
vars: EW1MARKTIME(0),EW2MARKTIME(0),EW3MARKTIME(0),EW4MARKTIME(0),EW5MARKTIME(0),EW5PRICE(0),ENTRYPRICE(0),LASTENTRYPRICE(0);
vars: EW1MARKARROW(0),EW2MARKARROW(0),EW3MARKARROW(0),EW4MARKARROW(0),EW5MARKARROW(0);
vars: EW1MARKBAR(0),EW2MARKBAR(0),EW3MARKBAR(0),EW4MARKBAR(0),EW5MARKBAR(0);
vars: MaxPriceBar(0),MinPriceBar(0),BarsShift(0),BarsCount(0),init(0),prevbars(0),CalcBarDiff(0);
vars: ParabolicSAR(0),SARAngle(0),MA(0),MA2(0),ShortMA(0),LongMA(0),TrailingStopPoint(0),Trace(0),MACD(0),ShortMACD(0),MACDAngle(0),ShortMACDAngle(0);
vars: TradingPrice(0),TotalLots(0),TradesCount(0),StartDeposit(0),BuyStopLoss(0),SellStopLoss(0),BuyBidStopLoss(0),SellBidStopLoss(0);
vars: BuyLimitStopLoss(0),SellLimitStopLoss(0),TrailingStopLoss(0),BidStopPts(0),BidLimitPts(0),OrderType(0),LastBidTime(0),BadOrder(0),CloseBadOrder(0);
vars: LastBadTime(0),OrderRecovery(0),LastOp(0),LastOldOp(0),BuyOp(0),SellOp(0),EntryTrail(0),StopLossTrail(0);
vars: Bears(0),Bulls(0),BearsAngle(0),BullsAngle(0);
vars: Pivot(0),SupportLevel1(0),SupportLevel2(0),ResistanceLevel1(0),ResistanceLevel2(0);
vars: tmpPivot(0),tmpSupportLevel1(0),tmpSupportLevel2(0),tmpResistanceLevel1(0),tmpResistanceLevel2(0);
vars: RSI(0),CCI(0),ShortRSI(0),PriceLevel(0),LastPriceLevel(0),FiboLevel(0);
vars: EWOscillator(0),EWLevel(0),ShortPeriod(0),LongPeriod(0),LastEW(0);

if Bars < MaxBars * 2 + RetracementBars + 1
then
exit;


if init = 0
then
{
EW0MARK = 0;
EW1MARK = 0;
EW2MARK = 0;
EW3MARK = 0;
EW4MARK = 0;
EW5MARK = 0;
ORDERMARK = 0;
TotalLots = Lots;
prevbars = 0;
if BidStopPts < BidStopPoints then BidStopPts = BidStopPoints;
if BidLimitPts < BidLimitPoints then BidLimitPts = BidLimitPoints;
BidStopPts = BidStopPts * Point;
BidLimitPts = BidLimitPts * Point;
StartDeposit = MinMoney;
if StartDeposit = 0 then StartMoney=Balance
else StartMoney = StartDeposit;
Print(AccountName,"(#",AccountNumber,") ",Symbol," Elliot Wave Retracement analizer loaded.");
init = 1;
}

if StopLoss > 0 then
{
BuyStopLoss=PriceAsk- StopLoss * Point;
SellStopLoss=PriceBid + StopLoss * Point;
BuyBidStopLoss = BuyStopLoss + BidstopPts;
SellBidStopLoss = SellStopLoss - BidstopPts;
BuyLimitStopLoss=PriceAsk - StopLoss * Point - BidLimitPts;
SellLimitStopLoss=PriceBid + StopLoss * Point + BidLimitPts;
}

// Adjust remaining money in loss
if Balance < StartMoney then
{
//StartMoney=Balance;
TotalLots = Lots;
}

// Check if we have automated incremental Lots calculation
if IncrementLots > 0 and (FreeMargin / StartMoney > 2) then
{
if MiniForexMode = 1 then TotalLots = Normalize(FreeMargin / StartMoney * Lots - 0.1,1);
if MiniForexMode = 0 then TotalLots = Normalize(FreeMargin / StartMoney * Lots - 1,0); // forex type account cannot have part of lots
if TotalLots < Lots then TotalLots = Lots;
}

/**************************************************** Indicators ********************************************************/
if Bars != prevbars
// Save extra CPU when making signals because we do not have new price in chart in test mode
then
{

Bears=iBearsPower(RetracementBars,MODE_HIGH,0);
Bulls=iBullsPower(RetracementBars,MODE_LOW,0);
RSI=iRSI(RetracementBars,0);
CCI=iCCI(MaxBars,0);
ShortRSI=iRSI(RetracementBars/5,0);
ParabolicSAR=iSAR(SARstep,SARmax,0);
MA=iMA(MaxBars,MODE_EMA,0);
MA2=iMA(MaxBars,MODE_SMA,0);
ShortMA=iMA(RetracementBars,MODE_EMA,0);
LongMA=iMA(MaxBars*2,MODE_LWMA,0);
MACD=iMACD(RetracementBars,MaxBars,RetracementBars,MODE_EMA,0);
ShortMACD=iMACD(RetracementBars/5,RetracementBars,RetracementBars/5,MODE_EMA,0);

MaxPriceBar = Highest (MODE_CLOSE,MaxBars+1, MaxBars*2);
MinPriceBar = Lowest (MODE_CLOSE, MaxBars+1, MaxBars*2);


if MaxPriceBar < MinPriceBar
//and EW0MARK = 0
// first Elliot Wave would be UP
then
WaveAngle = 1;

if MinPriceBar < MaxPriceBar
//and EW0MARK = 0
// first Elliot Wave would be DOWN
then
WaveAngle = 2;

MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];
if WaveAngle = 1 then FiboLevel = (MaxPrice - MinPrice) / (Open - MinPrice) * 100
else FiboLevel = (MaxPrice - MinPrice) / (MaxPrice - Open ) * 100;

//LastPriceLevel=0;

if Bars > prevbars
then
{
ORDERANGLE = 0;
Pivot=0;
SupportLevel1=0;
SupportLevel2=0;
ResistanceLevel1=0;
ResistanceLevel2=0;
LastPriceLevel=PriceLevel;

for counter=RetracementBars downto 0
Begin
MaxPriceBar = Highest (MODE_CLOSE,MaxBars+1+counter, MaxBars);
MinPriceBar = Lowest (MODE_CLOSE, MaxBars+1+counter, MaxBars);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];
/*
Pivot point (Pivot) = (H + L + C) / 3
First resistance level (R1) = (2 * P) - L
First support level (S1) = (2 * P) - H
Second resistance level (R2) = P + (R1 - S1)
Second support level (S2) = P - (R1 - S1)

H, L, C are the previous High, Low and Close.


*/

tmpPivot=(MaxPrice+MinPrice+Open[counter+MaxBars]) / 3;
tmpResistanceLevel1=(2 * tmpPivot) - MinPrice;
tmpSupportLevel1=(2 * tmpPivot) - MaxPrice;
tmpResistanceLevel2=tmpPivot + (tmpResistanceLevel1 - tmpSupportLevel1);
tmpSupportLevel2=tmpPivot - (tmpResistanceLevel1 - tmpSupportLevel1);

Pivot=Pivot + tmpPivot;
ResistanceLevel1=ResistanceLevel1 + tmpResistanceLevel1;
SupportLevel1=SupportLevel1 + tmpSupportLevel1;
ResistanceLevel2=ResistanceLevel2 + tmpResistanceLevel2;
SupportLevel2=SupportLevel2 + tmpSupportLevel2;
if counter < MaxBars
then
{
Pivot=Pivot / 2;
ResistanceLevel1=ResistanceLevel1 / 2;
SupportLevel1=SupportLevel1 / 2;
ResistanceLevel2=ResistanceLevel2 / 2;
SupportLevel2=SupportLevel2 / 2;
}
End;


if WaveAngle = 1
then
PriceLevel = (Open / Point - SupportLevel2 / Point) / (ResistanceLevel2 / Point - SupportLevel2 / Point) * 100;

if WaveAngle = 2
then
PriceLevel = -(ResistanceLevel2 / Point - Open / Point) / (ResistanceLevel2 / Point - SupportLevel2 / Point) * 100 ;


if PriceLevel >151
or PriceLevel < -151
then
{
ComputedPricesCount=Normalize(PriceLevel / 100,0);
if ComputedPricesCount < 0 then ComputedPricesCount = -ComputedPricesCount;
ComputedPricesCount=(2 + ComputedPricesCount) * MaxBars;
//Print(TimeToStr(time[shift]),": ",Symbol," Price Level is over limit:",PriceLevel," Increasing Prices Count to:",ComputedPricesCount);
if Bars <= ComputedPricesCount + MaxBars + 1
then exit;//Avoid out of range computing

ORDERANGLE = 0;
Pivot=0;
SupportLevel1=0;
SupportLevel2=0;
ResistanceLevel1=0;
ResistanceLevel2=0;

for counter=RetracementBars downto 0
Begin
MaxPriceBar = Highest (MODE_CLOSE,ComputedPricesCount+1+counter, ComputedPricesCount);
MinPriceBar = Lowest (MODE_CLOSE, ComputedPricesCount+1+counter, ComputedPricesCount);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];
/*
Pivot point (Pivot) = (H + L + C) / 3
First resistance level (R1) = (2 * P) - L
First support level (S1) = (2 * P) - H
Second resistance level (R2) = P + (R1 - S1)
Second support level (S2) = P - (R1 - S1)

H, L, C are the previous High, Low and Close.
*/

tmpPivot=(MaxPrice+MinPrice+Open[counter+ComputedPricesCount]) / 3;
tmpResistanceLevel1=(2 * tmpPivot) - MinPrice;
tmpSupportLevel1=(2 * tmpPivot) - MaxPrice;
tmpResistanceLevel2=tmpPivot + (tmpResistanceLevel1 - tmpSupportLevel1);
tmpSupportLevel2=tmpPivot - (tmpResistanceLevel1 - tmpSupportLevel1);

Pivot=Pivot + tmpPivot;
ResistanceLevel1=ResistanceLevel1 + tmpResistanceLevel1;
SupportLevel1=SupportLevel1 + tmpSupportLevel1;
ResistanceLevel2=ResistanceLevel2 + tmpResistanceLevel2;
SupportLevel2=SupportLevel2 + tmpSupportLevel2;
if counter < MaxBars
then
{
Pivot=Pivot / 2;
ResistanceLevel1=ResistanceLevel1 / 2;
SupportLevel1=SupportLevel1 / 2;
ResistanceLevel2=ResistanceLevel2 / 2;
SupportLevel2=SupportLevel2 / 2;
}
End;


if WaveAngle = 1
then
PriceLevel = (Open / Point - SupportLevel2 / Point) / (ResistanceLevel2 / Point - SupportLevel2 / Point) * 100;

if WaveAngle = 2
then
PriceLevel = -(ResistanceLevel2 / Point - Open / Point) / (ResistanceLevel2 / Point - SupportLevel2 / Point) * 100 ;

}


MoveObject("Pivot",OBJ_HLINE,Time,Pivot,Time[MaxBars],Pivot,White,1,STYLE_SOLID);
MoveObject(" ResistanceLevel2",OBJ_HLINE,Time,ResistanceLevel2,Time[MaxBars],ResistanceLevel2,Blue,1,STYLE_SOLID);
MoveObject(" SupportLevel2",OBJ_HLINE,Time,SupportLevel2,Time[MaxBars],SupportLevel2,Blue,1,STYLE_SOLID);
MoveObject(" ResistanceLevel1",OBJ_HLINE,Time,ResistanceLevel1,Time[MaxBars],ResistanceLevel1,Red,1,STYLE_SOLID);
MoveObject(" SupportLevel1",OBJ_HLINE,Time,SupportLevel1,Time[MaxBars],SupportLevel1,Red,1,STYLE_SOLID);

if MaxPriceBar < MinPriceBar
then
MoveObject("Fibo",OBJ_FIBO,Time,ResistanceLevel2,Time[MaxBars],SupportLevel2,Green,1,STYLE_DOT)
else
MoveObject("Fibo",OBJ_FIBO,Time,SupportLevel2,Time[MaxBars],ResistanceLevel2,Green,1,STYLE_DOT);

}
/*
if WaveAngle = 1
and PriceLevel > 0
and PriceLevel < 50
then
WaveAngle = 2;

if WaveAngle = 2
and PriceLevel < 0
and PriceLevel > -50
then
WaveAngle = 1;

*/
/*
if EW3MARK = 1 then
{
//Print("EW0MARK:",EW0MARK," EW1MARK:",EW1MARK," EW2MARK:",EW2MARK," EW3MARK:",EW3MARK," EW3MARKBAR=",EW3MARKBAR," EW4MARK:",EW4MARK," EW0:",EW5PRICE," EW1:",EW1," EW2:",EW2," EW3:",EW3);
//Print("EW1MARKBAR:",EW1MARKBAR," EW2MARKBAR:",EW2MARKBAR," EW3MARKBAR:",EW3MARKBAR," EW3MARKBAR=",EW3MARKBAR," EW4MARK:",EW4MARK," EW0:",EW5PRICE," EW1:",EW1," EW2:",EW2," EW3:",EW3);
Print(TimeToStr(time),
": EW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
" EW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
" EW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
" EW3=",TimeToStr(EW3MARKTIME),
" ",EW3
);
}
*/

// Reallign Elliot Wave marked bars
if EW0MARK > 0 then EW5MARKBAR = 0;
if EW1MARK > 0 then EW1MARKBAR = 0;
if EW2MARK > 0 then EW2MARKBAR = 0;
if EW3MARK > 0 then EW3MARKBAR = 0;
if EW4MARK > 0 then EW4MARKBAR = 0;
if EW5MARK > 0 then EW5MARKBAR = 0;
if EW0MARK > 0 or EW5MARK > 0 then
for counter = 0 to Bars -1
{
if EW5MARKBAR > 0 then break; // reallign finished
tempval = time[counter];

if EW5MARK = 0 and tempval = EW5MARKTIME then EW5MARKBAR = counter;
if EW1MARK > 0 and tempval = EW1MARKTIME then EW1MARKBAR = counter;
if EW2MARK > 0 and tempval = EW2MARKTIME then EW2MARKBAR = counter;
if EW3MARK > 0 and tempval = EW3MARKTIME then EW3MARKBAR = counter;
if EW4MARK > 0 and tempval = EW4MARKTIME then EW4MARKBAR = counter;
if EW5MARK > 0 and tempval = EW5MARKTIME then EW5MARKBAR = counter;
}
CalcBarDiff=(time[0]-time[Bars-1])/60/Period - Bars + 1;

if Bars < MaxBars+2
or (EW1MARK = 1 and EW1MARKBAR = 0)
or (EW2MARK = 1 and EW2MARKBAR = 0)
or (EW3MARK = 1 and EW3MARKBAR = 0)
or (EW4MARK = 1 and EW4MARKBAR = 0)
or (EW0MARK = 1 and EW5MARKBAR = 0)
or (EW5MARK = 1 and EW5MARKBAR = 0)
or EW1MARKBAR > Bars - 1
or EW2MARKBAR > Bars - 1
or EW3MARKBAR > Bars - 1
or EW4MARKBAR > Bars - 1
or EW5MARKBAR > Bars - 1
then
{
if Bars > MaxBars+2
and prevbars < Bars
then
{
//prevbars=Bars;
/*
Print("Bars:",Bars," EW1MARKBAR:",EW1MARKBAR," EW2MARKBAR:",EW2MARKBAR," EW3MARKBAR:",EW3MARKBAR," EW3MARKBAR=",EW3MARKBAR," EW4MARKBAR:",EW4MARKBAR," EW5MARKBAR:",EW5MARKBAR);
Print(TimeToStr(time),
": EW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
" EW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
" EW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
" EW3=",TimeToStr(EW3MARKTIME),
" ",EW3
);
//print(time[1]," ",time[Bars-1]," ",time[100]," ",time[1]-time[Bars-1]," ",(time[1]-time[Bars-1])/60/Period, " ", time[0] - EW5MARKTIME);
*/
if EW0MARK = 1 and EW1MARK = 0 then print("ERROR: Bars:",Bars-1," EW0 Bar:", EW5MARKBAR, " EW0 Time:",TimeToStr(EW5MARKTIME), " Calculated EW0 Time:",TimeToStr(time[EW5MARKBAR])," EW0 Bars Diff:",(EW5MARKTIME-time[EW5MARKBAR])/60/Period);
if EW1MARK = 1 and EW2MARK = 0 then print("ERROR: Bars:",Bars-1," EW1 Bar:", EW1MARKBAR, " EW1 Time:",TimeToStr(EW1MARKTIME), " Calculated EW1 Time:",TimeToStr(time[EW1MARKBAR])," EW1 Bars Diff:",(EW1MARKTIME-time[EW1MARKBAR])/60/Period);
if EW2MARK = 1 and EW3MARK = 0 then print("ERROR: Bars:",Bars-1," EW2 Bar:", EW2MARKBAR, " EW2 Time:",TimeToStr(EW2MARKTIME), " Calculated EW2 Time:",TimeToStr(time[EW2MARKBAR])," EW2 Bars Diff:",(EW2MARKTIME-time[EW2MARKBAR])/60/Period);
if EW3MARK = 1 and EW4MARK = 0 then print("ERROR: Bars:",Bars-1," EW3 Bar:", EW3MARKBAR, " EW3 Time:",TimeToStr(EW3MARKTIME), " Calculated EW3 Time:",TimeToStr(time[EW3MARKBAR])," EW3 Bars Diff:",(EW3MARKTIME-time[EW3MARKBAR])/60/Period);
if EW4MARK = 1 and EW5MARK = 0 then print("ERROR: Bars:",Bars-1," EW4 Bar:", EW4MARKBAR, " EW4 Time:",TimeToStr(EW4MARKTIME), " Calculated EW4 Time:",TimeToStr(time[EW4MARKBAR])," EW4 Bars Diff:",(EW4MARKTIME-time[EW4MARKBAR])/60/Period);
if EW5MARK = 1 and EW0MARK = 0 then print("ERROR: Bars:",Bars-1," EW5 Bar:", EW5MARKBAR, " EW5 Time:",TimeToStr(EW5MARKTIME), " Calculated EW5 Time:",TimeToStr(time[EW5MARKBAR])," EW5 Bars Diff:",(EW5MARKTIME-time[EW5MARKBAR])/60/Period);
}
EW0MARK=0;
EW1MARK=0;
EW1=0;
EW1MARKTIME=0;
EW1MARKBAR=0;
EW2MARK=0;
EW2=0;
EW2MARKTIME=0;
EW2MARKBAR=0;
EW3MARK=0;
EW3=0;
EW3MARKTIME=0;
EW3MARKBAR=0;
EW4MARK=0;
EW4=0;
EW4MARKTIME=0;
EW4MARKBAR=0;
EW5MARK=0;
EW5=0;
EW5MARKTIME=0;
EW5MARKBAR=0;
ORDERMARK=0;
exit;
}


if EW0MARK = 0 and EW1MARK = 0 then
{
EW0MARK = 0;
EW1MARK = 0;
EW1MARKBAR = 0;
EW1MARKTIME = 0;
EW2MARK = 0;
EW2MARKBAR = 0;
EW2MARKTIME = 0;
EW3MARK = 0;
EW3MARKBAR = 0;
EW3MARKTIME = 0;
EW4MARK = 0;
EW4MARKBAR = 0;
EW4MARKTIME = 0;
EW5MARK = 0;
EW5MARKBAR = 0;
EW5MARKTIME = 0;
}

MaxPriceBar = Highest (MODE_CLOSE,MaxBars+1, MaxBars);
MinPriceBar = Lowest (MODE_CLOSE, MaxBars+1, MaxBars);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];
//MaxPriceBar=time[MaxPriceBar];
//MinPriceBar=time[MinPriceBar];


if EW0MARK = 1 and EW2MARK = 0 and EW3MARK = 0
// Recalculate EW entry point while have only Elliot Wave
then
{
MaxPriceBar = Highest (MODE_CLOSE,MaxBars+1, MaxBars);
MinPriceBar = Lowest (MODE_CLOSE, MaxBars+1, MaxBars);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];
if (WaveAngle = 1 and MinPrice < EW5PRICE)
or (WaveAngle = 2 and MaxPrice > EW5PRICE)
then
{
if EW5MARKBAR <= MaxBars then
{
DelArrow(EW5MARKTIME,EW5PRICE + StopLoss / 2 * Point);
DelArrow(EW5MARKTIME,EW5PRICE - StopLoss / 2 * Point);
}
EW0MARK=0;
}
}

/*
if WaveAngle = 1 and Close[counter] > MaxPrice then print("Counter:",counter, " MaxPrice:",MaxPrice);
if WaveAngle = 2 and Close[counter] < MaxPrice then print("Counter:",counter, " MinPrice:",MinPrice);

/*
//Reallign Elliot wave entry point
if WaveAngle = 1 and MaxPriceBar < RetracementBars then WaveAngle = 2
else
if WaveAngle = 2 and MinPriceBar < RetracementBars then WaveAngle = 1;
*/

//print("PriceLevel:",PriceLevel);

if (EW0MARK = 0)
//or (MaxPriceBar > MinPriceBar and WaveAngle = 1)
//or (MaxPriceBar < MinPriceBar and WaveAngle = 2)
then
{
EW0MARK=1;
EW1MARK=0;
EW2MARK=0;
EW3MARK=0;
EW4MARK=0;
EW5MARK=0;


if WaveAngle = 1
// try to mark first Elliot Wave
then
{
EW5=MinPrice;
EW5MARKBAR=MinPriceBar;
EW5MARKTIME=time[MinPriceBar];
EW5PRICE=MinPrice;
EW1=MinPrice;
//SetArrow(EW5MARKTIME,EW5PRICE,128,White);
SetArrow(EW5MARKTIME,EW5PRICE - StopLoss / 2 * Point,384,White);
Comment("\nEWTrend=Possible UP",
"\nLastTime=",TimeToStr(time[0]),
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print(Symbol," EW0 Time:",TimeToStr(EW5MARKTIME),": EW0:",EW5," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}

if WaveAngle = 2
// try to mark first reversed Elliot Wave
then
{
EW5=MaxPrice;
EW5MARKBAR=MaxPriceBar;
EW5MARKTIME=time[MaxPriceBar];
EW5PRICE=MaxPrice;
EW1=MaxPrice;
//SetArrow(EW5MARKTIME,EW5PRICE,128,Violet);
SetArrow(EW5MARKTIME,EW5PRICE + StopLoss / 2 * Point,384,Violet);
Comment("\nEWTrend=Possible DOWN",
"\nLastTime=",TimeToStr(time[0]),
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print(Symbol," EW0 Time:",TimeToStr(EW5MARKTIME),": EW0:",EW5," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}
//print ("waveangle=",WaveAngle);
}


//if IsTesting and EW3MARK = 1 then print("EW0MARK:",EW0MARK," EW1MARK:",EW1MARK," EW2MARK:",EW2MARK," EW3MARK:",EW3MARK," EW4MARK:",EW4MARK);

BarsShift=EW5MARKBAR;

/*
if EW5MARKBAR > MaxBars
then // reset EW count start entry
{
EW0MARK=0;
if WaveAngle = 1 then DelArrow(EW5MARKTIME,EW5PRICE + StopLoss / 2 * Point);
if WaveAngle = 2 then DelArrow(EW5MARKTIME,EW5PRICE - StopLoss / 2 * Point);
}
*/


if EW0MARK=1 and EW2MARK=0 and EW3MARK=0
// and EW5MARKBAR > BarsCount
then
for counter=BarsShift - 1 downto 1
Begin

BarsCount = BarsShift - counter;
MaxPriceBar = Highest (MODE_CLOSE,EW5MARKBAR , BarsCount);
MinPriceBar = Lowest (MODE_CLOSE,EW5MARKBAR , BarsCount);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];



if WaveAngle = 1 and MaxPrice > EW1 and MaxPriceBar < EW5MARKBAR then
{
EW1 = MaxPrice;
if EW1MARKBAR <= MaxBars then
DelArrow(EW1MARKTIME , Open[counter] + StopLoss / 2 * Point);
EW1MARKTIME=time[MaxPriceBar];
//print("EW1=",EW1);
}
if WaveAngle = 2 and MinPrice < EW1 and MinPriceBar < EW5MARKBAR then
{
if EW1MARKBAR <= MaxBars then
DelArrow(EW1MARKTIME , Open[counter] - StopLoss / 2 * Point);
EW1MARKTIME=time[MinPriceBar];
EW1 = MinPrice;
//print("EW1=",EW1);
}

/*
if IsTesting and (counter = BarsShift-1 or counter = 1) then
{
if WaveAngle = 1 then print("BarCount:",BarsCount ," Counter:",counter," Price:",Close[counter]," MaxPrice: ",MaxPrice," MaxPriceBar:",MaxPriceBar);
if WaveAngle = 2 then print("BarCount:",BarsCount ," Counter:",counter," Price:",Close[counter]," MinPrice:",MinPrice," MinPriceBar:",MinPriceBar);
print("Bars:",Bars-1," EW0 Bar:", EW5MARKBAR, " EW0 Time:",TimeToStr(EW5MARKTIME), " Calculated EW0 Time:",TimeToStr(time[EW5MARKBAR])," EW0 Bars Diff:",(EW5MARKTIME-time[EW5MARKBAR])/60/Period);
print("Bars:",Bars-1," EW1 Bar:", EW1MARKBAR, " EW1 Time:",TimeToStr(EW1MARKTIME), " Calculated EW1 Time:",TimeToStr(time[EW1MARKBAR])," EW1 Bars Diff:",(EW1MARKTIME-time[EW1MARKBAR])/60/Period);
print("WaveAngle:",WaveAngle," EW1MARK:",EW1MARK," EW0:",EW5PRICE," EW1:",EW1);
}
*/
if WaveAngle = 1
and Close[EW5MARKBAR] + NoisePips * Point < Close[counter]
and MaxPrice <= Close[counter]
and EW1 > Close[EW5MARKBAR] + NoisePips * Point
and EW1 <= close[counter]
then
{
if EW1MARKBAR <= MaxBars then
DelArrow(EW1MARKTIME , Open[counter] + StopLoss / 2 * Point);
if Close[counter] > MaxPrice then
{
EW1 = Close[counter];
EW1MARKTIME=time[counter];
}
EW1MARK=1;
EW2=EW1;
EW1MARKTIME=time[counter];
EW1MARKBAR=counter;
//SetArrow(EW1MARKTIME,Open[counter] + StopLoss / 2 * Point,129,White);
Comment("\nEWTrend=Possible UP",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print("EW1 Time:",TimeToStr(EW1MARKTIME),": EW1:",EW1," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}

if WaveAngle = 2
and Close[EW5MARKBAR] - NoisePips * Point > Close[counter]
and MinPrice >= Close[counter]
and EW1 < Close[EW5MARKBAR] - NoisePips * Point
and EW1 >= close[counter]
then
{
if EW1MARKBAR <= MaxBars then
DelArrow(EW1MARKTIME , Open[counter] - StopLoss / 2 * Point);
if Close[counter] < MinPrice then
{
EW1 = Close[counter];
EW1MARKTIME=time[counter];
}
EW1MARK=1;
EW2=EW1;
EW1MARKBAR=counter;
//SetArrow(EW1MARKTIME,Open[counter] - StopLoss / 2 * Point,129,Violet);
Comment("\nEWTrend=Possible DOWN",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print("EW1 Time:",TimeToStr(EW1MARKTIME),": EW1:",EW1," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}


if EW1MARK = 1 and counter < EW1MARKBAR
and (WaveAngle = 1 and Close[counter] < EW1 - NoisePips * Point
or (WaveAngle = 2 and Close[counter] > EW1 + NoisePips * Point))
then // Wave 1 ended
{
EW3MARK=1;
break;
}


End;


if EW0MARK=1 and EW2MARK=0 and EW3MARK=1
then
{
EW3MARK=0;
if WaveAngle = 1
then
{
if EW1MARKBAR <= MaxBars then
DelArrow(EW1MARKTIME, EW1 + StopLoss / 2 * Point);
SetArrow(EW1MARKTIME, EW1 + StopLoss / 2 * Point,129,White);
}
else
{
if EW1MARKBAR <= MaxBars then
DelArrow(EW1MARKTIME, EW1 - StopLoss / 2 * Point);
SetArrow(EW1MARKTIME, EW1 - StopLoss / 2 * Point,129,Violet);
}
}

BarsShift=EW1MARKBAR;
if Bars < BarsShift then exit;

// Check for failed Elliot Wave 1
if (EW3MARK=0 and EW1MARK=1 and EW2MARK=0 and WaveAngle = 1 and EW1 < EW5PRICE - NoisePips * Point)
or (EW3MARK=0 and EW1MARK=1 and EW2MARK=0 and WaveAngle = 2 and EW1 > EW5PRICE + NoisePips * Point)
then
{
for counter=1 to EW5MARKBAR
{
DelArrow(time[counter] , Close[counter] + StopLoss / 2 * Point);
DelArrow(time[counter] , Close[counter] - StopLoss / 2 * Point);
}
EW0MARK=0;
EW1MARK=0;
EW2MARK=0;
EW3MARK=0;
EW4MARK=0;
EW5MARK=0;
}

if EW1MARK=1 and EW3MARK=0
then
for counter=BarsShift - 1 downto 1
Begin
BarsCount = BarsShift - counter;
MaxPriceBar = Highest (MODE_CLOSE,EW1MARKBAR , BarsCount);
MinPriceBar = Lowest (MODE_CLOSE,EW1MARKBAR , BarsCount);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];

if WaveAngle = 1 and MinPrice < EW2 and MinPriceBar < EW5MARKBAR then
{
if EW2MARKBAR <= MaxBars then
DelArrow(EW2MARKTIME , Open[counter] - StopLoss / 2 * Point);
EW2 = MinPrice;
EW2MARKTIME=time[MinPriceBar];
}
if WaveAngle = 2 and MaxPrice > EW2 and MaxPriceBar < EW5MARKBAR then
{
if EW2MARKBAR <= MaxBars then
DelArrow(EW2MARKTIME , Open[counter] + StopLoss / 2 * Point);
EW2 = MaxPrice;
EW2MARKTIME=time[MaxPriceBar];
}
if WaveAngle = 1
and Close[EW1MARKBAR] - NoisePips * Point > Close[counter]
and MinPrice >= Close[counter]
and EW2 < Close[EW1MARKBAR] - NoisePips * Point
and EW2 > close[counter]
then
{
if EW2MARKBAR <= MaxBars then
DelArrow(EW2MARKTIME , Open[counter] - StopLoss / 2 * Point);
if Close[counter] < MinPrice then
{
EW2 = Close[counter];
EW2MARKTIME=time[counter];
}
EW3=EW2;
EW2MARK=1;
EW2MARKBAR=counter;
EW3MARKBAR=EW2MARKBAR;
//SetArrow(EW2MARKTIME,Open[counter] - StopLoss / 2 * Point,130,White);
Comment("\nEWTrend=Possible UP",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nEW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print("EW2 Time:",TimeToStr(EW2MARKTIME),": EW2:",EW2," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}

if WaveAngle = 2
and Close[EW1MARKBAR] + NoisePips * Point < Close[counter]
and MaxPrice <= Close[counter]
and EW2 > Close[EW1MARKBAR] + NoisePips * Point
and EW2 < close[counter]
then
{
if EW2MARKBAR <= MaxBars then
DelArrow(EW2MARKTIME , Open[counter] + StopLoss / 2 * Point);
if Close[counter] > MaxPrice then
{
EW2 = Close[counter];
EW2MARKTIME=time[counter];
}
EW3=EW2;
EW2MARK=1;
EW2MARKBAR=counter;
EW3MARKBAR=EW2MARKBAR;
//SetArrow(EW2MARKTIME,Open[counter] + StopLoss / 2 * Point,130,Violet);
Comment("\nEWTrend=Possible DOWN",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nEW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print("EW2 Time:",TimeToStr(EW2MARKTIME),": EW2:",EW2," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}


// Check for failed Elliot Wave 2
if (EW3MARK=0 and EW2MARK=1 and WaveAngle = 1 and EW2 < EW5 - NoisePips * Point)
or (EW3MARK=0 and EW2MARK=1 and WaveAngle = 2 and EW2 > EW5 + NoisePips * Point)
then
{
for counter=1 to EW5MARKBAR
{
DelArrow(time[counter] , Close[counter] + StopLoss / 2 * Point);
DelArrow(time[counter] , Close[counter] - StopLoss / 2 * Point);
}
EW0MARK=0;
EW1MARK=0;
EW2MARK=0;
EW3MARK=0;
EW4MARK=0;
EW5MARK=0;
Comment("\nEWTrend=Recalculating..",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nEW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nEW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
/*
Print(TimeToStr(time),": ",Symbol," Elliot Wave 2 failed, reverting retracement trend vector. ");
Print("Old EW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
" EW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
" EW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
" EW3=",TimeToStr(EW3MARKTIME),
" ",EW3
);
*/
/*
MaxPriceBar = Highest (MODE_CLOSE,EW1MARKBAR + MaxBars+1 ,MaxBars);
MinPriceBar = Lowest (MODE_CLOSE,EW1MARKBAR + MaxBars+1 ,MaxBars);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];

tempval=EW5;
EW3=EW2;
EW2=EW1;
if WaveAngle = 1 then EW5 = MinPrice;
if WaveAngle = 2 then EW5 = MaxPrice;
EW5PRICE=EW5;
EW1=tempval;


tempval=EW5MARKTIME;
if WaveAngle = 1 then EW5MARKTIME = time[MinPriceBar];
if WaveAngle = 2 then EW5MARKTIME = time[MaxPriceBar];
EW3MARKTIME=EW2MARKTIME;
EW2MARKTIME=EW1MARKTIME;
EW1MARKTIME=tempval;

tempval=EW5MARKBAR;
if WaveAngle = 1 then EW5MARKBAR = MinPriceBar;
if WaveAngle = 2 then EW5MARKBAR = MaxPriceBar;
EW5MARKBAR=EW1MARKBAR;
EW3MARKBAR=EW2MARKBAR;
EW2MARKBAR=EW1MARKBAR;
EW1MARKBAR=tempval;

if Bars < EW1MARKBAR + MaxBars+1 then
// Check if we have not enough prices for estimating EW0
{
EW5=Close[Bars-1];
EW5PRICE=EW5;
EW5MARKTIME=time[Bars-1];
EW5MARKBAR=Bars-1;
}

EW4=0;
EW4MARKTIME=0;

//print(TimeToStr(time),": ",TimeToStr(EW5MARKTIME)," ",EW5MARKBAR," ",EW5 + StopLoss / 2 * Point);
//print(time, " ",EW1MARKTIME," ",EW5MARKTIME," ",Period);
//print(TimeToStr(time), " ",TimeToStr(EW1MARKTIME)," ",TimeToStr(EW5MARKTIME)," ",Period);

if WaveAngle = 1 then
{
// WaveAngle = 2;
Comment("\nEWTrend=Recalculating..",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nEW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nEW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
SetArrow(EW5MARKTIME,EW5 + StopLoss / 2 * Point,128,Violet);
SetArrow(EW1MARKTIME,EW1 - StopLoss / 2 * Point,129,Violet);
SetArrow(EW2MARKTIME,EW2 + StopLoss / 2 * Point,130,Violet);
SetArrow(EW3MARKTIME,EW3 - StopLoss / 2 * Point,131,Violet);
}
else
{
// WaveAngle = 1;
Comment("\nEWTrend=Recalculating..",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nEW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nEW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
SetArrow(EW5MARKTIME,EW5 - StopLoss / 2 * Point,128,White);
SetArrow(EW1MARKTIME,EW1 + StopLoss / 2 * Point,129,White);
// print(TimeToStr(EW1MARKTIME)," ",TimeToStr(time[EW1MARKBAR])," ",EW1 + StopLoss / 2 * Point);
// Print("EW0 Time:",TimeToStr(EW5MARKTIME),": EW0:",EW5," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);

SetArrow(EW2MARKTIME,EW2 - StopLoss / 2 * Point,130,White);
SetArrow(EW3MARKTIME,EW3 + StopLoss / 2 * Point,131,White);
}
/*
Print("\nEWTrend=Recalculating..",
"EW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
" EW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
" EW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
" EW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
" Pivot ",Pivot,
" Resistance Level I ",ResistanceLevel1,
" Support Level I ",SupportLevel1,
" Resistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
*/
break;
}
End;


if EW2MARK=1 and EW3MARK=0
then
{
if WaveAngle = 2
then
{
if EW2MARKBAR <= MaxBars then
DelArrow(EW2MARKTIME, EW2 + StopLoss / 2 * Point);
SetArrow(EW1MARKTIME, EW1 - StopLoss / 2 * Point,129,Violet);
SetArrow(EW2MARKTIME, EW2 + StopLoss / 2 * Point,130,Violet);
}
else
{
if EW2MARKBAR <= MaxBars then
DelArrow(EW2MARKTIME, EW2 - StopLoss / 2 * Point);
SetArrow(EW1MARKTIME, EW1 + StopLoss / 2 * Point,129,White);
SetArrow(EW2MARKTIME, EW2 - StopLoss / 2 * Point,130,White);
}
}

BarsShift=EW1MARKBAR;
if Bars < BarsShift then exit;

if EW2MARK = 1 and EW4MARK = 0
// and EW4MARK = 0
then
for counter=BarsShift - 1 downto 1
Begin

BarsCount = BarsShift - counter;
MaxPriceBar = Highest (MODE_CLOSE,EW1MARKBAR , BarsCount);
MinPriceBar = Lowest (MODE_CLOSE,EW1MARKBAR , BarsCount);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];

if WaveAngle = 1 and MaxPrice > EW3 and MaxPriceBar < EW2MARKBAR then
{
EW3 = MaxPrice;
EW3MARKTIME=time[MaxPriceBar];
EW3MARKBAR=MaxPriceBar;
if EW3MARKBAR <= MaxBars then
DelArrow(EW3MARKTIME , Open[counter] + StopLoss / 2 * Point);
//print("EW3=",EW3);
}

if WaveAngle = 2 and MinPrice < EW3 and MinPriceBar < EW2MARKBAR then
{
if EW3MARKBAR <= MaxBars then
DelArrow(EW3MARKTIME , Open[counter] - StopLoss / 2 * Point);
EW3MARKTIME=time[MinPriceBar];
EW3MARKBAR=MinPriceBar;
EW3 = MinPrice;
//print("EW3=",EW3);
}


/*
if IsTesting and (counter = BarsShift-1 or counter = 1) then
{
if WaveAngle = 1 then print("BarCount:",BarsCount ," Counter:",counter," Price:",Close[counter]," MaxPrice: ",MaxPrice," MaxPriceBar:",MaxPriceBar);
if WaveAngle = 2 then print("BarCount:",BarsCount ," Counter:",counter," Price:",Close[counter]," MinPrice:",MinPrice," MinPriceBar:",MinPriceBar);
print("Bars:",Bars-1," EW2 Bar:", EW2MARKBAR, " EW2 Time:",TimeToStr(EW2MARKTIME), " Calculated EW2 Time:",TimeToStr(time[EW2MARKBAR])," EW2 Bars Diff:",(EW2MARKTIME-time[EW2MARKBAR])/60/Period);
print("Bars:",Bars-1," EW3 Bar:", EW3MARKBAR, " EW3 Time:",TimeToStr(EW3MARKTIME), " Calculated EW3 Time:",TimeToStr(time[EW3MARKBAR])," EW3 Bars Diff:",(EW3MARKTIME-time[EW3MARKBAR])/60/Period);
print("WaveAngle:",WaveAngle," EW3MARK:",EW3MARK," EW4MARK:",EW4MARK," EW0:",EW5PRICE," EW1:",EW1," EW2:",EW2," EW3:",EW3);
}
/*
if WaveAngle = 1 and Close[counter] > MaxPrice then print("Counter:",counter, " MaxPrice:",MaxPrice);
if WaveAngle = 2 and Close[counter] < MaxPrice then print("Counter:",counter, " MinPrice:",MinPrice);
*/

if WaveAngle = 1
and EW1 + NoisePips * Point < Close[counter]
and MaxPrice <= Close[counter]
and EW3 > EW2 + NoisePips * Point
and EW3 < close[counter]
then
{
if EW3MARKBAR <= EW5MARKBAR then
DelArrow(EW3MARKTIME , Open[counter] + StopLoss / 2 * Point);
EW3 = Close[counter];
EW3MARKTIME=time[counter];
EW3MARK=1;
EW4=EW3;
EW3MARKBAR=counter;
//SetArrow(time[counter],Open[counter] + StopLoss / 2 * Point,131,White);
//print("EW0 date:",TimeToStr(EW5MARKTIME)," EW1 date:",TimeToStr(EW1MARKTIME)," EW2 date:",TimeToStr(EW2MARKTIME)," EW3 date:",TimeToStr(EW3MARKTIME));
Comment("\nEWTrend=UP",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nEW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nEW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print("EW3 Time:",TimeToStr(EW3MARKTIME),": EW3:",EW3," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}

if WaveAngle = 2
and EW1 - NoisePips * Point > Close[counter]
and MinPrice >= Close[counter]
and EW3 < EW2 - NoisePips * Point
and EW3 > close[counter]
then
{
if EW3MARKBAR <= EW5MARKBAR then
DelArrow(EW3MARKTIME , Open[counter] - StopLoss / 2 * Point);
EW3 = Close[counter];
EW3MARKTIME=time[counter];
EW3MARK=1;
EW4=EW3;
EW4MARKTIME=time[counter];
EW3MARKBAR=counter;
//SetArrow(time[counter],Open[counter],131,Violet);
Comment("\nEWTrend=DOWN",
"\nEW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nEW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nEW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nEW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
//Print("EW3 Time:",TimeToStr(EW3MARKTIME),": EW3:",EW3," WaveAngle:",WaveAngle," MaxPriceBar:",MaxPriceBar," MinPriceBar:",MinPriceBar);
}

/*
if EW3MARK = 1 and counter < EW3MARKBAR and (WaveAngle = 1 and Close[counter] < EW3 - NoisePips * Point
or (WaveAngle = 2 and Close[counter] > EW3 + NoisePips * Point))
then // Wave 1 ended
{
EW4MARK=1;
break;
}
*/

End;

//Check if we have failed EW 3 and it falls bellow EW Wave 1
if (EW3MARK=1 and WaveAngle = 1 and Open < EW2)
or (EW3MARK=1 and WaveAngle = 2 and Open > EW2)
then
{
Comment("\nEWTrend=Recalculating..",
"\nLast EW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nLast EW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nLast EW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nLast EW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
EW0MARK=0;
EW1MARK=0;
EW2MARK=0;
EW3MARK=0;
EW4MARK=0;
EW5MARK=0;
ORDERMARK=0;
for counter=1 to EW2MARKBAR
{
if close[counter] = EW3
then
{
DelArrow(time[counter] , Close[counter] + StopLoss / 2 * Point);
DelArrow(time[counter] , Close[counter] - StopLoss / 2 * Point);
break;
}
}

if WaveAngle = 1 then SetArrow(time,Ask,251,Red);
if WaveAngle = 2 then SetArrow(time,Bid,251,Red);
LastEW5=EW5Price;
LastEW1=EW1;
LastEW2=EW2;
LastEW3=EW3;
//Print(TimeToStr(time),": ",Symbol," Elliot Wave 3 failed, recalculating EW0...");

}

if EW3MARK = 1 and EW4MARK = 0 then
{
EWOscillator = iCustom("ElliotOscillator",EWPeriod,0,RetracementBars,MODE_FIRST,0);
EWLevel = iCustom("ElliotWaves",EWPeriod,0,RetracementBars,MODE_FIRST,0);
}

if EWOscillator != 0 and EWLevel != 0 and EW3MARK = 1 and EW4MARK = 0 then
{
//print("EW0MARK:",EW0MARK," EW1MARK:",EW1MARK," EW2MARK:",EW2MARK," EW3MARK:",EW3MARK," EW4MARK:",EW4MARK);
//Print(TimeToStr(time[0]),": EW1MARKBAR:",EW1MARKBAR," EW2MARKBAR:",EW2MARKBAR," EW3MARKBAR:",EW3MARKBAR," EW3MARKBAR=",EW3MARKBAR," EW4MARK:",EW4MARK);
Print(TimeToStr(time[0]),": EW3 START - Open:",Open," EW0:",EW5PRICE," EW1:",EW1," EW2:",EW2," EW3:",EW3," WaveAngle:",WaveAngle," Price Level:",PriceLevel," Last Price Level:",LastPriceLevel," Max/Min Level:",FiboLevel);
Print(TimeToStr(time[0]),": EW3 START - Pivot:",Pivot," Resistance Level I:",ResistanceLevel1," Support Level I:",SupportLevel1," Resistance Level II:",ResistanceLevel2," Support Level II:",SupportLevel2);
EW3ORDERMARK=0;
LastOp=0;

if EW3 > Pivot
then
{
if EW3MARKBAR <= MaxBars then
DelArrow(EW3MARKTIME, EW3 + StopLoss / 2 * Point);
SetArrow(EW3MARKTIME, EW3 + StopLoss / 2 * Point,131,White);
DelArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point);

if EW3 > ResistanceLevel1
and FiboLevel > 99
and ResistanceLevel2 - ResistanceLevel1 < SupportLevel1 - SupportLevel2
and BullsAngle = 1
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,246,White); //UP
EW3ORDERMARK=1;
LastOp=1;
}
else
if EW3 > ResistanceLevel1
and FiboLevel > 100
and FiboLevel < 130
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,200,White); // UP
EW3ORDERMARK=1;
LastOp=2;
}
else
if EW2 > SupportLevel1
and FiboLevel > 80
and FiboLevel < 130
and PriceLevel > 65
then
{
if Open > (MaxPrice + MinPrice) * 2 / 3
or (MACDAngle = 2 and FiboLevel > 100)
then
{
if PriceLevel > 87.5 // Murrey 7/8 support/resistance line
//and FiboLevel < 112.5 // Murrey 8/8+1 support/resistance line
and BullsAngle = 1
and BearsAngle = 1
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,200,White); // UP
EW3ORDERMARK=3;
LastOp=3;
}
else
{
if MA < LongMA
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,200,White); // UNSTABLE UP
EW3ORDERMARK=1;
LastOp=4;
}
else
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,200,SkyBlue); // UNSTABLE DOWN, POSSIBLE UP
EW3ORDERMARK=2;
LastOp=5;
};
};
}
else
if FiboLevel > 100 // Over Murrey 8/8 support/resistance line
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,200,SkyBlue); // POSSIBLE UP
EW3ORDERMARK=1;
LastOp=6;
}
else
if FiboLevel = 100 // Murrey 8/8 support/resistance line
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,202,SkyBlue); // POSSIBLE RESIST DOWN
EW3ORDERMARK=12;
LastOp=7;
};
}
else
if FiboLevel > 70
and FiboLevel < 150
and PriceLevel < 60
//and Bid > EW3 + Slippage * Point
then
{
if (FiboLevel = 100) // Murrey 8/8 support/resistance line
and MACDAngle = 1
then
{
SetArrow(EW3MARKTIME, EW3 - (StopLoss / 2 + NoisePips) * Point,196,SkyBlue); //TEMP UP, REVERT TO DOWN
EW3ORDERMARK=13;
LastOp=8;
}
else
{
SetArrow(EW3MARKTIME, EW3 - (StopLoss / 2 + NoisePips) * Point,198,White); //UP
EW3ORDERMARK=3;
LastOp=9;
}
}
else
if PriceLevel > 65
and MA < Open
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,202,White); // DOWN
EW3ORDERMARK=4;
LastOp=10;
};
}
else
{
if EW3MARKBAR <= MaxBars then
DelArrow(EW3MARKTIME, EW3 - StopLoss / 2 * Point);
SetArrow(EW3MARKTIME, EW3 - StopLoss / 2 * Point,131,Violet);
DelArrow(EW3MARKTIME, EW3 - (StopLoss / 2 + NoisePips) * Point);
if EW3 < SupportLevel1
and FiboLevel > 99
and ResistanceLevel2 - ResistanceLevel1 < SupportLevel1 - SupportLevel2
and BearsAngle = 2
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,248,Violet); // DOWN
EW3ORDERMARK=11;
LastOp=21;
}
else
if EW3 < SupportLevel1
and FiboLevel < 130
and FiboLevel > 100
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,202,Violet); // DOWN
EW3ORDERMARK=11;
LastOp=22;
}
else
if EW2 < ResistanceLevel1
and FiboLevel > 80
and FiboLevel < 130
and PriceLevel < -65
then
{
if Open < (MaxPrice + MinPrice) * 3 / 2
or (MACDAngle = 2 and FiboLevel > 100)
then
{
if PriceLevel < -87.5 // Murrey 7/8 support/resistance line
//and FiboLevel < 112/5 // Murrey 8/8+1 support/resistance line
and BullsAngle = 2
and BearsAngle = 2
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,202,Violet); // DOWN
EW3ORDERMARK=13;
LastOp=23;
}
else
{
if MA > LongMA
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,202,Violet); // UNSTABLE DOWN
EW3ORDERMARK=11;
LastOp=24;
}
else
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,202,OrangeRed); // UNSTABLE UP, POSSIBLE DOWN
EW3ORDERMARK=12;
LastOp=25;
};
};

}
else
if FiboLevel > 100 // Over Murrey 8/8 support/resistance line
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,202,OrangeRed); // POSSIBLE DOWN
EW3ORDERMARK=11;
LastOp=26;
}
else
if FiboLevel = 100 // Murrey 8/8 support/resistance line
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,200,OrangeRed); // POSSIBLE RESIST AND UP
EW3ORDERMARK=2;
LastOp=27;
};
}
else
if FiboLevel > 70
and FiboLevel < 150
and PriceLevel > -60
//and Ask < EW3 - Slippage * Point
then
{
if (FiboLevel = 100) // Murrey 8/8 support/resistance line
and MACDAngle = 2
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,198,OrangeRed); //TEMP DOWN, REVERT TO UP
EW3ORDERMARK=3;
LastOp=28;
}
else
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,196,Violet); //DOWN
EW3ORDERMARK=13;
LastOp=29;
}
}
else
if PriceLevel < -65
and MA > Open
then
{
SetArrow(EW3MARKTIME, EW3 + (StopLoss / 2 + NoisePips) * Point,200,Violet); // UP
EW3ORDERMARK=14;
LastOp=30;
};

}
EW4MARK=1;
EW4MARKTIME=EW3MARKTIME;
EW4MARKBAR=EW3MARKBAR;
}

if EW3MARK=1
and ((WaveAngle = 1 and EW3 - Open > EW1 - EW2 )
or (WaveAngle = 2 and Open - EW3 > EW2 - EW1 ))
then
{
//Print(TimeToStr(time),": ",Symbol," Elliot Wave 3 retracement ended. Last EW3:",EW3," Last EW3 Time:",TimeToStr(EW3MARKTIME)," Order Stop:",TrailingStopPoint);
//Alert(TimeToStr(time),": ",Symbol," Elliot Wave 3 retracement ended. Last EW3:",EW3," Last EW3 Time:",TimeToStr(EW3MARKTIME)," Order Stop:",TrailingStopPoint);
Comment("\nEWTrend=Recalculating..",
"\nLast EW0=",TimeToStr(EW5MARKTIME),
" ",EW5,
"\nLast EW1=",TimeToStr(EW1MARKTIME),
" ",EW1,
"\nLast EW2=",TimeToStr(EW2MARKTIME),
" ",EW2,
"\nLast EW3=",TimeToStr(EW3MARKTIME),
" ",EW3,
"\nPivot ",Pivot,
"\nResistance Level I ",ResistanceLevel1,
"\nSupport Level I ",SupportLevel1,
"\nResistance Level II ",ResistanceLevel2,
"\nSupport Level II ",SupportLevel2,
"\nPrice Level ",PriceLevel,"%"
);
EW0MARK=0;
EW1MARK=0;
EW2MARK=0;
EW3MARK=0;
EW4MARK=0;
EW5MARK=0;
ORDERMARK=0;
}


if prevbars > 0 and EW3ORDERMARK=99
and Bars != prevbars
and ((PriceLevel > 0 and LastPriceLevel <= 0)
or (PriceLevel < 0 and LastPriceLevel >= 0))
// and CCI < 200
then
{
ENTRYPRICE=Open;
if ParabolicSAR < Open then { ORDERANGLE=1; ENTRYPRICE=Pivot;MinTakeProfitPtS=ResistanceLevel2;};
if ParabolicSAR > Open then { ORDERANGLE=11; ENTRYPRICE=Pivot;MinTakeProfitPtS=SupportLevel2;}
Trace = 1;
//print(TimeToStr(time),": Trace:",Trace," ORDERMARK:",ORDERMARK," ORDERANGLE:",ORDERANGLE," Price: ",Ask," Commodity Channel Index ",CCI," Pivot ",Pivot," Resistance Level I ",ResistanceLevel1," Support Level I ",SupportLevel1," Resistance Level II ",ResistanceLevel2," Support Level II ",SupportLevel2," Price Level ",PriceLevel," Last Price Level ",LastPriceLevel);
LastOp=0;
ORDERMARK=1;
ORDERCOUNT=0;
if WaveAngle = 1 then SARAngle = 1;
if WaveAngle = 2 then SARAngle = 2;
for counter = 1 to 10
Begin
tempval =iSAR(SARstep,SARmax,counter);
//print("Price:",Close[counter]," SAR:",tempval);
if (WaveAngle = 1 and tempval > Close[counter])
then
SARAngle = 2;
if (WaveAngle = 2 and tempval < Close[counter])
then
SARAngle = 1;
End;

if WaveAngle = 1 then print(TimeToStr(time),": Support/Resistance cross at price:",Open," WaveAngle: UP SAR:",ParabolicSAR, " SARAngle:",SarAngle," PriceLevel: ",PriceLevel," LastPriceLevel: ",LastPriceLevel);
if WaveAngle = 2 then print(TimeToStr(time),": Support/Resistance cross at price:",Open," WaveAngle: DOWN SAR:",ParabolicSAR, " SARAngle:",SarAngle," PriceLevel: ",PriceLevel," LastPriceLevel: ",LastPriceLevel);
Print(TimeToStr(time[0]),": Support/Resistance - Pivot:",Pivot," Resistance Level I:",ResistanceLevel1," Support Level I:",SupportLevel1," Resistance Level II:",ResistanceLevel2," Support Level II:",SupportLevel2);
Print(" Support/Resistance - EW0MARK:",EW0MARK," EW1MARK:",EW1MARK," EW2MARK:",EW2MARK," EW3MARK:",EW3MARK," EW3MARKBAR=",EW3MARKBAR," EW4MARK:",EW4MARK," EW0:",EW5PRICE," EW1:",EW1," EW2:",EW2," EW3:",EW3);
SetArrow(time,Open,254,Blue);

if WaveAngle = 1
then
{
if EW0MARK = 1
and EW1MARK=1
and EW2MARK=0
then
ORDERANGLE=2;

if EW0MARK = 1
and EW1MARK=1
and EW2MARK=1
and EW3MARK=0
then
ORDERANGLE=23;

if EW0MARK = 1
and EW1MARK=1
and EW2MARK=1
and EW3MARK=1
then
ORDERANGLE=4;
}

if WaveAngle = 2
then
{
if EW0MARK = 1
and EW1MARK=1
and EW2MARK=0
then
ORDERANGLE=21;

if EW0MARK = 1
and EW1MARK=1
and EW2MARK=1
and EW3MARK=0
then
ORDERANGLE=22;

if EW0MARK = 1
and EW1MARK=1
and EW2MARK=1
and EW3MARK=1
then
ORDERANGLE=3;
}
LastOp = 1;
}

if ORDERMARK > 9990
then
{
ORDERANGLE=WaveAngle;
if ORDERCOUNT > TradesCount
and EW3 <= Open
then ORDERCOUNT = TradesCount;
if WaveAngle = 1 and Open - TakeProfit * Point > EW1 then ORDERMARK = 1; // Additional Orders handling
if WaveAngle = 2 and Open + TakeProfit * Point < EW1 then ORDERMARK = 1; // Additional Orders handling

}
if WaveAngle = 1 then SARAngle = 1;
if WaveAngle = 2 then SARAngle = 2;
for counter = 1 to RetracementBars
Begin
tempval =iSAR(SARstep,SARmax,counter);
//print("Price:",Close[counter]," SAR:",tempval);
if (WaveAngle = 1 and tempval > Close[counter])
then
SARAngle = 2;
if (WaveAngle = 2 and tempval < Close[counter])
then
SARAngle = 1;
End;

if WaveAngle = 1 then MACDAngle = 1;
if WaveAngle = 2 then MACDAngle = 2;
for counter = 1 to RetracementBars
Begin
tempval=iMACD(RetracementBars/5,RetracementBars,RetracementBars/5,MODE_EMA,counter);
//print("MACD:",tempval);
if WaveAngle = 1
then
{
if tempval > 0 and tempval < MACD then MACDAngle = 1;
if tempval < 0 or tempval > MACD then MACDAngle = 2;
}

if WaveAngle = 2
then
{
if tempval > 0 or tempval < MACD then MACDAngle = 1;
if tempval < 0 and tempval > MACD then MACDAngle = 2;
}
End;

ShortMACDAngle = MACDAngle;

if WaveAngle = 1 then MACDAngle = 1;
if WaveAngle = 2 then MACDAngle = 2;
for counter = 1 to RetracementBars
Begin
tempval=iMACD(RetracementBars,MaxBars,RetracementBars,MODE_EMA,counter);
//print("MACD:",tempval);
if WaveAngle = 1
then
{
if tempval > 0 and tempval < MACD then MACDAngle = 1;
// if tempval < 0 or tempval > MACD then MACDAngle = 2;
if tempval > MACD then MACDAngle = 2;
}

if WaveAngle = 2
then
{
if tempval > 0 or tempval < MACD then MACDAngle = 1;
// if tempval < 0 and tempval > MACD then MACDAngle = 2;
if tempval > MACD then MACDAngle = 2;
}
End;

MaxPriceBar = Highest (MODE_CLOSE,MaxBars+1, RetracementBars);
MinPriceBar = Lowest (MODE_CLOSE, MaxBars+1, RetracementBars);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];

if WaveAngle = 1 then
{
BearsAngle=1;
BullsAngle=1;
for counter=1 to RetracementBars
{
tempval=iBearsPower(RetracementBars,MODE_HIGH,counter);
// if tempval < 0 or tempval > Bears then BearsAngle=2;
if tempval > Bears then BearsAngle=2;
tempval=iBullsPower(RetracementBars,MODE_LOW,counter);
// if tempval < 0 or tempval > Bulls then BullsAngle=2;
if tempval > Bulls then BullsAngle=2;
}
}
if WaveAngle = 2 then
{
BearsAngle=2;
BullsAngle=2;
for counter=1 to RetracementBars
{
tempval=iBearsPower(RetracementBars,MODE_HIGH,counter);
// if tempval > 0 or tempval < Bears then BearsAngle=1;
if tempval < Bears then BearsAngle=1;
tempval=iBullsPower(RetracementBars,MODE_LOW,counter);
// if tempval > 0 or tempval < Bulls then BullsAngle=1;
if tempval < Bulls then BullsAngle=1;
}
}

if EW3ORDERMARK > 0
then
{
ORDERCOUNT=0;
ORDERMARK=1;
if EW3ORDERMARK = 1
// and Bid > EW3 + Slippage * Point
// and Open >= EW3
// and Bid > EW3 + NoisePips * Point
then
{
ORDERANGLE=4;
}

if EW3ORDERMARK = 2
// and Open >= EW3
// and Ask < EW3 - NoisePips * Point
then
{
ORDERANGLE = 3;
}

if EW3ORDERMARK = 3
// and Open >= EW3
// and Bid > EW3 + NoisePips * Point
then
{
ORDERANGLE = 2;
}

if EW3ORDERMARK = 4
// and Ask < EW3 - NoisePips * Point
then
{
ORDERANGLE = 22;
}
if EW3ORDERMARK = 11
// and Ask < EW3 - Slippage * Point
// and Open >= EW3
// and Ask < EW3 - NoisePips * Point
then
{
ORDERANGLE = 23;
}

if EW3ORDERMARK = 12
// and Open >= EW3
// and Bid > EW3 + NoisePips * Point
then
{
ORDERANGLE = 22;
}

if EW3ORDERMARK = 13
// and Open >= EW3
// and Ask < EW3 - NoisePips * Point
then
{
ORDERANGLE = 21;
}

if EW3ORDERMARK = 14
// and Ask < EW3 - NoisePips * Point
then
{
ORDERANGLE = 3;
}
//EW3ORDERMARK=0;
}

MaxPriceBar = Highest (MODE_CLOSE,MaxBars+1, MaxBars);
MinPriceBar = Lowest (MODE_CLOSE, MaxBars+1, MaxBars);
MaxPrice = Close[MaxPriceBar];
MinPrice = Close[MinPriceBar];

if EW2MARK = 1 and EW3MARK = 0 then
{
If WaveAngle = 1
and Bid > EW2 + NoisePips * Point
and Bid > SupportLevel1 + NoisePips * Point
and ((EW2 - SupportLevel1 > 0 and (EW2 - SupportLevel1) / 2 < NoisePips * 2 / 2) or (SupportLevel1 - EW2 > 0 and (SupportLevel1 - EW2) / 2 < NoisePips * 2 / 2))
and EW1 - Bid > MinTakeProfit * Point + NoisePips * Point + Slippage
then
{
ENTRYPRICE=SupportLevel1;
ORDERMARK=1;
SetArrow(time,Low,196,Violet);
Print(TimeToStr(time),": ",Symbol," Elliot Wave 2 collision with Support Level 1 detected. Last EW2:",EW2," Last EW2 Time:",TimeToStr(EW2MARKTIME)," Recommended action: BUYLIMIT at ", ENTRYPRICE, " with T/P at ",EW1 - NoisePips * Point);
Alert(TimeToStr(time),": ",Symbol," Elliot Wave 2 collision with Support Level 1 detected. Last EW2:",EW2," Last EW2 Time:",TimeToStr(EW2MARKTIME)," Recommended action: BUYLIMIT at ", ENTRYPRICE, " with T/P at ",EW1 - NoisePips * Point);
Print(TimeToStr(time[0]),Symbol," : Elliot Wave 2 collision - Pivot:",Pivot," Resistance Level I:",ResistanceLevel1," Support Level I:",SupportLevel1," Resistance Level II:",ResistanceLevel2," Support Level II:",SupportLevel2);
}

If WaveAngle = 2
and Ask < EW2 - NoisePips * Point
and Ask < SupportLevel1 - NoisePips * Point
and ((EW2 - SupportLevel1 > 0 and (EW2 - SupportLevel1) / 2 < NoisePips * 2 / 2) or (SupportLevel1 - EW2 > 0 and (SupportLevel1 - EW2) / 2 < NoisePips * 2 / 2))
and Ask - EW1 > MinTakeProfit * Point + NoisePips * Point + Slippage
then
{
ENTRYPRICE=SupportLevel1;
ORDERMARK=2;
SetArrow(time,High,198,Violet);
Print(TimeToStr(time),": ",Symbol," Elliot Wave 2 collision with Resistance Level 1 detected. Last EW2:",EW2," Last EW2 Time:",TimeToStr(EW2MARKTIME)," Recommended action: BUYLIMIT at ", ENTRYPRICE, " with T/P at ",EW1 - NoisePips * Point);
Alert(TimeToStr(time),": ",Symbol," Elliot Wave 2 collision with Resistance Level 1 detected. Last EW2:",EW2," Last EW2 Time:",TimeToStr(EW2MARKTIME)," Recommended action: BUYLIMIT at ", ENTRYPRICE, " with T/P at ",EW1 - NoisePips * Point);
Print(TimeToStr(time[0]),Symbol," : Elliot Wave 2 collision - Pivot:",Pivot," Resistance Level I:",ResistanceLevel1," Support Level I:",SupportLevel1," Resistance Level II:",ResistanceLevel2," Support Level II:",SupportLevel2);
}
}
}


/************************************ Aggressive Anti Stop Loss - revert to Take Profit ********************************/


If (CloseBadOrder = 2 and OrderRecovery=0)
and AntiStopLoss = 1
and (CurTime-LastBadTime) > 300
and Open <=MinPrice
then
// Compensating BUY order for last bad trade
{
LastOp = 3;
BuyOp = 1;
SellOp = 0;
CloseBadOrder = 0;
OrderRecovery = 1;
SetArrow(time,Bid,233,Yellow);
exit;
}


If (CloseBadOrder = 1 and OrderRecovery=0)
and (CurTime-LastBadTime) > 300
// Compensating SELL order for last bad trade
and Open <=MinPrice
then
{
LastOp = 4;
BuyOp = 0;
SellOp = 1;
CloseBadOrder = 0;
OrderRecovery = 1;
SetArrow(time,Bid,234,Yellow);
exit;
}


/*********** Open Orders handling: Trailingstops, Delayed Orders Expire, Aggressive Anti Stop Loss logics ***************/

if OrderRecovery = 0 then TradesCount = 0;

if OrderRecovery = 0
and IsTradeAllowed then
for counter = 1 to TotalTrades
{
if (OrderValue(counter,VAL_SYMBOL) = Symbol)
then // we have pending current currency orders,
{
TradesCount = TradesCount + 1 ; // calculate trades for current market symbol
}

OrderType = OrderValue(counter,VAL_TYPE);
if FreeMargin < 10
and IsTesting then
// MetaTrader test do not close orders in with no money test mode
{
Print("Out of money, I AM BROKEN:( Exiting..");
If (OrderType = OP_SELL) then CloseOrder(OrderValue(counter,VAL_TICKET),OrderValue(counter,VAL_LOTS),PriceAsk,OrderValue(counter,VAL_SWAP),Yellow);
If (OrderType = OP_BUY) then CloseOrder(OrderValue(counter,VAL_TICKET),OrderValue(counter,VAL_LOTS),PriceBid,OrderValue(counter,VAL_SWAP),Yellow);
SetArrow(time,PriceAsk+BidStopPoints,77,Yellow);
exit;
}

if StopLoss = 0 then TrailingStopLoss = OrderValue(counter,VAL_OPENPRICE)
else TrailingStopLoss = OrderValue(counter,VAL_STOPLOSS);

If (OrderType = OP_BUY) and OrderValue(counter,VAL_SYMBOL)=Symbol then
{
// This is our buy order, lets check for prices



Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Marvin
Свой человек
***

Зарегистрирован: 19/03/2003
Сообщений: 96
Re: Euro [re: Maumax]
      #126705 - 16/07/2006 19:27

Спасибо!
Радует, что Ваш эксперт не знает трехволновых коррекций :-)

А если серьезно, большая работа, но чтобы использовать просто для определения волн без торговли пришлось урезать два последних раздела и кое-где поставить "точку с запятой". Может целесообразнее перенести в раздел экспертов МетаТрейдера (третьего) и пояснить как им пользоваться?

--------------------
Copyright ©


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Palij
Гость


Зарегистрирован: 11/07/2006
Сообщений: 10
Нахождение: Хохланд
Re: Euro [re: Marvin]
      #127680 - 26/07/2006 16:37 прикреплённые файлы (227 загрузок)

Собственно вот такой взгляд на развитие событий.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Неверный
Свой человек
*

Зарегистрирован: 09/07/2006
Сообщений: 113
Re: Euro [re: Palij]
      #127699 - 26/07/2006 19:10

Может прокомментируете. Цели хоть напишите пирблизительные.
И я думаю Вы ошибаетесь, то что у Вас помечено как II на самом деле является волной b зигзага микро уровня. Хотя как знать.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Palij
Гость


Зарегистрирован: 11/07/2006
Сообщений: 10
Нахождение: Хохланд
Re: Euro [re: Неверный]
      #127700 - 26/07/2006 19:41

Благодарю за комментарий.
Пытаясь заниматься волновым анализом, мы обречены на оперирование довольно-таки абстрактными понятиями (волны, подволны, микроуровни). Рисуем жирные и оччень жирные линии, в зависимости от убеждений относительно картины, которую видим.
То, что у меня обозначено как II у Вас может быть обозначено B исходя из Вашего видения рынка (это коррекции, чаще трёхволновки).
В первую очередь я вижу явный импульс (примерно 400п.), затем откат 61.8% этого движения, свойственный вторым волным, когда чаще имеет место глубокая коррекция.
Нужно прийти к общему знаменателю, относительно того, кто как размечает. Думаю Ваша разметка разъяснит многое


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Неверный
Свой человек
*

Зарегистрирован: 09/07/2006
Сообщений: 113
Re: Euro [re: Palij]
      #127745 - 27/07/2006 11:07

В ответ на :

Пытаясь заниматься волновым анализом, мы обречены на оперирование довольно-таки абстрактными понятиями (волны, подволны, микроуровни). Рисуем жирные и оччень жирные линии, в зависимости от убеждений относительно картины, которую видим.




Да действительно правда у всех своя. Найти одинаковые разметки у разных людей невозможно, хотя волновая теория то одна. Я как то задумался над тем, а что если бы у всех, от профессора до пэтэушника,были бы одинаковые волновые картины (и при чем на 100% пророческие), и все трейдеры действовали в соответствии с этими разметками. Вот тогда то и нарушился бы основоной постулат на котором стоит и весь этот принцип Эллиотта о том, что цена есть отражение психологии людей.Но может на то она и теория чтобы трактовать её как угодно, возможно в ней самой заложено правило о том, что верного ответа попросту не существует. Ко всему вышесказанному: волновики вы отдаете себе отчет в том, что на самом деле занимаетесь предсказанием будущего, уму непостижимо, правда?
В ответ на :

Нужно прийти к общему знаменателю, относительно того, кто как размечает. Думаю Ваша разметка разъяснит многое



Над своим графиком я пока работаю (посмотрел знаете ли на мир трезвым взглядом и решил всё глобально переделать), поэтому выложу попозже или скину Вам на мыло.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Charlie Brown
Открытый человек
***

Зарегистрирован: 04/12/2003
Сообщений: 760
Re: Евро [re: wildmouse]
      #143877 - 14/12/2006 11:51

уважаемые форексники, как вы полагаете, пришла ли евра, или выше собирается?
спрашиваю, поскольку чудится мне оконченная пятиволновка на недельках.

--------------------
Никакой гарантии, разумееццо...


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
wildmouse
Этот wild wild wild mouse;))
****

Зарегистрирован: 21/09/2005
Сообщений: 670
Нахождение: Минск
Re: Евро [re: Charlie Brown]
      #168220 - 14/07/2007 02:10 прикреплённые файлы (125 загрузок)

Жизнеспособно, на мой взгляд:



Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Marvin
Свой человек
***

Зарегистрирован: 19/03/2003
Сообщений: 96
Re: Евро [re: wildmouse]
      #171159 - 14/08/2007 13:20

Интересно, где потерялась импульсная разметка?
Даже на Weekly разметка явно коррекции!
Разметьте тогда франк!

--------------------
Copyright ©


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
wildmouse
Этот wild wild wild mouse;))
****

Зарегистрирован: 21/09/2005
Сообщений: 670
Нахождение: Минск
Re: Евро [re: Marvin]
      #173146 - 04/09/2007 22:01 прикреплённые файлы (108 загрузок)

В ответ на :

Marvin писал:
Интересно, где потерялась импульсная разметка?
Даже на Weekly разметка явно коррекции!




Всё есть, только импульсная разметка никак не откорректируется:)



Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Konstantinforex
Гость


Зарегистрирован: 10/12/2007
Сообщений: 16
Re: Евро [re: wildmouse]
      #186184 - 16/12/2007 20:01

Привет всем.
Мое мнение по EURusd: http://konstantinforex.narod.ru/eur_usd.html


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Konstantinforex
Гость


Зарегистрирован: 10/12/2007
Сообщений: 16
Re: Евро [re: Konstantinforex]
      #186869 - 22/12/2007 10:15

Привет всем.
Новые обновления по EUR usd: http://konstantinforex.narod.ru/eur_usd.html


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Страниц в ветке: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | (все)



Дополнительная информация
0 зарегистрированных и 3 незарегистрированных пользователей просматривает форум.

Модератор:  Poul, Poul, 000, Akelo, mda, x4x, Uliss, TradingS, Shurilo, VovaM, mpfeltz, EVM, Stone, JC, Asd, Igonter 

Распечатать тему

Доступ и ограничения:
      Вы не можете начать новую тему
      Вы не можете отвечать на тему
      HTML включён
      UBBCode включён

Рейтинг: ****
Тема прочитана: 40064

Рейтинг темы

Перейти на

Send letter to Poul | Предупреждение Poul Trade Forum

Powered by UBB.threads™ 6.5.4

Generated in 0.468 seconds in which 0.013 seconds were spent on a total of 13 queries. Zlib compression enabled.