Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
Стандартный Price Channel :
//+------------------------------------------------------------------+ //| Price Channel.mq4 | //| | //| http://forex.kbpauk.ru/ | //+------------------------------------------------------------------+ #property link "http://forex.kbpauk.ru/"
#property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 DodgerBlue #property indicator_color2 DodgerBlue #property indicator_color3 DodgerBlue //---- input parameters extern int ChannelPeriod=14; //---- buffers double UpBuffer[]; double DnBuffer[]; double MdBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE,2); SetIndexBuffer(0,UpBuffer); SetIndexBuffer(1,DnBuffer); SetIndexBuffer(2,MdBuffer); //---- name for DataWindow and indicator subwindow label short_name="Price Channel("+ChannelPeriod+")"; IndicatorShortName(short_name); SetIndexLabel(0,"Up Channel"); SetIndexLabel(1,"Down Channel"); SetIndexLabel(2,"Middle Channel"); //---- SetIndexDrawBegin(0,ChannelPeriod); SetIndexDrawBegin(1,ChannelPeriod); SetIndexDrawBegin(2,ChannelPeriod); //---- return(0); } //+------------------------------------------------------------------+ //| Price Channel | //+------------------------------------------------------------------+ int start() { int i,counted_bars=IndicatorCounted(); int k; double high,low,price; //---- if(Bars<=ChannelPeriod) return(0); //---- initial zero if(counted_bars<1) for(i=1;i<=ChannelPeriod;i++) UpBuffer[Bars-i]=0.0; //---- i=Bars-ChannelPeriod-1; if(counted_bars>=ChannelPeriod) i=Bars-counted_bars-1; while(i>=0) { high=High; low=Low; k=i-1+ChannelPeriod; while(k>=i) { price=High[k]; if(high<price) high=price; price=Low[k]; if(low>price) low=price; k--; } UpBuffer=high; DnBuffer=low; MdBuffer=(high+low)/2; i--; } return(0); } //+------------------------------------------------------------------+
|
Mako
Свой человек

Зарегистрирован: 18/10/2003
Сообщений: 117
Нахождение: Восточная Сибирь
|
|
Здравствуй Абориген. Спасибо за индикатор, но он не встает! Жалуется на high=High; и др.... Что-то на точки с запятой, на последующую работу с этими переменными. ';' - series array has not left square bracket. zero shift assumed ';' - series array has not left square bracket. zero shift assumed '=' - left square parenthesis expected for array '=' - left square parenthesis expected for array '=' - left square parenthesis expected for array 3 error(s), 2 warning(s)
-------------------- Труднее всего ответить на вопрос, ответ на который очевиден.
|
Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
Чой-то MQL4 без архивирования во вложения не добавляется  Ага. Будем прикладывать супер-пупер архивы по 2 кб.
|
Mako
Свой человек

Зарегистрирован: 18/10/2003
Сообщений: 117
Нахождение: Восточная Сибирь
|
|
ОК спасибо Абориген, работает! У меня к тебе просьба можно ли этот индикатор переделать для М4. Заранее благодарен! :-)
/*[[ Name := Demark Trend New (R*) Author := Sergey Malkov Link := malkov@nsk.ru Separate Window := No First Color := LightBlue First Draw Type := Symbol First Symbol := 161 Use Second Data := Yes Second Color := Red Second Draw Type := Symbol Second Symbol := 164 ]]*/ Input: StepBack (0); Variable: i(1),NP(0),D(0),iP(0),iB(0),PP1(0),PP2(0),PP3(0),S1(0),S2(0); Variable: UpLev(0),DownLev(0),UpV(0),DownV(0); Array: UpB[1,2](0),UpP[1,2](0),UpLevel[1,2](0),UpBT[1,2](0); Array: DownB[1,2](0),DownP[1,2](0),DownLevel[1,2](0),DownBT[1,2](0); SetLoopCount(0);// loop from first bar to current bar (with shift=0) DelArrow(0,0); //================================================= //******** Поиск опорных точек предложения ******** //================================================= D=StepBack+2; NP=0;i=1; While NP<D Begin If H>H[i+1] & H>H[i-1] & H>C[i+2] then {UpLev=1; If i>1 then {if H>H[i+2] & H>H[i-2] then UpLev=2; If i>2 then {if H>H[i+3] & H>H[i-3] then UpLev=3; If i>3 then {if H>H[i+4] & H>H[i-4] then UpLev=4;}}} UpB[1,2]=UpB[1,1];UpB[1,1]=i; UpBT[1,2]=UpBT[1,1];UpBT[1,1]=Time; UpP[1,2]=UpP[1,1];UpP[1,1]=H; UpLevel[1,2]=UpLevel[1,1];UpLevel[1,1]=UpLev; UpV=(UpP[1,2]-UpP[1,1])/(UpB[1,1]-UpB[1,2]); NP=NP+1; }i=i+1;End;
//================================================= //********** Поиск опорных точек спроса *********** //================================================= NP=0;i=1; While NP<D Begin If L<L[i+1] & L<L[i-1] & L<C[i+2] then {DownLev=1; If i>1 then {if L<L[i+2] & L<L[i-2] then DownLev=2; If i>2 then {if L<L[i+3] & L<L[i-3] then DownLev=3; If i>3 then {if L<L[i+4] & L<L[i-4] then DownLev=4;}}} DownB[1,2]=DownB[1,1];DownB[1,1]=i; DownBT[1,2]=DownBT[1,1];DownBT[1,1]=Time; DownP[1,2]=DownP[1,1];DownP[1,1]=L; DownLevel[1,2]=DownLevel[1,1];DownLevel[1,1]=DownLev; DownV=(DownP[1,2]-DownP[1,1])/(DownB[1,1]-DownB[1,2]); NP=NP+1; }i=i+1;End; //================================================= //**** Ищем точку пробоя и вычисляем проекторы **** //================================================= D=Max(UpB[1,1],DownB[1,1]); For i=D DownTo 0 Begin If C>UpP[1,1]+UpV*(UpB[1,1]-i) & C[i+1]<UpP[1,1]+UpV*(UpB[1,1]-(i+1))then {iB=i; iP=UpP[1,1]+UpV*(UpB[1,1]-i); S1=Lowest(MODE_LOW,UpB[1,1],UpB[1,1]-iB); S2=Lowest(MODE_CLOSE,UpB[1,1],UpB[1,1]-iB); PP1=iP+((UpP[1,1]+UpV*(UpB[1,1]-S1))-L[S1]); PP2=iP+((UpP[1,1]+UpV*(UpB[1,1]-S2))-L[S2]); PP3=iP+((UpP[1,1]+UpV*(UpB[1,1]-S1))-C[S1]); } If C<DownP[1,1]+DownV*(DownB[1,1]-i) & C[i+1]>DownP[1,1]+DownV*(DownB[1,1]-(i+1))then {iB=i; iP=DownP[1,1]+DownV*(DownB[1,1]-i); S1=Highest(MODE_HIGH,DownB[1,1],DownB[1,1]-iB); S2=Highest(MODE_CLOSE,DownB[1,1],DownB[1,1]-iB); PP1=iP-(H[S1]-(DownP[1,1]+DownV*(DownB[1,1]-S1))); PP2=iP-(H[S2]-(DownP[1,1]+DownV*(DownB[1,1]-S2))); PP3=iP-(C[S1]-(DownP[1,1]+DownV*(DownB[1,1]-S1))); } End;
//================================================= //******** Рисуем опорные точки и TD-линии ******** //================================================= SetIndexValue(UpB[1,1],UpP[1,1]); SetIndexValue(UpB[1,2],UpP[1,2]); SetIndexValue(DownB[1,1],DownP[1,1]); SetIndexValue(DownB[1,2],DownP[1,2]); MoveObject("UpTrend",OBJ_TRENDLINE,UpBT[1,1],UpP[1,1],UpBT[1,2],UpP[1,2],CadetBlue,2,STYLE_SOLID); MoveObject("DownTrend",OBJ_TRENDLINE,DownBT[1,1],DownP[1,1],DownBT[1,2],DownP[1,2],HotPink,2,STYLE_SOLID);
Comment("UpTrend : Level ",Min(UpLevel[1,2],UpLevel[1,1])," magnitude","\n", "DownTrend : Level ",Min(DownLevel[1,2],DownLevel[1,1])," magnitude");
//======================================================== //*** Если пробило, то ставим точку и рисуем проекторы *** //======================================================== SetIndexValue2(iB,iP); MoveObject("PP1",OBJ_HLINE,0,0,0,PP1,Red,1,STYLE_DOT); MoveObject("PP2",OBJ_HLINE,0,0,0,PP2,Blue,1,STYLE_DOT); MoveObject("PP3",OBJ_HLINE,0,0,0,PP3,Green,1,STYLE_DOT);
-------------------- Труднее всего ответить на вопрос, ответ на который очевиден.
|
Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
Вынужден признать, что ничего не получается. Промучился целый день. Хэлп по MQL4 пока просто сиротский. Методом "научного тыка" осваивается медленно. Подождем нормального описания языка, а пока можно портировать с MQL2 что-либо попроще.
|
Mako
Свой человек

Зарегистрирован: 18/10/2003
Сообщений: 117
Нахождение: Восточная Сибирь
|
|
Спасибо за участие, всех благ и попутного тренда. С уважением, Сергей.
-------------------- Труднее всего ответить на вопрос, ответ на который очевиден.
|
Profi_R
Свой человек
 
Зарегистрирован: 14/10/2004
Сообщений: 241
Нахождение: Российская Федерация, Казань
|
|
Подскажите пожалуйста разницу в возвращаемых значениях по Bars и IndicatorCounted()
-------------------- [url=http://bars-open.ru/Main.aspx]Проект
независимых разработчиков[/url]
[img]http://forex.kbpauk.ru/download.php?Number=209513[/img]
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
Uvazhajemij Aborigen,
Hotel sprositj, jestj li v novom MT4 vozmozhnostj "svajatj" indikator, kotorij mozhno uvidetj: tut. Imejetsa vvidu perepletjonnije T3. Tam on dlja AmiBroker. Kak ja ponimaju, v MT4 uzhe ne toljko 2 buffers. Kod MT4 dlja T3 uzhe jestj:
//+------------------------------------------------------------------+ //| T3.mq4 | //| MojoFX | //| http://groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/ | //+------------------------------------------------------------------+ #property copyright "MojoFX - Conversion only" #property link "http://groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/"
#property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 SteelBlue
extern int MA_Period = 14; extern double b = 0.7;
double MapBuffer[];
double e1,e2,e3,e4,e5,e6; double c1,c2,c3,c4; double n,w1,w2,b2,b3;
//+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators setting SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,SteelBlue); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); IndicatorShortName("Moving Average "+MA_Period); SetIndexBuffer(0,MapBuffer);
//---- variable reset e1=0; e2=0; e3=0; e4=0; e5=0; e6=0; c1=0; c2=0; c3=0; c4=0; n=0; w1=0; w2=0; b2=0; b3=0;
b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b+b3); c4=(1+3*b+b3+3*b2); n=MA_Period;
if (n<1) n=1; n = 1 + 0.5*(n-1); w1 = 2 / (n + 1); w2 = 1 - w1; //---- return(0); }
//+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); if (counted_bars<0) return (-1); if (counted_bars>0) counted_bars--; limit=Bars-counted_bars;
//---- indicator calculation
for(int i=limit; i>=0; i--) { e1 = w1*Close + w2*e1; e2 = w1*e1 + w2*e2; e3 = w1*e2 + w2*e3; e4 = w1*e3 + w2*e4; e5 = w1*e4 + w2*e5; e6 = w1*e5 + w2*e6; MapBuffer=c1*e6 + c2*e5 + c3*e4 + c4*e3; } //---- return(0); } //+------------------------------------------------------------------+
Spasibo.
-------------------- So Above, So Below.
|
Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
To: Profi_R ИМХО Общее кол-во баров на графике и кол-во обработанных индикатором.
To: MrJester Ваш индикатор содержит ошибки и не работает. Выкладываю исправленную версию. То, что Вы просили я тоже сделал и выкладываю. Не знаю как там в Амиброкере, а в Метатрейдере, сразу шесть однородных линий в одном окне - трудно читаемы.
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
To Aborigen
Spasibo!
Okazivajetsja, chtobi dobitsja pohozhevo effekta, nuzhno kruto pomenjatj periodi etih T3. Variant:
MA 1: 5 MA 2: 10 MA 3: 15 MA 4: 35 MA 5: 80 MA 6 : 280
I poluchajetsja pohozhe. No tut obnaruzhilasj problemka - MA 5 vsegda po vidu sovpadajet s MA 6, kakimi bi raznimi ne djelatj ih periodi, dazhe v kode indikatora.
A tak - escho raz spasibo.
-------------------- So Above, So Below.
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
Zabil prikrepitj kartinku. Vot.
-------------------- So Above, So Below.
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
Posledil za T3, kak to stranno on vedjot sebja s tekushimi dannimi - izlomi poluchajutsja. Interesno, pochemu tak?
Vot jescho kartinka.
-------------------- So Above, So Below.
|
skinner
Гость
Зарегистрирован: 17/11/2004
Сообщений: 18
|
|
А какой из них красит бары?
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
Цитата:
А какой из них красит бары?
Jesli Vi po povodu ssilki strategii na Amibroker vishe, to tut toljko tot indikator, kotorij vide perepletjonnih T3. Bari v MT4 krasit indikator Heikin-ashi, kotorij zapoluchitj mozhno tut.
-------------------- So Above, So Below.
|
skinner
Гость
Зарегистрирован: 17/11/2004
Сообщений: 18
|
|
Спасибо.. Не хватило у меня тяму на метаквоту глянуть... Но индикатор, как то не точно по барам рисует..
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
Цитата:
Спасибо.. Не хватило у меня тяму на метаквоту глянуть... Но индикатор, как то не точно по барам рисует..
Da, lazha. OHLC po prezhnemu ne mozhet modificirovatj, tipa takoi podhod "s boku". No hotj tak, a to v MT3 voobhe sushnjak.
-------------------- So Above, So Below.
|
Nikolos
Гость
Зарегистрирован: 10/04/2003
Сообщений: 2
|
|
Уважаемые форумяне, а не пробовал ли кто перевести на MQL4 индикаторы Юрика. Исходники для Омеги (Или что-то в этом роде) есть на этом форуме в ветке про Омегу. В прицепе моя попытка перевода J_TPO.
|
DanShu
Свой человек
Зарегистрирован: 06/12/2004
Сообщений: 55
Нахождение: BKK Thailand
|
|
Кто может, помогите!
Переложить индикатор под МТ4, очень нужно. Обещаю благодарность в разумных пределах.
Вот он:
/*[[
Name := #MAMA
Author := Aborigen
Link :=support@mechanicaltrade.ru
Separate Window := No
First Color := Aqua
First Draw Type := Line
First Symbol := 217
Use Second Data := Yes
Second Color := Chocolate
Second Draw Type := Line
Second Symbol := 218
]]*/
Vars: jI(0), jQ(0), DeltaPhase(0), alpha(0),Shift(0),ttime(0);
Array: Price[4](0),Smooth[7](0),Detrender[7](0), Q1[7](0),I1[7](0),
I2[2](0), Q2[2](0), Re[2](0), Im[2](0), SmoothPeriod[2](0), Period_[2](0), Phase[2](0),
MAMA[2](0), FAMA[2](0);
Inputs: FastLimit(0.5), SlowLimit(0.05);
if ttime=time then exit;
ttime=time;
SetLoopCount(0);
// loop from first bar to current bar (with shift=0)
For shift = 500 Downto 0 Begin
Price[1]=((H[shift]+L[shift])/2); Price[2]=((H[shift+1]+L[shift+1])/2);
Price[3]=((H[shift+2]+L[shift+2])/2); Price[4]=((H[shift+3]+L[shift+3])/2);
Smooth[1] = (4*Price[1] + 3*Price[2] + 2*Price[3] + Price[4]) / 10;
Detrender[1] = (0.0962*Smooth[1] + 0.5769*Smooth[3] - 0.5769*Smooth[5] - 0.0962*Smooth[7])*(0.075*Period_[2] + 0.54);
// {Compute InPhase and Quadrature components}
Q1[1] = (0.0962*Detrender[1] + 0.5769*Detrender[3] - 0.5769*Detrender[5] - 0.0962*Detrender[7])*(0.075*Period_[2] + 0.54);
I1[1] = Detrender[4];
// {Advance the phase of I1 and Q1 by 90 degrees}
jI = (0.0962*I1[1] + 0.5769*I1[3] - 0.5769*I1[5] - 0.0962*I1[7])*(0.075*Period_[2] + 0.54);
jQ = (0.0962*Q1[1] + 0.5769*Q1[3] - 0.5769*Q1[5] - 0.0962*Q1[7])*(0.075*Period_[2] + 0.54);
// {Phasor addition for 3 bar averaging)}
I2[1] = I1[1] - jQ;
Q2[1] = Q1[1] + jI;
// {Smooth the I and Q components before applying the discriminator}
I2[1] = 0.2*I2[1] + 0.8*I2[2];
Q2[1] = 0.2*Q2[1] + 0.8*Q2[2];
// {Homodyne Discriminator}
Re[1] = I2[1]*I2[2] + Q2[1]*Q2[2];
Im[1] = I2[1]*Q2[2] - Q2[1]*I2[2];
Re[1] = 0.2*Re[1] + 0.8*Re[2];
Im[1] = 0.2*Im[1] + 0.8*Im[2];
If Im[1] <> 0 and Re[1] <> 0 then Period_ [1]= 360/ArcTan(Im[1]/Re[1]);
If Period_[1] > 1.5*Period_[2] then Period_[1] = 1.5*Period_[2];
If Period_[1] < 0.67*Period_[2] then Period_[1] = 0.67*Period_[2];
If Period_[1] < 6 then Period_[1] = 6;
If Period_[1] > 50 then Period_[1] = 50;
Period_[1] = 0.2*Period_[1] + 0.8*Period_[2];
SmoothPeriod[1] =0.33*Period_[1] + 0.67*SmoothPeriod[2];
If I1[1] <> 0 then Phase[1] = (ArcTan(Q1[1] / I1[1]));
DeltaPhase = Phase[2] - Phase[1];
If DeltaPhase < 1 then DeltaPhase = 1;
alpha = FastLimit / DeltaPhase;
If alpha < SlowLimit then alpha = SlowLimit;
MAMA[1] = alpha*Price[1] + (1 - alpha)*MAMA[2];
FAMA[1] = 0.5*alpha*MAMA[1] + (1 - 0.5*alpha)*FAMA[2];
If shift<450 then Begin
SetIndexValue(shift,MAMA[1]);
SetIndexValue2(shift,FAMA[1]);
end;
Smooth[7]=Smooth[5];Smooth[6]=Smooth[5];Smooth[5]=Smooth[4];Smooth[4]=Smooth[3];Smooth[3]=Smooth[2];Smooth[2]=Smooth[1];
Detrender[7]=Detrender[6];Detrender[6]=Detrender[5];Detrender[5]=Detrender[4];Detrender[4]=Detrender[3];Detrender[3]=Detrender[2];Detrender[2]=Detrender[1];
Q1[7]=Q1[6];Q1[6]=Q1[5];Q1[5]=Q1[4];Q1[4]=Q1[3];Q1[3]=Q1[2];Q1[2]=Q1[1];
I1[7]=I1[6];I1[6]=I1[5];I1[5]=I1[4];I1[4]=I1[3];I1[3]=I1[2];I1[2]=I1[1];
Q2[2]=Q2[1];
I2[2]=I2[1];
Re[2]=Re[1];
Im[2]=Im[1];
SmoothPeriod[2]=SmoothPeriod[1];
Phase[2]=Phase[1];
Period_[2]=Period_[1];
MAMA[2]=MAMA[1];
FAMA[2]=FAMA[1];
End;
-------------------- mir
Редактировано Daniel_Shults (08/12/2004 21:54)
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
Pohozhe, chto uvazhajemij Aborigen uzhe prazdnujet...  Nu, poljubomu, vsem nailuchshih pozhelanij i horosho otdohnutj!
-------------------- So Above, So Below.
|
Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
Ваши адаптивные мувинги во вложении.
А не отвечаю я вовсе не из-за праздников. Просто, портирую я тут свои старые наработки с MQLII и плачу. Пишу и плачу... А потом код смотрю и рыдаю.  Вот когда MT4 каждые пять минут падать перестанет, да по языку нормальный хэлп выйдет...
|
Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
Исправил ошибки в Т3 
|
sergunя
Гость
Зарегистрирован: 10/08/2004
Сообщений: 14
|
|
Очень хотель бы этот индикатор уж очень я его люблю /*[[ Name := AltrTrend_Signal_v2 Author := OlegVS,GOODMAN Link := olegvs2003@yahoo.com Separate Window := No First Color := Green First Draw Type := Symbol First Symbol := 108 Use Second Data := Yes Second Color := Yellow Second Draw Type := Symbol Second Symbol := 108 ]]*/ Inputs : K(30),Kstop(0.5),Kperiod(150),PerADX(14),CountBars(1300); Variables : firstTime(True),shift(0), cnt(0), loopbegin(0),Range(0),AvgRange(0),SSP(0); Variables : smin(0), smax(0), SsMax(0), SsMin(0),val1(0),val2(0),value3(0),i1(0),MyBars(0); Array: Table_value2[500,3](0);
SetLoopCount(0);
If firstTime then { loopbegin = Bars-CountBars; MyBars=loopbegin; firstTime=False; }; For cnt = loopbegin to Bars-SSP+1 Begin SSP=Ceil(Kperiod/iADX(PerADX,MODE_MAIN,1)); shift=Bars-cnt-SSP+1; Range=0; AvgRange=0; For i1=shift To shift+SSP {AvgRange=AvgRange+Abs(High[i1]-Low[i1]); }; Range=AvgRange/(SSP+1);
SsMax = High[Highest(MODE_HIGH,shift+SSP-1,SSP)]; SsMin = Low[Lowest(MODE_LOW,shift+SSP-1,SSP)]; smin = SsMin+(SsMax-SsMin)*K/100; smax = SsMax-(SsMax-SsMin)*K/100;
Table_value2[shift,1]=shift; Table_value2[shift,2]=C[shift]; Table_value2[shift,3]=0; val1=0; val2=0; value3=0; If C[shift]<smin Then {i1=1; Table_value2[shift,3]=-1; While (Table_value2[shift+i1,3]>-1 And Table_value2[shift+i1,3]<1 And Table_value2[shift+i1,2]>0) {i1=i1+1;}; If Table_value2[shift+i1,3]=1 Then {value3=High[shift]+Range*Kstop; val1=value3; }; }; If C[shift]>smax Then {i1=1; Table_value2[shift,3]=1; While (Table_value2[shift+i1,3]>-1 And Table_value2[shift+i1,3]<1 And Table_value2[shift+i1,2]>0) {i1=i1+1;}; If Table_value2[shift+i1,3]=-1 Then {value3=Low[shift]-Range*Kstop; val2=value3; }; }; SetIndexValue(shift,val1); SetIndexValue2(shift,val2); If shift>0 then loopbegin=loopbegin+1; If MyBars<Bars And shift=0 Then { For i1=72 DownTo 2 Begin Table_value2[i1,1]=Table_value2[i1-1,1]; Table_value2[i1,2]=Table_value2[i1-1,2]; Table_value2[i1,3]=Table_value2[i1-1,3]; End; MyBars=MyBars+1; };
End;
|
ZR
Свой человек
Зарегистрирован: 12/12/2003
Сообщений: 55
|
|
Если не сложно, прошу перевести еще два индикатора
/*[[ Name := SO Author := Copyright © 2004, Aleksey Bykov Link := Separate Window := Yes First Color := White First Draw Type := Line First Symbol := 217 Use Second Data := No Second Color := Red Second Draw Type := Line Second Symbol := 218 Minimum Chart Limits := 0 Maximum Chart Limits := 100 ]]*/ Input: periodd(10),smooth(6),BarsCount(200); Variable: shift(0),val(0),i(0),maxx(0),minn(0);
SetLoopCount(0);
for shift=0 to barscount Begin val=0; for i=shift to shift+smooth-1 Begin maxx=Close[Highest(MODE_CLOSE,i+periodd-1,periodd)]; minn=Close[Lowest (MODE_CLOSE,i+periodd-1,periodd)]; val=val+100*(close-minn)/(maxx-minn); end; val=val/smooth; if val=0 then val=0.1;
SetIndexValue(shift,val*0.999); end;
====================================================================================
/*[[ Name := Pivot Daily Author := Copyright © 2004, MetaQuotes Software Corp. Link := http://www.metaquotes.ru/ Separate Window := No First Color := Blue First Draw Type := Line First Symbol := 217 Use Second Data := Yes Second Color := Red Second Draw Type := Line Second Symbol := 218 ]]*/ input: formula(0),show_comment(1),how_long(720),drw(1);
var: cnt(0),begin_bar(0),prev_day(0),cur_day(0),day_high(0),day_low(0),yesterday_high(0); var: yesterday_low(0),yesterday_close(0),today_open(0),textvar(""),timeShift(0); var: P(0),S(0),R(0),S0.5(0),R0.5(0),S1(0),R1(0),S1.5(0),R1.5(0),S2(0),R2(0),S2.5(0),R2.5(0),S3(0),R3(0) ;
for cnt = bars downto 0 { SetIndexValue(cnt, 0); SetIndexValue2(cnt, 0); };
if Period > 240 then exit; timeShift = 0;
if formula < 0 or formula > 3 then exit;
if how_long = -1 then { begin_bar = bars; } else { begin_bar = how_long; };
for cnt = begin_bar downto 1 { cur_day = TimeDay(time[cnt]); if prev_day != cur_day then { yesterday_close = CLOSE[cnt+1]; today_open = OPEN[cnt]; yesterday_high = day_high; yesterday_low = day_low; P = (yesterday_high + yesterday_low + yesterday_close + today_open) / 4; if formula = 1 then { R = P + P - yesterday_low; S = P + P - yesterday_high; } else if formula = 2 then { R = P + yesterday_high - yesterday_low; S = P - yesterday_high + yesterday_low; } else if formula = 3 then { R = P + P - yesterday_low - yesterday_low + yesterday_high; S = P + P - yesterday_high - yesterday_high + yesterday_low; };
day_high = HIGH[cnt]; day_low = LOW[cnt];
prev_day = cur_day; };
day_high = max(day_high, HIGH[cnt]); day_low = min(day_low, LOW[cnt]); if formula = 0 then { //if drw = 1 then SetIndexValue(cnt, P); if drw = 1 then SetIndexValue(cnt, 0); } else { if drw = 1 then { SetIndexValue(cnt, R); SetIndexValue2(cnt, S); }; }; textVar = TimeHour(time[0])+":"+TimeMinute(time[0])+" "+(60-Minute)+"R"; SetObjectText("Time",textVar,"Arial",8,White); MoveObject("Time",OBJ_TEXT,time[25],P,time[0],P,DarkMagenta); };
if show_comment = 1 then {
P = (yesterday_high + yesterday_low + yesterday_close)/3; // + today_open) / 4;
R0.5=(P+R1)/2; S0.5=(P+S1)/2; R1 = (2*P)-yesterday_low; S1 = (2*P)-yesterday_high; R1.5=(R1+R2)/2; S1.5=(S1+S2)/2;
R2 = P+(yesterday_high - yesterday_low); S2 = P-(yesterday_high - yesterday_low);
R2.5=(R2+R3)/2; S2.5=(S2+S3)/2;
R3 = (2*P)+(yesterday_high-(2*yesterday_low)); S3 = (2*P)-((2* yesterday_high)-yesterday_low); MoveObject("R1_line",OBJ_HLINE,time[cnt],R1,time[cnt],R1,DarkGreen,1,STYLE_DOT); MoveObject("R2_line",OBJ_HLINE,time[cnt],R2,time[cnt],R2,DarkGreen,1,STYLE_DOT); MoveObject("R3_line",OBJ_HLINE,time[cnt],R3,time[cnt],R3,DarkGreen,1,STYLE_DOT); MoveObject("P_line",OBJ_HLINE,time[cnt],P,time[cnt],P,DarkViolet,1,STYLE_DASH); MoveObject("S1_line",OBJ_HLINE,time[cnt],S1,time[cnt],S1,DarkRed,1,STYLE_DOT); MoveObject("S2_line",OBJ_HLINE,time[cnt],S2,time[cnt],S2,DarkRed,1,STYLE_DOT); MoveObject("S3_line",OBJ_HLINE,time[cnt],S3,time[cnt],S3,DarkRed,1,STYLE_DOT); SetObjectText("R1_txt","R1","Arial",8,DarkGreen); MoveObject("R1_txt",OBJ_TEXT,time[25],R1,time[1],R1,DarkGreen); SetObjectText("R2_txt","R2","Arial",8,DarkGreen); MoveObject("R2_txt",OBJ_TEXT,time[25],R2,time[1],R2,DarkGreen); SetObjectText("R3_txt","R3","Arial",8,DarkGreen); MoveObject("R3_txt",OBJ_TEXT,time[25],R3,time[1],R3,DarkGreen); SetObjectText("S1_txt","S1","Arial",8,DarkRed); MoveObject("S1_txt",OBJ_TEXT,time[25],S1,time[1],S1,DarkRed); SetObjectText("S2_txt","S2","Arial",8,DarkRed); MoveObject("S2_txt",OBJ_TEXT,time[25],S2,time[1],S2,DarkRed); SetObjectText("S3_txt","S3","Arial",8,DarkRed); MoveObject("S3_txt",OBJ_TEXT,time[25],S3,time[1],S3,DarkRed); };
|
MrJester
Гость
Зарегистрирован: 28/09/2003
Сообщений: 16
Нахождение: Riga
|
|
Цитата:
Исправил ошибки в Т3 
Boljshoje Vam spasibo! Boljshoje kak Lenin Vsjo rabotajet. Slov netu, Vi nastojashij gigant misli. Skazhite, a chto zhe vizivajet "ridanije" - imenno otsutstvije helpa ili drugije problemi s MQ4?
Naschot T3 Taotra: konechnaja podborka periodov T3: 5, 10, 15, 24, 34, 60. Toljko ja ih postavil obratnim porjadkom, chtobi bolee dlinnije T3 ne zakrivalji pervije 2, peresechenije kotorih i dajot iznachaljnij signal. A ostaljnije T3 dlja obshei ocenki situacii.
-------------------- So Above, So Below.
|
Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
Pivot
|
ZR
Свой человек
Зарегистрирован: 12/12/2003
Сообщений: 55
|
|
Цитата:
Pivot
Весьма Вам признателен за индикатор !!!
|
Begun
Душа форума

Зарегистрирован: 06/09/2003
Сообщений: 409
Нахождение: Москва
|
|
deinit не пашет
|
Aborigen
Свой человек
  
Зарегистрирован: 31/08/2003
Сообщений: 108
|
|
Deinit, я использовал для удаления надписей Pivot Point,R1,S1,R2...
1. Наводимся мышкой на любую линию индикатора, кликаем правой кнопкой, выбираем удалить индикатор. 2. Кликаем правой кнопкой мыши, вибираем список индикаторов, Pivot, удалить.
В том и другом случае надписи пропадают (только, что перепроверил). Проверял на версии 4.00 Build 141.
|
Begun
Душа форума

Зарегистрирован: 06/09/2003
Сообщений: 409
Нахождение: Москва
|
|
В 142 не работает. Надо будет на их форуме накляузничать.
|
salva
Ãîñòü
Зарегистрирован: 02/07/2003
Сообщений: 12
Нахождение: israel
|
|
iWeeklyPivot -Индикатор для MT3 предсказывающий pivot-уровень на неделю вперед но без расчета (R1-3;S3-1) 3 уровня сопротивления, 3 уровня поддержки . Если не сложно, прошу перевести в mt4 с (R1-3;S1-3) ---------------------------------------------------------------------------------------------------- input: EMA_period(1); // период сглаживания input: how_long(500); // сколько баров обрабатывать (-1 - все), рекомендую 1000
var: cnt(0); // счетчик баров var: begin_bar(0); // бар, с которого начинает работу индикатор var: last_week_high(0); // дневной high var: last_week_low(0); // дневной low var: last_week_close(0); var: this_week_open(0); var: P(0); // центральная цена var: K(0); // константа для сглаживания var: P_smoothed(0); // экспоненциально сглаженный P
// очищаем данные индикатора for cnt = bars downto 0 { SetIndexValue(cnt, 0); };
K = 2 / (EMA_period + 1);
// решаем с какого бара мы начнем считать наш индикатор if how_long = -1 then { begin_bar = bars; } else { begin_bar = how_long; };
// обходим бары слева направо for cnt = begin_bar downto 0 { // понедельник? if (2 == TimeDayOfWeek(time[cnt]) and 2 != TimeDayOfWeek(time[cnt+1])) then { last_week_close = CLOSE[cnt+1]; this_week_open = OPEN[cnt];
// вычисляем точный pivot P = (last_week_high + last_week_low + this_week_open + last_week_close) / 4; // вычисляем сглаженный pivot P_smoothed = K * P + (1-K) * P_smoothed; // т.к. начался новый день, то инициируем макс. и мин. текущего (уже) дня last_week_high = HIGH[cnt]; last_week_low = LOW[cnt]; };
// продолжаем накапливать данные last_week_high = max(last_week_high, HIGH[cnt]); last_week_low = min(last_week_low, LOW[cnt]); SetIndexValue(cnt, P_smoothed); }; // for
// nov 2004, Dmitriy
|
|