Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Создание индикаторов


Рекомендуемые сообщения

Здравствуйте! Думаю, только здесь мне могут помочь с этой проблемой.

Пользовательский индикатор "параболик" дает ложные показания до тех пор, пока не вызовешь свойства и не кликнешь "ОК", или не удалишь из графика и не установишь заново. Причем оба, а у меня их два пользовательских. Тот, что стандартный в МТ4 - в порядке.

Может кто-нибудь знает в чем здесь загвоздка?

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 159
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Код надо смотреть. А чем не устраиваем стандартный?

В одной ТС используется именно этот. В принципе, можно и другой. Мне просто не понятно, в чем проблема. Вот код, если бы я что-то в этом понял...

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

//| Parabolic-close.mq4 |

//| Copyright © 2008, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright © 2008, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

 

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Blue

#property indicator_width1 2

//---- input parameters

extern double Step=0.005;

extern double Maximum=0.2;

//---- buffers

double SarBuffer[];

//----

int save_lastreverse;

bool save_dirlong;

double save_start;

double save_last_high;

double save_last_low;

double save_ep;

double save_sar;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_SECTION);

SetIndexArrow(0,159);

SetIndexBuffer(0,SarBuffer);

//----

return(0);

}

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

//| |

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

void SaveLastReverse(int last,int dir,double start,double low,double high,double ep,double sar)

{

save_lastreverse=last;

save_dirlong=dir;

save_start=start;

save_last_low=low;

save_last_high=high;

save_ep=ep;

save_sar=sar;

}

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

//| Parabolic Sell And Reverse system |

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

int start()

{

static bool first=true;

bool dirlong;

double start,last_high,last_low;

double ep,sar,price_low,price_high,price;

int i,counted_bars=IndicatorCounted();

//----

if(Bars<3) return(0);

//---- initial settings

i=Bars-2;

if(counted_bars==0 || first)

{

first=false;

dirlong=true;

start=Step;

last_high=-10000000.0;

last_low=10000000.0;

while(i>0)

{

save_lastreverse=i;

price_low=Close;

if(last_low>price_low) last_low=price_low;

price_high=Close;

if(last_high<price_high) last_high=price_high;

if(price_high>Close[i+1] && price_low>Close[i+1]) break;

if(price_high<Close[i+1] && price_low<Close[i+1]) { dirlong=false; break; }

i--;

}

//---- initial zero

int k=i;

while(k<Bars)

{

SarBuffer[k]=0.0;

k++;

}

//---- check further

if(dirlong) { SarBuffer=Close[i+1]; ep=Close; }

else { SarBuffer=Close[i+1]; ep=Close; }

i--;

}

else

{

i=save_lastreverse;

start=save_start;

dirlong=save_dirlong;

last_high=save_last_high;

last_low=save_last_low;

ep=save_ep;

sar=save_sar;

}

//----

while(i>=0)

{

price_low=Close;

price_high=Close;

//--- check for reverse

if(dirlong && price_low<SarBuffer[i+1])

{

SaveLastReverse(i,true,start,price_low,last_high,ep,sar);

start=Step; dirlong=false;

ep=price_low; last_low=price_low;

SarBuffer=last_high;

i--;

continue;

}

if(!dirlong && price_high>SarBuffer[i+1])

{

SaveLastReverse(i,false,start,last_low,price_high,ep,sar);

start=Step; dirlong=true;

ep=price_high; last_high=price_high;

SarBuffer=last_low;

i--;

continue;

}

//---

price=SarBuffer[i+1];

sar=price+start*(ep-price);

if(dirlong)

{

if(ep<price_high && (start+Step)<=Maximum) start+=Step;

if(price_high<Close[i+1] && i==Bars-2) sar=SarBuffer[i+1];

 

price=Close[i+1];

if(sar>price) sar=price;

price=Close[i+2];

if(sar>price) sar=price;

if(sar>price_low)

{

SaveLastReverse(i,true,start,price_low,last_high,ep,sar);

start=Step; dirlong=false; ep=price_low;

last_low=price_low;

SarBuffer=last_high;

i--;

continue;

}

if(ep<price_high) { last_high=price_high; ep=price_high; }

}

else

{

if(ep>price_low && (start+Step)<=Maximum) start+=Step;

if(price_low<Close[i+1] && i==Bars-2) sar=SarBuffer[i+1];

 

price=Close[i+1];

if(sar<price) sar=price;

price=Close[i+2];

if(sar<price) sar=price;

if(sar<price_high)

{

SaveLastReverse(i,false,start,last_low,price_high,ep,sar);

start=Step; dirlong=true; ep=price_high;

last_high=price_high;

SarBuffer=last_low;

i--;

continue;

}

if(ep>price_low) { last_low=price_low; ep=price_low; }

}

SarBuffer=sar;

i--;

}

// sar=SarBuffer[0];

// price=iSAR(NULL,0,Step,Maximum,0);

// if(sar!=price) Print("custom=",sar," SAR=",price," counted=",counted_bars);

// if(sar==price) Print("custom=",sar," SAR=",price," counted=",counted_bars);

//----

return(0);

}

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

Ссылка на комментарий
Поделиться на другие сайты

Скажите, пожалуйста, кто-нибудь может на этот работающий параболик звонок поставить на момент его разворота, что б на каждый его разворот он выдавал один звонок? Знаю, люди будут благодарны. :smile:

Ну на крайний случай на этот (визуально классический):

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

//| Parabolic Sub.mq4 |

//| Copyright © 2004, MetaQuotes Software Corp. |

//| http://www.metaquotes.net/ |

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

#property copyright "Copyright © 2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

//----

//Added Fix1 September 6, 2006 Advance Index if new bar by Stanley Fiala http://merlin4x.com

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

//---- input parameters

extern double Step = 0.02;

extern double Maximum = 0.2;

//---- buffers

double SarBuffer[];

//----

int save_lastreverse;

bool save_dirlong;

double save_start;

double save_last_high;

double save_last_low;

double save_ep;

double save_sar;

int bartime;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0, DRAW_ARROW);

SetIndexArrow(0, 159);

SetIndexBuffer(0, SarBuffer);

//----

return(0);

}

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

//| |

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

void SaveLastReverse(int last, int dir, double start, double low, double high,

double ep, double sar)

{

save_lastreverse = last;

save_dirlong = dir;

save_start = start;

save_last_low = low;

save_last_high = high;

save_ep = ep;

save_sar = sar;

}

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

//| Parabolic Sell And Reverse system |

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

int start()

{

static bool first = true;

bool dirlong;

double start, last_high, last_low;

double ep, sar, price_low, price_high, price;

int i, counted_bars = IndicatorCounted();

//----

if(Bars < 3)

return(0);

//---- initial settings

i = Bars - 2;

//----

if(counted_bars == 0 || first)

{

first = false;

dirlong = true;

start = Step;

last_high = -10000000.0;

last_low = 10000000.0;

//----

while(i > 0)

{

save_lastreverse = i;

price_low = Low;

//----

if(last_low > price_low)

last_low = price_low;

price_high = High;

//----

if(last_high < price_high)

last_high = price_high;

//----

if(price_high > High[i+1] && price_low > Low[i+1])

break;

//----

if(price_high < High[i+1] && price_low < Low[i+1])

{

dirlong = false;

break;

}

i--;

}

//---- initial zero

int k = i;

Print(" k=", k, " Bars=", Bars);

//----

while(k < Bars)

{

SarBuffer[k] = 0.0;

k++;

}

//---- check further

if(dirlong)

{

SarBuffer = Low[i+1];

ep = High;

}

else

{

SarBuffer = High[i+1];

ep = Low;

}

i--;

}

else

{

i = save_lastreverse;

start = save_start;

dirlong = save_dirlong;

last_high = save_last_high;

last_low = save_last_low;

ep = save_ep;

sar = save_sar;

// Fix1 start

// If new bar increment index

if(Time[0] != bartime)

{

bartime = Time[0];

i++;

}

//Fix1 end

}

//----

while(i >= 0)

{

price_low = Low;

price_high = High;

//--- check for reverse from long to short

if(dirlong && price_low < SarBuffer[i+1])

{

SaveLastReverse(i, true, start, price_low, last_high, ep, sar);

start = Step;

dirlong = false;

ep = price_low;

last_low = price_low;

SarBuffer = last_high;

i--;

continue;

}

//--- check for reverse from short to long

if(!dirlong && price_high > SarBuffer[i+1])

{

SaveLastReverse(i, false, start, last_low, price_high, ep, sar);

start = Step;

dirlong = true;

ep = price_high;

last_high = price_high;

SarBuffer = last_low;

i--;

continue;

}

//sar(i) = sar(i+1)+start*(ep-sar(i+1))

price = SarBuffer[i+1];

sar = price + start*(ep - price);

//----

if(dirlong)

{

if(ep < price_high && (start + Step) <= Maximum)

start += Step;

//----

if(price_high < High[i+1] && i == Bars - 2)

sar = SarBuffer[i+1];

price = Low[i+1];

//----

if(sar > price)

sar = price;

price = Low[i+2];

//----

if(sar > price)

sar = price;

//----

if(sar > price_low)

{

SaveLastReverse(i, true, start, price_low, last_high, ep, sar);

start = Step;

dirlong = false;

ep = price_low;

last_low = price_low;

SarBuffer = last_high;

i--;

continue;

}

//----

if(ep < price_high)

{

last_high = price_high;

ep = price_high;

}

} //dir-long

else

{

if(ep > price_low && (start + Step) <= Maximum)

start += Step;

//----

if(price_low < Low[i+1] && i == Bars - 2)

sar = SarBuffer[i+1];

price = High[i+1];

//----

if(sar < price)

sar = price;

price = High[i+2];

//----

if(sar < price)

sar = price;

//----

if(sar < price_high)

{

SaveLastReverse(i, false, start, last_low, price_high, ep,sar);

start = Step;

dirlong = true;

ep = price_high;

last_high = price_high;

SarBuffer = last_low;

i--;

continue;

}

//----

if(ep > price_low)

{

last_low = price_low;

ep = price_low;

}

} //dir-short

SarBuffer = sar;

i--;

} //while

// sar=SarBuffer[0];

// price=iSAR(NULL,0,Step,Maximum,0);

// if(sar!=price) Print("custom=",sar," SAR=",price," counted=",counted_bars);

// if(sar==price) Print("custom=",sar," SAR=",price," counted=",counted_bars);

//----

return(0);

}

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

Ссылка на комментарий
Поделиться на другие сайты

Есть вариант так же изменить этот, т.к. выдает звонок на каждый тик в течение бара, а это неудобно, когда бар часовой или даже 15 минут. Нужен один звонок на один разворот параболика (максимум в течение 1 минуты при любом таймфрейме).

 

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

//| Parabolic_Alert.mq4 |

//| Original file name: Parabolic.mq4 |

//| Copyright © 2004, MetaQuotes Software Corp. |

//| http://www.metaquotes.net/ |

//| Modified to give audible alarm on reversal |

//| Modified by Jim Arner, Sr. |

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

#property copyright "Copyright © 2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

//----

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 DarkOrange

//---- input parameters

extern double Step=0.05;

extern double Maximum=0.3;

//---- buffers

double SarBuffer[];

//----

int save_lastreverse;

bool save_dirlong, save_dirshort;

double save_start;

double save_last_high;

double save_last_low;

double save_ep;

double save_sar;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorDigits(Digits);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,158);

SetIndexBuffer(0,SarBuffer);

//----

return(0);

}

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

//| |

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

void SaveLastReverse(int last,int dir_l,int dir_s,double start,double low,double high,double ep,double sar)

{

save_lastreverse=last;

save_dirlong=dir_l;

save_dirshort=dir_s;

save_start=start;

save_last_low=low;

save_last_high=high;

save_ep=ep;

save_sar=sar;

}

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

//| Parabolic Sell And Reverse system |

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

int start()

{

static bool first=true;

bool dirlong, dirshort;

double start,last_high,last_low;

double ep,sar,price_low,price_high,price;

int i,counted_bars=IndicatorCounted();

string TradeTime;

//----

if(Bars<3) return(0);

//---- initial settings

i=Bars-2;

if(counted_bars==0 || first)

{

first=false;

dirlong=true;

dirshort=false;

start=Step;

last_high=-10000000.0;

last_low=10000000.0;

while(i>0)

{

save_lastreverse=i;

price_low=Low;

if(last_low>price_low) last_low=price_low;

price_high=High;

if(last_high<price_high) last_high=price_high;

if(price_high>High[i+1] && price_low>Low[i+1]) break;

if(price_high<High[i+1] && price_low<Low[i+1]) { dirlong=false; break; }

i--;

}

//---- initial zero

int k=i;

while(k<Bars)

{

SarBuffer[k]=0.0;

k++;

}

//---- check further

if(dirlong) { SarBuffer=Low[i+1]; ep=High; }

if(dirshort) { SarBuffer=High[i+1]; ep=Low; }

i--;

}

else

{

i=save_lastreverse+1;

start=save_start;

dirlong=save_dirlong;

dirshort=save_dirshort;

last_high=save_last_high;

last_low=save_last_low;

ep=save_ep;

sar=save_sar;

}

//----

while(i>=0)

{

price_low=Low;

price_high=High;

//--- check for reverse

if(dirlong==true && price_low<SarBuffer[i+1])

{

// Print("Section 1 Code executing"," I= ",i," DirLong= ",dirlong," DirShort= ",dirshort);

SaveLastReverse(i,true,false,start,price_low,last_high,ep,sar);

start=Step; dirlong=false; dirshort=true;

// Comment("I= ",i);

if (i==0)

{

PlaySound("alert.wav");

TradeTime=TimeToStr(CurTime(),TIME_SECONDS);

Comment("\nSell Alert","\nChart Time= ", TradeTime);

}

ep=price_low; last_low=price_low;

SarBuffer=last_high;

i--;

continue;

}

if(dirshort==true && price_high>SarBuffer[i+1])

{

// Print("Section 2 Code executing"," I= ",i," DirLong= ",dirlong," DirShort= ",dirshort);

SaveLastReverse(i,false,true,start,last_low,price_high,ep,sar);

start=Step; dirlong=true; dirshort=false;

// Comment("I= ",i);

if (i==0)

{

PlaySound("alert.wav");

TradeTime=TimeToStr(CurTime(),TIME_SECONDS);

Comment("\nBuy Alert","\nChart Time= ", TradeTime);

}

ep=price_high; last_high=price_high;

SarBuffer=last_low;

i--;

continue;

}

//---

price=SarBuffer[i+1];

sar=price+start*(ep-price);

if(dirlong)

{

/*

Comment("DirLong","\nI= ",i,"\nDirL ",dirlong,"\nDirS ",dirshort,

"\nStart= ",start,"\nLow= ",last_low,"\nHigh= ",last_high,

"\nEP= ",ep,"\nSAR= ",sar,"\nMinute= ",Minute());

*/

// Print("Section 3 Code executing"," I= ",i," DirLong= ",dirlong," DirShort= ",dirshort);

if(ep<price_high && (start+Step)<=Maximum) start+=Step;

if(price_high<High[i+1] && i==Bars-2) sar=SarBuffer[i+1];

//----

price=Low[i+1];

if(sar>price) sar=price;

price=Low[i+2];

if(sar>price) sar=price;

if(sar>price_low)

{

SaveLastReverse(i,true,false,start,price_low,last_high,ep,sar);

start=Step; dirlong=false; dirshort=true; ep=price_low;

last_low=price_low;

SarBuffer=last_high;

i--;

/*

if (i == 0)

{

Print("Section 3a Code executing"," I= ",i," DirLong= ",dirlong," DirShort= ",dirshort);

}

*/

if (dirshort && i==0)

{

PlaySound("alert.wav");

TradeTime=TimeToStr(CurTime(),TIME_SECONDS);

Comment("\nSell Alert","\nChart Time= ", TradeTime);

}

continue;

}

if(ep<price_high) { last_high=price_high; ep=price_high; }

}

if(dirshort)

{

/*

Comment("DirShort","\nI= ",i,"\nDirL ",dirlong,"\nDirS ",dirshort,

"\nStart= ",start,"\nLow= ",last_low,"\nHigh= ",last_high,

"\nEP= ",ep,"\nSAR= ",sar,"\nMinute= ",Minute());

*/

// Print("Section 4 Code executing"," I= ",i," DirLong= ",dirlong," DirShort= ",dirshort);

if(ep>price_low && (start+Step)<=Maximum) start+=Step;

if(price_low<Low[i+1] && i==Bars-2) sar=SarBuffer[i+1];

//----

price=High[i+1];

if(sar<price) sar=price;

price=High[i+2];

if(sar<price) sar=price;

if(sar<price_high)

{

SaveLastReverse(i,false,true,start,last_low,price_high,ep,sar);

start=Step; dirlong=true; dirshort=false; ep=price_high;

last_high=price_high;

SarBuffer=last_low;

i--;

/*

if (i == 0)

{

Print("Section ###### Code executing"," I= ",i," DirLong= ",dirlong," DirShort= ",dirshort);

}

*/

if (dirlong && i==0)

{

PlaySound("alert.wav");

TradeTime=TimeToStr(CurTime(),TIME_SECONDS);

Comment("\nBuy Alert","\nChart Time= ", TradeTime);

}

continue;

}

if(ep>price_low) { last_low=price_low; ep=price_low; }

}

SarBuffer=sar;

i--;

}

// sar=SarBuffer[0];

// price=iSAR(NULL,0,Step,Maximum,0);

// if(sar!=price) Print("custom=",sar," SAR=",price," counted=",counted_bars);

// if(sar==price) Print("custom=",sar," SAR=",price," counted=",counted_bars);

//----

return(0);

}

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

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте!

 

Прозба к программистам.Как написать alert.Чтобы при пересечении двух скользящих издавался звуковой сигнал.

 

С Уважением Александр

NDuet_T101.rar

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте!

 

Прозба к программистам.Как написать alert.Чтобы при пересечении двух скользящих издавался звуковой сигнал.

 

С Уважением Александр

Вот. Нашел этот индюк случайно, пока искал параболик со звонком. 2 настраиваемых МА+алерт.

Удачи!

2xMA.rar

Ссылка на комментарий
Поделиться на другие сайты

Здраствуйте.

Есть желание, несколько раз писал об этом, но увы не смог получить ответ.

Желание такое: Есть "Туннельный метод Вегаса" основанный на вход в рынок от пробития туннеля, когда валюты выйдут из туннеля, образованные от ЕМА 144 и 169 на часовом графике. При этом цели (если вверх конечно эти цыфры добавляются к показателю точки старта, а если вниз - то отнимаются от него) такие: 1)=55, 2)=89, 3)=144, 4)=233, 5)=377. Похож на использование Фибо-сетки, но в отличии от Фибо-сетки (у фибо есть две точки), при этом виде определения целей используется только одна точка - точка старта. И от точки старта вверх и вниз чтобы показывался вышеуказанные уровни.

Например: точка старта 1.6500: если пойдет вверх к нему индикатор (или скрипт) плюсует 55, 89. 144, 233 377 и мы видим эти уровни = 1.6555, 1.6589 ... , а если вниз, то от него индикатор (или скрипт) отнимает 55,89,144,233,377 и показывает уровни на подобии фибо-сетки.

Спасибо заранее кто отклыкнется.

Ссылка на комментарий
Поделиться на другие сайты

Всем доброго времени суток, успехов и профита!

Пытался на днях доработать индикатор ks99 (Александра) АО_ZZ,

чтобы рисовал волны не по пересечению 0, а по пересечению линии баланса Зотика

и возможностью менять цвета импульсных и коррекционных волн, не получается;(((

Просьба к более опытным коллегам и модераторам ветки помочь и подсказать как и что!

В архиве индикатор и картинка.

Азы MQL знакомы.

 

Заранее СПАСИБО!

 

С Уважением,

Сергей

AO_ZZ_Color.rar

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Здраствуйте.

Есть желание, несколько раз писал об этом, но увы не смог получить ответ.

Желание такое: Есть "Туннельный метод Вегаса" основанный на вход в рынок от пробития туннеля, когда валюты выйдут из туннеля, образованные от ЕМА 144 и 169 на часовом графике. При этом цели (если вверх конечно эти цыфры добавляются к показателю точки старта, а если вниз - то отнимаются от него) такие: 1)=55, 2)=89, 3)=144, 4)=233, 5)=377. Похож на использование Фибо-сетки, но в отличии от Фибо-сетки (у фибо есть две точки), при этом виде определения целей используется только одна точка - точка старта. И от точки старта вверх и вниз чтобы показывался вышеуказанные уровни.

Например: точка старта 1.6500: если пойдет вверх к нему индикатор (или скрипт) плюсует 55, 89. 144, 233 377 и мы видим эти уровни = 1.6555, 1.6589 ... , а если вниз, то от него индикатор (или скрипт) отнимает 55,89,144,233,377 и показывает уровни на подобии фибо-сетки.

Спасибо заранее кто отклыкнется.

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

//| Тунель Вегаса.mq4 |

//| Yeg |

//| |

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

#property copyright "Yeg"

#property link ""

 

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 DeepSkyBlue

#property indicator_color2 Blue

//---- input parameters

extern int ПериодМА1=144;

extern int ПериодМА2=169;

extern int Уровень1=55;

extern int Уровень2=89;

extern int Уровень3=144;

extern int Уровень4=233;

extern int Уровень5=377;

extern color Цель1=Red;

extern color Цель2=Orange;

extern color Цель3=Green;

extern color Цель4=Yellow;

extern color Цель5=Gold;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double l1,l2,l3,l4,l5,tv;

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

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_LINE,0,2);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_LINE,0,2);

SetIndexBuffer(1,ExtMapBuffer2);

 

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

 

//----

return(0);

}

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

//Эта функция показывает линии

void Make()

{

ObjectCreate("Line1",OBJ_HLINE,0,0,l1);

ObjectCreate("Line2",OBJ_HLINE,0,0,l2);

ObjectCreate("Line3",OBJ_HLINE,0,0,l3);

ObjectCreate("Line4",OBJ_HLINE,0,0,l4);

ObjectCreate("Line5",OBJ_HLINE,0,0,l5);

ObjectSet("Line1",OBJPROP_COLOR,Цель1);

ObjectSet("Line2",OBJPROP_COLOR,Цель2);

ObjectSet("Line3",OBJPROP_COLOR,Цель3);

ObjectSet("Line4",OBJPROP_COLOR,Цель4);

ObjectSet("Line5",OBJPROP_COLOR,Цель5);

 

}

//Эта функция прячет линии

void Del()

{

ObjectDelete("Line1");

ObjectDelete("Line2");

ObjectDelete("Line3");

ObjectDelete("Line4");

ObjectDelete("Line5");

}

 

 

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

int start()

{

int limit,counted_bars=IndicatorCounted();

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

if(counted_bars>0)counted_bars--;

limit=Bars-counted_bars;

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

{

 

ExtMapBuffer1=iMA(NULL,0,ПериодМА1,0,MODE_EMA,PRICE_CLOSE,i);

ExtMapBuffer2=iMA(NULL,0,ПериодМА2,0,MODE_EMA,PRICE_CLOSE,i);

if (Close[1]>ExtMapBuffer2 && Close[2]<ExtMapBuffer2)

{

Del();

tv=ExtMapBuffer2;

l1=tv+Уровень1*Point;

l2=tv+Уровень2*Point;

l3=tv+Уровень3*Point;

l4=tv+Уровень4*Point;

l5=tv+Уровень5*Point;

Make();

}

//-----------------------

if (Close[1]<ExtMapBuffer1 && Close[2]>ExtMapBuffer1)

{

Del();

tv=ExtMapBuffer1;

l1=tv-Уровень1*Point;

l2=tv-Уровень2*Point;

l3=tv-Уровень3*Point;

l4=tv-Уровень4*Point;

l5=tv-Уровень5*Point;

Make();

}

}

 

return(0);

}

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

По изученному в этой ветке получилось так, вроде работает! За точку входа считается первое закрытие вверх или вниз от туннеля.

Буду Благодарен если кто подскажет, что не так!

Уважаемый Liv, а Вы будете продолжать уроки?

Ссылка на комментарий
Поделиться на другие сайты

  • 7 месяцев спустя...

Здравствуйте коллеги.Приходится сидеть с ребенком и процесс контроля за ценой бывает затруднителен.Не могли бы .если не трудно. скрипт сделать для такого отображения цены как на рисунке.

Спасибо.Буду очень признателен.

http://s61.radikal.ru/i173/1007/34/2eaf2cf0c259.jpg

Ссылка на комментарий
Поделиться на другие сайты

Здраствуйте.

...

Спасибо заранее кто отклыкнется.

 

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

//| Тунель Вегаса.mq4 |

//| Yeg |

//| |

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

...

 

По изученному в этой ветке получилось так, вроде работает! За точку входа считается первое закрытие вверх или вниз от туннеля.

Буду Благодарен если кто подскажет, что не так!

 

Спасибо большое за проделанный труд. Респект. Вот картина что получилось:

 

http://i065.radikal.ru/1007/ca/ad0ba9946994.png

 

То есть он ведет отсчет не от уровня канала, откуда оттолкнулась цена (на рисунке указан уровень 0.8755 и от него хотелось узнать цели), а от уровня последней цены (показаны синими стрелками вниз).

 

Кто-то сделал такую прогу: Vegas.zip

 

- на картинке квадрат внутри графика и его бычьи цели от 0.8755...

 

Здесь есть сам метод, чтобы было представление о методе: Туннельный метод Вегаса. (в конце поста №-33)

 

Еще раз спасибо.

 

P.S. Может индикатор действительно показывает те цели в момент оттолкнения от уровня канала, но я не наблюдал... это первичная картина того, после чего я повесил этот индикатор на график. :unsure: ...

Ссылка на комментарий
Поделиться на другие сайты

Здраствуйте.

...

Спасибо заранее кто отклыкнется.

 

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

//| Тунель Вегаса.mq4 |

//| Yeg |

//| |

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

...

 

По изученному в этой ветке получилось так, вроде работает! За точку входа считается первое закрытие вверх или вниз от туннеля.

Буду Благодарен если кто подскажет, что не так!

 

Спасибо большое за проделанный труд. Респект. Вот картина что получилось:

 

http://i065.radikal.ru/1007/ca/ad0ba9946994.png

 

То есть он ведет отсчет не от уровня канала, откуда оттолкнулась цена (на рисунке указан уровень 0.8755 и от него хотелось узнать цели), а от уровня последней цены (показаны синими стрелками вниз).

 

Кто-то сделал такую прогу: Vegas.zip

 

- на картинке квадрат внутри графика и его бычьи цели от 0.8755...

 

Здесь есть сам метод, чтобы было представление о методе: Туннельный метод Вегаса. (в конце поста №-33)

 

Еще раз спасибо.

 

P.S. Может индикатор действительно показывает те цели в момент оттолкнения от уровня канала, но я не наблюдал... это первичная картина того, после чего я повесил этот индикатор на график. :unsure: ...

 

Интересно ) Со своей стороны тоже благодарность авторам.

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...