Тут как раз используется функция ValueWhen, принципиально отличающая MQL4 от языка метасток. Влоб не переведешь. ValueWhen возвращает значение минимума бара в точке прорыва максимумом бара 13-и дневного максимума, вторая строчка - значение максимума в точке прорыва минимумом 13-ти дневного минимума. Дальше проще - Ref - это ссылка на бар с определенным сдвигом. Конструкция if: if(условие, возвращаемое значение если условие выполняется, если не выполняется)
L1:=ValueWhen(1,H>Ref(HHV(H,13),-1),L); ........... Метасток
if(High[1] > ArrayMaximum(High[],13,1)
L1=Low[1]; . ..... ..... ..MQL4
Это разве не равнозначно ?
L1:=ValueWhen(1,H>Ref(HHV(H,13),-1),L); ........... Метасток
if(High[1] > ArrayMaximum(High[],13,1)
L1=Low[1]; . ..... ..... ..MQL4
Напиши это в индикаторе для МТ и посмотри равнозначно или нет. По крайней мере одна ошибка есть.
Это разве не равнозначно ?
L1:=ValueWhen(1,H>Ref(HHV(H,13),-1),L); ........... Метасток
if(High[1] > ArrayMaximum(High[],13,1)
L1=Low[1]; . ..... ..... ..MQL4
Напиши это в индикаторе для МТ и посмотри равнозначно или нет. По крайней мере одна ошибка есть.
Нужно High[0], если максимум ищется с первого бара, а то прорыва
никогда не будет, и для поиска максимумов в ценах есть спец.
функции Highest и Lowest
Как же мне грамотно перевести этот код от начала и до конца
Остолось удалить ненужные сигналы
Что можно добавиь, чтобы сигнал не повторялсья
Судя по тому, что вместо кода представлена картинка, то для удаления стрелок следует воспользовать графическим редактором.
Судя по тому, что вместо кода представлена картинка, то для удаления стрелок следует воспользовать графическим редактором.
//+------------------------------------------------------------------+ //| 3Bn.mq4 | //| wg | //| | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Green #property indicator_color2 Red //---- buffers double buy[]; double sell[]; double H1[]; double H2[]; double H3[]; double L1[]; double L2[]; double L3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(8); IndicatorShortName("3Bn"); SetIndexBuffer(0,buy); SetIndexBuffer(1,sell); SetIndexBuffer(2,H1); SetIndexBuffer(3,H2); SetIndexBuffer(4,H3); SetIndexBuffer(5,L1); SetIndexBuffer(6,L2); SetIndexBuffer(7,L3); SetIndexStyle(0,DRAW_ARROW,EMPTY,1); SetIndexArrow(0,233); // Pfeiltyp SetIndexDrawBegin(0,14); SetIndexLabel(0,"3BarNetLong"); SetIndexStyle(1,DRAW_ARROW,EMPTY,1); SetIndexArrow(1,234); // Pfeiltyp SetIndexDrawBegin(1,14); SetIndexLabel(1,"3BarNetShort"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit,i,j; int LLV,HHV,b; int counted_bars=IndicatorCounted(); //---- последний посчитанный бар будет пересчитан if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- основной цикл for(b=limit; b>0; b--) { H2[b]=High[b+1]; L2[b]=Low[b+1]; //------------ if(High[b+2]>H2[b])H3[b]=High[b+2]; else if(High[b+3]>H2[b])H3[b]=High[b+3]; else if(High[b+4]>H2[b])H3[b]=High[b+4]; else if(High[b+5]>H2[b])H3[b]=High[b+5]; else if(High[b+6]>H2[b])H3[b]=High[b+6]; else if(High[b+7]>H2[b])H3[b]=High[b+7]; else if(High[b+8]>H2[b])H3[b]=High[b+8]; else if(High[b+9]>H2[b])H3[b]=High[b+9]; else if(High[b+10]>H2[b])H3[b]=High[b+10]; else if(High[b+11]>H2[b])H3[b]=High[b+11]; else if(High[b+12]>H2[b])H3[b]=High[b+12]; else if(High[b+13]>H2[b])H3[b]=High[b+13]; else H3[b]=High[b+14]; //--------------- if(Low[b+2]<L2[b])L3[b]=Low[b+2]; else if(Low[b+3]<L2[b])L3[b]=Low[b+3]; else if(Low[b+4]<L2[b])L3[b]=Low[b+4]; else if(Low[b+5]<L2[b])L3[b]=Low[b+5]; else if(Low[b+6]<L2[b])L3[b]=Low[b+6]; else if(Low[b+7]<L2[b])L3[b]=Low[b+7]; else if(Low[b+8]<L2[b])L3[b]=Low[b+8]; else if(Low[b+9]<L2[b])L3[b]=Low[b+9]; else if(Low[b+10]<L2[b])L3[b]=Low[b+10]; else if(Low[b+11]<L2[b])L3[b]=Low[b+11]; else if(Low[b+12]<L2[b])L3[b]=Low[b+12]; else if(Low[b+13]<L2[b])L3[b]=Low[b+13]; else L3[b]=Low[b+14]; if(Close[b]>H3[b]) buy[b]=Low[b]; else buy[b]=0; if(Close[b]<L3[b]) sell[b]=High[b]; else sell[b]=0; } //----------------------- return(0); } //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //| 3Bn.mq4 | //| wg | //| | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Green #property indicator_color2 Red //---- buffers double buy[]; double sell[]; double H1[]; double H2[]; double H3[]; double L1[]; double L2[]; double L3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(8); IndicatorShortName("3Bn"); SetIndexBuffer(0,buy); SetIndexBuffer(1,sell); SetIndexBuffer(2,H1); SetIndexBuffer(3,H2); SetIndexBuffer(4,H3); SetIndexBuffer(5,L1); SetIndexBuffer(6,L2); SetIndexBuffer(7,L3); SetIndexStyle(0,DRAW_ARROW,EMPTY,1); SetIndexArrow(0,233); // Pfeiltyp SetIndexDrawBegin(0,14); SetIndexLabel(0,"3BarNetLong"); SetIndexStyle(1,DRAW_ARROW,EMPTY,1); SetIndexArrow(1,234); // Pfeiltyp SetIndexDrawBegin(1,14); SetIndexLabel(1,"3BarNetShort"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { static int lt; int limit,i,j; int LLV,HHV,b; int counted_bars=IndicatorCounted(); //---- последний посчитанный бар будет пересчитан if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- основной цикл for(b=limit; b>0; b--) { H2[b]=High[b+1]; L2[b]=Low[b+1]; //------------ if(High[b+2]>H2[b])H3[b]=High[b+2]; else if(High[b+3]>H2[b])H3[b]=High[b+3]; else if(High[b+4]>H2[b])H3[b]=High[b+4]; else if(High[b+5]>H2[b])H3[b]=High[b+5]; else if(High[b+6]>H2[b])H3[b]=High[b+6]; else if(High[b+7]>H2[b])H3[b]=High[b+7]; else if(High[b+8]>H2[b])H3[b]=High[b+8]; else if(High[b+9]>H2[b])H3[b]=High[b+9]; else if(High[b+10]>H2[b])H3[b]=High[b+10]; else if(High[b+11]>H2[b])H3[b]=High[b+11]; else if(High[b+12]>H2[b])H3[b]=High[b+12]; else if(High[b+13]>H2[b])H3[b]=High[b+13]; else H3[b]=High[b+14]; //--------------- if(Low[b+2]<L2[b])L3[b]=Low[b+2]; else if(Low[b+3]<L2[b])L3[b]=Low[b+3]; else if(Low[b+4]<L2[b])L3[b]=Low[b+4]; else if(Low[b+5]<L2[b])L3[b]=Low[b+5]; else if(Low[b+6]<L2[b])L3[b]=Low[b+6]; else if(Low[b+7]<L2[b])L3[b]=Low[b+7]; else if(Low[b+8]<L2[b])L3[b]=Low[b+8]; else if(Low[b+9]<L2[b])L3[b]=Low[b+9]; else if(Low[b+10]<L2[b])L3[b]=Low[b+10]; else if(Low[b+11]<L2[b])L3[b]=Low[b+11]; else if(Low[b+12]<L2[b])L3[b]=Low[b+12]; else if(Low[b+13]<L2[b])L3[b]=Low[b+13]; else L3[b]=Low[b+14]; buy[b]=0; sell[b]=0; if(Close[b]>H3[b] && lt!=1){ buy[b]=Low[b]; lt=1; } if(Close[b]<L3[b] && lt!=2){ sell[b]=High[b]; lt=2; } } //----------------------- return(0); } //+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как можно перевести код с Метастока
L1:=ValueWhen(1,H>Ref(HHV(H,13),-1),L);
H1:=ValueWhen(1,L<Ref(LLV(L,13),-1),H);
L2:=If(Ref(L,-1)<L1,Ref(L,-1),If(Ref(L,-2)<L1,Ref(L,-2),If(Ref(L,-3)<L1, Ref(L,-3),
If(Ref(L,-4)<L1,Ref(L,-4),If(Ref(L,-5)<L1,Ref(L,-5),If(Ref(L, -6)<L1, Ref(L,-6),
If(Ref(L,-7)<L1,Ref(L,-7),If(Ref(L,-8)<L1,Ref(L,-8),If(Ref(L, -9)<L1, Ref(L,-9),
If(Ref(L,-10)<L1,Ref(L,-10),If(Ref(L,-11)<L1,Ref(L,-11),
If(Ref(L,-12)<L1,Ref(L,-12),Ref(L,-13)))))))))))));
H2:=If(Ref(H,-1)>H1,Ref(H,-1),If(Ref(H,-2)>H1,Ref(H,-2),If(Ref(H,-3)>H1, Ref(H,-3),
If(Ref(H,-4)>H1,Ref(H,-4),If(Ref(H,-5)>H1,Ref(H,-5),If(Ref(H, -6)>H1, Ref(H,-6),
If(Ref(H,-7)>H1,Ref(H,-7),If(Ref(H,-8)>H1,Ref(H,-8),If(Ref(H, -9)>H1, Ref(H,-9),
If(Ref(H,-10)>H1,Ref(H,-10),If(Ref(H,-11)>H1,Ref(H,-11),
If(Ref(H,-12)>H1,Ref(H,-12),Ref(H,-13)))))))))))));
L3:=If(Ref(L,-2)<L2,Ref(L,-2),If(Ref(L,-3)<L2,Ref(L,-3),If(Ref(L,-4)<L2, Ref(L,-4),
If(Ref(L,-5)<L2,Ref(L,-5),If(Ref(L,-6)<L2,Ref(L,-6),If(Ref(L, -7)<L2, Ref(L,-7),
If(Ref(L,-8)<L2,Ref(L,-8),If(Ref(L,-9)<L2,Ref(L,-9),If(Ref(L, -10)<L2, Ref(L,-10),
If(Ref(L,-11)<L2,Ref(L,-11),If(Ref(L,-12)<L2,Ref(L,-12),
If(Ref(L,-13)<L2,Ref(L,-13),Ref(L,-14)))))))))))));
H3:=If(Ref(H,-2)>H2,Ref(H,-2),If(Ref(H,-3)>H2,Ref(H,-3),If(Ref(H,-4)>H2, Ref(H,-4),
If(Ref(H,-5)>H2,Ref(H,-5),If(Ref(H,-6)>H2,Ref(H,-6),If(Ref(H, -7)>H2, Ref(H,-7),
If(Ref(H,-8)>H2,Ref(H,-8),If(Ref(H,-9)>H2,Ref(H,-9),If(Ref(H, -10)>H2, Ref(H,-10),
If(Ref(H,-11)>H2,Ref(H,-11),If(Ref(H,-12)>H2,Ref(H,-12),
If(Ref(H,-13)>H2,Ref(H,-13),Ref(H,-14)))))))))))));
Спасибо зарание, если кто поможет