Помощь в кодировании - страница 160

 
TEAMTRADER:
Я скачал этот индикатор из одной из тем, и он намного лучше, чем индикаторы CCI-zones или Ma-zones.

Можно ли адаптировать его для отображения на экране, как в индикаторе зон?

Он установлен на настройку CCI 13, но если его можно легко сделать индикатором с переменной настройкой, то это было бы бонусом - но очень второстепенным запросом.

Это индикатор Forex-TSD, но папки mq4 с ним не было.

Спасибо

TEAMTRADER

Насколько я понимаю, это не cci, а thv t3 trix. Вам следует поискать некоторые вариации thv trix.

 

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

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

//| Copyright © 2008, ledxep |

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

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

#property copyright "Copyright © 2008, ledzep"

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

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Blue

//---- input parameters

double DayHigh,DayLow,DayHigh1,DayLow1;

int ObjectIdx;

int DayIdx;

int k;

string ObjName;

datetime StartTime;

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

//| Custom indicator initialization function |

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

int init()

{

return(0);

}

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

//| Deinitialization function |

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

int deinit()

{

ObjectsDeleteAll();

return(0);

}

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

//| Start function |

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

int start()

{

static bool first=true;

int i,counted_bars=IndicatorCounted();

double BarHour,BarMinute;

int WeekDay;

if(Bars<3) return(0);

i=Bars-3;

if(counted_bars==0 || first)

{

first=false;

while(i>=0)

{

TrendLine(StartTime,DayHigh1,Time,DayHigh1,Red);

TrendLine(StartTime,DayLow1,Time,DayLow1,Red);

if(High > DayHigh) DayHigh = High;

if(Low < DayLow) DayLow = Low;

if(TimeDay(Time) != TimeDay(Time))

{

DayHigh1=DayHigh;

DayLow1=DayLow;

DayHigh=Open;

DayLow=Open;

StartTime=Time;

}

i--;

}//while close

}

return(0);

}//start close

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

void TrendLine(datetime x1, double y1, datetime x2, double y2, color col)

{

ObjectIdx++;

ObjName="Line" + DoubleToStr(ObjectIdx,0);

ObjectCreate(ObjName, OBJ_TREND, 0, x1, y1, x2, y2);

ObjectSet(ObjName,OBJPROP_COLOR,col);

ObjectSet(ObjName,OBJPROP_RAY,0);

}

 
k3rn3l:
Младен, у меня есть индикатор, который строит линию для максимума и минимума предыдущего дня... но мне нужен такой же индикатор, который строит 3 дневных предыдущих максимума и минимума, не могли бы вы мне помочь? Спасибо заранее .

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

//| Copyright © 2008, ledxep |

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

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

#property copyright "Copyright © 2008, ledzep"

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

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Blue

//---- input parameters

double DayHigh,DayLow,DayHigh1,DayLow1;

int ObjectIdx;

int DayIdx;

int k;

string ObjName;

datetime StartTime;

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

//| Custom indicator initialization function |

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

int init()

{

return(0);

}

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

//| Deinitialization function |

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

int deinit()

{

ObjectsDeleteAll();

return(0);

}

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

//| Start function |

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

int start()

{

static bool first=true;

int i,counted_bars=IndicatorCounted();

double BarHour,BarMinute;

int WeekDay;

if(Bars<3) return(0);

i=Bars-3;

if(counted_bars==0 || first)

{

first=false;

while(i>=0)

{

TrendLine(StartTime,DayHigh1,Time,DayHigh1,Red);

TrendLine(StartTime,DayLow1,Time,DayLow1,Red);

if(High > DayHigh) DayHigh = High;

if(Low < DayLow) DayLow = Low;

if(TimeDay(Time) != TimeDay(Time))

{

DayHigh1=DayHigh;

DayLow1=DayLow;

DayHigh=Open;

DayLow=Open;

StartTime=Time;

}

i--;

}//while close

}

return(0);

}//start close

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

void TrendLine(datetime x1, double y1, datetime x2, double y2, color col)

{

ObjectIdx++;

ObjName="Line" + DoubleToStr(ObjectIdx,0);

ObjectCreate(ObjName, OBJ_TREND, 0, x1, y1, x2, y2);

ObjectSet(ObjName,OBJPROP_COLOR,col);

ObjectSet(ObjName,OBJPROP_RAY,0);

}

Боюсь, я не понимаю.

Этот индикатор строит максимум и минимум предыдущего дня за всю историю (столько дней, сколько есть на графике). Что именно означает "рисует 3 дневных предыдущих максимума и минимума"?

 
mladen:
Боюсь, я не понимаю, что индикатор рисует максимум и минимум предыдущего дня за всю историю (столько дней, сколько есть на графике). Что именно означает "рисует 3 дневных предыдущих максимума и минимума"?

Позвольте мне объяснить, я хочу, чтобы индикатор рисовал каждый день максимумы и минимумы предыдущих 3 дней.

 
k3rn3l:
Позвольте мне объяснить, я хочу, чтобы индикатор рисовал каждый день максимумы и минимумы за предыдущие 3 дня.

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

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 Red

extern int DaysForHighLow = 3;

double buffh[];

double buffl[];

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

//

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

int init()

{

SetIndexBuffer(0,buffh);

SetIndexBuffer(1,buffl);

return(0);

}

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for (int i=limit; i>=0; i--)

{

int y = iBarShift(NULL,PERIOD_D1,Time);

buffh = iHigh(NULL,PERIOD_D1,iHighest(NULL,PERIOD_D1,MODE_HIGH,DaysForHighLow,y));

buffl = iLow(NULL,PERIOD_D1,iLowest(NULL,PERIOD_D1,MODE_LOW,DaysForHighLow,y));

}

return(0);

}
 
mladen:
Попробуйте сделать что-то вроде этого (здесь используются не объекты, а буферы, и вы можете установить количество дней, которые вы хотите использовать для максимального максимума и минимального минимума)
#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 Red

extern int DaysForHighLow = 3;

double buffh[];

double buffl[];

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

//

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

int init()

{

SetIndexBuffer(0,buffh);

SetIndexBuffer(1,buffl);

return(0);

}

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for (int i=limit; i>=0; i--)

{

int y = iBarShift(NULL,PERIOD_D1,Time);

buffh = iHigh(NULL,PERIOD_D1,iHighest(NULL,PERIOD_D1,MODE_HIGH,DaysForHighLow,y));

buffl = iLow(NULL,PERIOD_D1,iLowest(NULL,PERIOD_D1,MODE_LOW,DaysForHighLow,y));

}

return(0);

}

спасибо mladen, извините за плохое объяснение...я имел ввиду максимум и минимум за каждые 3 дня предыдущих...например PreviousHighDaily[1],PreviuosHighDaily[2],PreviousHighDaily[3] и тоже самое для минимума....

 
k3rn3l:
спасибо mladen, извините за плохое объяснение...я имел ввиду максимум и минимум за каждые 3 предыдущих дня...например PreviousHighDaily[1],PreviuosHighDaily[2],PreviousHighDaily[3] и тоже самое для минимума....

Его проще найти, чем предыдущий (меньше вызовов функций ).

Вы можете сделать это следующим образом:

#property indicator_chart_window

#property indicator_buffers 6

#property indicator_color1 LimeGreen

#property indicator_color2 Red

#property indicator_color3 LimeGreen

#property indicator_color4 Red

#property indicator_color5 LimeGreen

#property indicator_color6 Red

#property indicator_width1 2

#property indicator_width2 2

#property indicator_style5 STYLE_DOT

#property indicator_style6 STYLE_DOT

double buffh1[];

double buffl1[];

double buffh2[];

double buffl2[];

double buffh3[];

double buffl3[];

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

//

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

int init()

{

SetIndexBuffer(0,buffh1);

SetIndexBuffer(1,buffl1);

SetIndexBuffer(2,buffh2);

SetIndexBuffer(3,buffl2);

SetIndexBuffer(4,buffh3);

SetIndexBuffer(5,buffl3);

return(0);

}

int start()

{

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for (int i=limit; i>=0; i--)

{

int y = iBarShift(NULL,PERIOD_D1,Time);

buffh1 = iHigh(NULL,PERIOD_D1,y+1);

buffl1 = iLow(NULL,PERIOD_D1,y+1);

buffh2 = iHigh(NULL,PERIOD_D1,y+2);

buffl2 = iLow(NULL,PERIOD_D1,y+2);

buffh3 = iHigh(NULL,PERIOD_D1,y+3);

buffl3 = iLow(NULL,PERIOD_D1,y+3);

}

return(0);

}

PS: самая толстая линия - 1 день назад, более тонкая - 2 дня назад, пунктирная - 3 дня назад.

 

Помогите с кодированием pls...........

Здравствуйте все эксперты здесь, может ли кто-нибудь помочь мне закодировать простой советник, который будет автоматически изменять TP последнего рабочего ордера так же, как текущий только что открытый ордер? Допустим, у меня есть 1 или более рабочих ордеров и несколько отложенных ордеров, когда отложенный ордер становится рабочим ордером, я надеюсь, что советник будет автоматически изменять TP (целевую цену) предыдущего рабочего ордера на текущий только что активный ордер. спасибо .....

 
jeffyap:
Coding help pls........... привет всем экспертам здесь, может ли кто-нибудь помочь мне закодировать простой советник, который будет автоматически изменять TP последнего рабочего ордера так же, как текущий ордер только что открыт? Допустим, у меня есть 1 или более рабочих ордеров и несколько отложенных ордеров, когда отложенный ордер становится рабочим ордером, я надеюсь, что советник будет автоматически изменять TP (целевую цену) предыдущего рабочего ордера на текущий только что активный ордер... спасибо ....

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

 

Привет, Младен,

если я хочу считать бары между двумя минимумами, как я могу избежать бара воскресенья 23.00 вечера до 00.00?

потому что на 4h графике есть этот бар и длится он только один час..... и он появляется также на дневном графике.

заранее спасибо