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

 
Air92:
Здравствуйте Mladen.Вы сделали версию этого индикатора. Я хочу попросить сделать здесь отдельно скользящую среднюю, как на примере другого индикатора, если это возможно.Спасибо.

Air92

Это не может быть сделано (уже используется 8 буферов рисования - metatrader 4 не позволяет более 8 буферов рисования)

 
mladen:
Air92 Это не может быть сделано (уже используется 8 буферов рисования - metatrader 4 не позволяет более 8 буферов рисования)

Хорошо, Младен. Я понял. Спасибо.

 

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

Не могли бы вы преобразовать этот MACD MTF indi в советника, покупать, когда macd зеленый на любых 3 tf, продавать, когда любые три красные. закрыть сделку и открыть новую на обратном тренде.

Необходимые настройки: трейлы, безубыток, убыток, вход на открытом или закрытом баре, Magic number и размер лота. На более низких tf работает хорошо! Буду признателен. Спасибо

Файлы:
 

Привет, я нашел кое-что интересное для всех нас на форуме.Есть программное обеспечение, которое может помочь предсказать направление следующей свечи.Я работал над этим скриптом mt4, чтобы добавить волатильность к нему, но не смог.Я хочу также сделать алерт, чтобы прийти на закрытие текущей свечи и сказать нам направление следующей свечи о формировании.Волатильность скажет нам размер или как далеко цена растянется.Принцип не мой, я скопировал его откуда-то.Скрипт действительно работает.Я хочу, чтобы программисты, такие как Codergurus и Mladin, пожалуйста, посмотрели на этот скрипт.Сейчас он не очень хорошо работает.Так как алерт продолжает жать и перерисовываться.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_width1 4

#property indicator_width2 4

extern bool Alerts = TRUE;

double CrossUp[];

double CrossDown[];

bool CrossedUp = false;

bool CrossedDown = false;

int SignalLabeled = 0; // 0: начальное состояние; 1: вверх; 2: вниз.

int upalert=false,downalert=false;

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

//| Пользовательская функция инициализации индикатора |

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

int init()

{

//---- индикаторы

SetIndexStyle(0,DRAW_ARROW, EMPTY);

SetIndexArrow(0,233);

SetIndexBuffer(0,CrossUp);

SetIndexStyle(1,DRAW_ARROW, EMPTY);

SetIndexArrow(1,234);

SetIndexBuffer(1,CrossDown);

//----

return(0);

}

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

//| Пользовательская функция деинициализации индикатора.

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

int deinit()

{

//----

//----

return(0);

}

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

//| Пользовательская функция итерации индикатора |

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

int start(){

int limit,i,counter;

double pnow;

double p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;

double SOT,SOT1,SOT2,SOT3,SOT4,SOT5,SOT6,SOT7,SOT8,SOT9,SOT10;

double SOTAV10;

double SOTAV2;

double Range, AvgRange;

int counted_bars=IndicatorCounted();

//---- проверка на возможные ошибки

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

//---- последний подсчитанный бар будет пересчитан.

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

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

counter=i;

Range=0;

AvgRange=0;

for (counter=i;counter<=i+12;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);

}

Range=AvgRange/10;

// текущая цена Close и Open

double OpenPricenow = Open ;

double ClosePricenow = Close ;

double Volumenow = Volume ;

// свеча 1

double OpenPrice1 = Open ;

double ClosePrice1 = Close ;

double Volume1 = Volume ;

// свеча 2

double OpenPrice2 = Open ;

double ClosePrice2 = Close ;

double Volume2 = Volume ;

// свеча 3

double OpenPrice3 = Open ;

double ClosePrice3 = Close ;

double Volume3 = Volume ;

// свеча 4

double OpenPrice4 = Open ;

double ClosePrice4 = Close ;

double Volume4 = Volume ;

// свеча 5

double OpenPrice5 = Open ;

double ClosePrice5 = Close ;

double Volume5 = Volume ;

// свеча 6

double OpenPrice6 = Open ;

double ClosePrice6 = Close ;

double Volume6=Volume ;

// свеча 7

double OpenPrice7 = Open ;

double ClosePrice7 = Close ;

double Volume7 = Volume ;

// свеча 8

double OpenPrice8 =Open ;

double ClosePrice8 =Close ;

double Volume8 =Volume;

// свеча 9

double OpenPrice9 = Open ;

double ClosePrice9 = Close ;

double Volume9 = Volume ;

// свеча 10

double OpenPrice10 =Open;

double ClosePrice10=Close;

double Volume10=Volume;

pnow = (ClosePricenow - OpenPricenow);

SOT = (pnow / Volumenow)*10000;

p1 = (ClosePrice1 - OpenPrice1);

SOT1 = (p1 / Volume1) *10000;

p2 = (ClosePrice2 - OpenPrice2);

SOT2 = (p2 / Volume2) *10000;

p3 = (ClosePrice3 - OpenPrice3);

SOT3 =(p3/Volume3)*10000;

p4=(ClosePrice4 - OpenPrice4);

SOT4=(p4/Volume4)*10000;

p5=(ClosePrice5 - OpenPrice5);

SOT5 =(p5/Volume5)*10000;

p6=(ClosePrice6 - OpenPrice6);

SOT6 =(p6/Volume6)*10000;

p7=(ClosePrice7 - OpenPrice7);

SOT7 =(p7 / Volume7)*10000;

p8 =(ClosePrice8 - OpenPrice8);

SOT8=(p8/Volume8)*10000;

p9 =(ClosePrice9-OpenPrice9);

SOT9 =(p9/Volume9)*10000;

p10 =(ClosePrice10 -OpenPrice10);

SOT10 = (p10/Volume10)*10000;

SOTAV10=(SOT1+SOT2+SOT3+SOT4+SOT5+SOT6+SOT7+SOT8+SOT9+SOT10/100*10);

SOTAV2 = (SOTAV10*2);

if ((SOT>SOTAV2)&&(ClosePrice1<OpenPrice1)&&(ClosePricenow<OpenPrice1)){

CrossedUp = true;

CrossedDown = false;

}

else

if((SOT>SOTAV2)&&(ClosePrice1>OpenPrice1)&&(ClosePricenow>OpenPricenow)){

CrossedUp = false;

CrossedDown = true;

}

if((CrossedUp==true)&&(SignalLabeled!=1)){

CrossUp=Low-Range*1.3;

if(i<=2 && Alerts && !upalert)

{

Alert (Symbol()," ",Period()," M Price UP ");

//SendMail("Buy "+Symbol(),");

upalert=true;

downalert=false;

}

SignalLabeled = 1;

}

if ((CrossedDown == true) && (SignalLabeled != 2)) {

CrossDown = High + Range*1.3;

if(i<=2 && Alerts && !downalert)

{

Alert (Symbol()," ",Period(), "M Price DOWN ");

//SendMail("Sell "+Symbol(),");

downalert=true;

upalert=false;

}

SignalLabeled = 2;

}

}

return(0);

}

Вот принцип, на котором построено это программное обеспечение:

Скорость торговли = (Изменение цены / Объем) в единицу времени. = (Открытие-Закрытие)/объем тика за период по умолчанию.

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

Внимание: Если за текущей свечой следуют 2-3 свечи того же цвета, сигнал подавать не следует. В качестве примера: Дата E/J(Open) E/J(High) E/J(Low) E/J(Close) Volume(E/J) Направление Изменение цены Скорость 11/06/2012 03:56:00 102.456 102.456 102.429 102.429 96 DOWN -0.027 2.81 11/06/2012 03:57:00 102.429 102.429 102.398 102.413 158 DOWN -0.016 1.01 так как скорость больше 1.70 (среднее значение 14 свечей), он предсказывает, что следующая свеча будет вниз. Этот индикатор можно сделать похожим на спидометр, или просто число может появиться вместе с сигналом на свече. Я думаю, что это очень поможет в принятии правильных решений. Теория заключается в том, что для каждого подъема или падения необходима сила или инерция, превышающая существующую, поэтому, как только мы увидим или уловим такую дополнительную силу, мы сможем определить направление следующей свечи, а также ее значение.

......................................................................................................................

 
Mastercash:
Привет, я нашел кое-что интересное для всех нас на форуме.Есть это программное обеспечение, которое может помочь предсказать направление следующей свечи.Я работал над этим скриптом mt4, чтобы добавить волатильность к нему, но не смог.Я хочу также сделать оповещение, чтобы прийти на закрытие текущей свечи и сказать нам направление следующей о формировании свечи.Волатильность будет говорить нам о размере или о том, как далеко цена растянется.Принцип не мой, я скопировал его откуда-то.Скрипт действительно работает.Я хочу, чтобы программисты, такие как Codergurus и Mladin, пожалуйста, посмотрели на этот скрипт.Сейчас он не очень хорошо работает.Так как алерт продолжает жать и перерисовываться.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_width1 4

#property indicator_width2 4

extern bool Alerts = TRUE;

double CrossUp[];

double CrossDown[];

bool CrossedUp = false;

bool CrossedDown = false;

int SignalLabeled = 0; // 0: начальное состояние; 1: вверх; 2: вниз.

int upalert=false,downalert=false;

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

//| Пользовательская функция инициализации индикатора |

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

int init()

{

//---- индикаторы

SetIndexStyle(0,DRAW_ARROW, EMPTY);

SetIndexArrow(0,233);

SetIndexBuffer(0,CrossUp);

SetIndexStyle(1,DRAW_ARROW, EMPTY);

SetIndexArrow(1,234);

SetIndexBuffer(1,CrossDown);

//----

return(0);

}

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

//| Пользовательская функция деинициализации индикатора.

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

int deinit()

{

//----

//----

return(0);

}

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

//| Пользовательская функция итерации индикатора |

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

int start(){

int limit,i,counter;

double pnow;

double p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;

double SOT,SOT1,SOT2,SOT3,SOT4,SOT5,SOT6,SOT7,SOT8,SOT9,SOT10;

double SOTAV10;

double SOTAV2;

double Range, AvgRange;

int counted_bars=IndicatorCounted();

//---- проверка на возможные ошибки

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

//---- последний подсчитанный бар будет пересчитан.

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

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

counter=i;

Range=0;

AvgRange=0;

for (counter=i;counter<=i+12;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);

}

Range=AvgRange/10;

// текущая цена Close и Open

double OpenPricenow = Open ;

double ClosePricenow = Close ;

double Volumenow = Volume ;

// свеча 1

double OpenPrice1 = Open ;

double ClosePrice1 = Close ;

double Volume1 = Volume ;

// свеча 2

double OpenPrice2 = Open ;

double ClosePrice2 = Close ;

double Volume2 = Volume ;

// свеча 3

double OpenPrice3 = Open ;

double ClosePrice3 = Close ;

double Volume3 = Volume ;

// свеча 4

double OpenPrice4 = Open ;

double ClosePrice4 = Close ;

double Volume4 = Volume ;

// свеча 5

double OpenPrice5 = Open ;

double ClosePrice5 = Close ;

double Volume5 = Volume ;

// свеча 6

double OpenPrice6 = Open ;

double ClosePrice6 = Close ;

double Volume6=Volume ;

// свеча 7

double OpenPrice7 = Open ;

double ClosePrice7 = Close ;

double Volume7 = Volume ;

// свеча 8

double OpenPrice8 =Open ;

double ClosePrice8 =Close ;

double Volume8 =Volume;

// свеча 9

double OpenPrice9 = Open ;

double ClosePrice9 = Close ;

double Volume9 = Volume ;

// свеча 10

double OpenPrice10 =Open;

double ClosePrice10=Close;

double Volume10=Volume;

pnow = (ClosePricenow - OpenPricenow);

SOT = (pnow / Volumenow)*10000;

p1 = (ClosePrice1 - OpenPrice1);

SOT1 = (p1 / Volume1) *10000;

p2 = (ClosePrice2 - OpenPrice2);

SOT2 = (p2 / Volume2) *10000;

p3 = (ClosePrice3 - OpenPrice3);

SOT3 =(p3/Volume3)*10000;

p4=(ClosePrice4 - OpenPrice4);

SOT4=(p4/Volume4)*10000;

p5=(ClosePrice5 - OpenPrice5);

SOT5 =(p5/Volume5)*10000;

p6=(ClosePrice6 - OpenPrice6);

SOT6 =(p6/Volume6)*10000;

p7=(ClosePrice7 - OpenPrice7);

SOT7 =(p7 / Volume7)*10000;

p8 =(ClosePrice8 - OpenPrice8);

SOT8=(p8/Volume8)*10000;

p9 =(ClosePrice9-OpenPrice9);

SOT9 =(p9/Volume9)*10000;

p10 =(ClosePrice10 -OpenPrice10);

SOT10 = (p10/Volume10)*10000;

SOTAV10=(SOT1+SOT2+SOT3+SOT4+SOT5+SOT6+SOT7+SOT8+SOT9+SOT10/100*10);

SOTAV2 = (SOTAV10*2);

if ((SOT>SOTAV2)&&(ClosePrice1<OpenPrice1)&&(ClosePricenow<OpenPrice1)){

CrossedUp = true;

CrossedDown = false;

}

else

if((SOT>SOTAV2)&&(ClosePrice1>OpenPrice1)&&(ClosePricenow>OpenPricenow)){

CrossedUp = false;

CrossedDown = true;

}

if((CrossedUp==true)&&(SignalLabeled!=1)){

CrossUp=Low-Range*1.3;

if(i<=2 && Alerts && !upalert)

{

Alert (Symbol()," ",Period()," M Price UP ");

//SendMail("Buy "+Symbol(),");

upalert=true;

downalert=false;

}

SignalLabeled = 1;

}

if ((CrossedDown == true) && (SignalLabeled != 2)) {

CrossDown = High + Range*1.3;

if(i<=2 && Alerts && !downalert)

{

Alert (Symbol()," ",Period(), "M Price DOWN ");

//SendMail("Sell "+Symbol(),");

downalert=true;

upalert=false;

}

SignalLabeled = 2;

}

}

return(0);

}

Вот принцип, на котором построено это программное обеспечение:

Скорость торговли = (Изменение цены / Объем) в единицу времени. = (Открытие-Закрытие)/объем тика за период по умолчанию.

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

Внимание: Если за текущей свечой следуют 2-3 свечи того же цвета, сигнал подавать не следует. В качестве примера: Дата E/J(Open) E/J(High) E/J(Low) E/J(Close) Volume(E/J) Направление Изменение цены Скорость 11/06/2012 03:56:00 102.456 102.456 102.429 102.429 96 DOWN -0.027 2.81 11/06/2012 03:57:00 102.429 102.429 102.398 102.413 158 DOWN -0.016 1.01 так как скорость больше 1.70 (среднее значение 14 свечей), он предсказывает, что следующая свеча будет вниз. Этот индикатор можно сделать похожим на спидометр, или просто число может появиться вместе с сигналом на свече. Я думаю, что это очень поможет в принятии правильных решений. Теория заключается в том, что для каждого подъема или падения необходима сила или инерция, превышающая существующую, поэтому, как только мы увидим или уловим такую дополнительную силу, мы сможем определить направление следующей свечи, а также ее значение.

......................................................................................................................

Mastercash

Как я вижу, прежде чем что-то делать с кодом, необходимо провести тестирование в реальном времени. Как только рынок откроется, посмотрим, что можно будет сделать.

 

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

Не мог бы кто-нибудь помочь мне добавить некоторый код к этому скрипту.jarroo_level_picker.mq4

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

Заранее спасибо.

Файлы:
 
Andrewsurfer:
Здравствуйте

Не мог бы кто-нибудь помочь мне добавить некоторый код к этому скрипту.jarroo_level_picker.mq4

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

Заранее спасибо.

Andrewsurfer

Попробуйте эту версию. Он не добавляет стрелку, но добавляет полосу того же цвета, что и цвет линии на полосе, на которой была использована свеча.

Файлы:
 
mladen:
Andrewsurfer Попробуйте эту версию. Она не добавляет стрелку, но добавляет полосу того же цвета, что и цвет линии на баре, на котором была использована свеча.

Извините, но я не вижу никаких изменений. Это по-прежнему просто синяя линия без каких-либо других знаков.

 
Andrewsurfer:
Извините, но я не вижу никаких изменений. Это по-прежнему просто синяя линия без каких-либо других знаков.

Есть одна дополнительная строка (как на картинке), и она создается на панели, куда вы бросаете скрипт.

Файлы:
v_line.gif  36 kb
 
mladen:
Есть одна дополнительная строка (как на картинке) и она создается на баре, на который вы бросаете скрипт

У меня были неправильные настройки графика MT4 на переднем плане, теперь все работает.

Спасибо большое.