Как кодировать? - страница 44

 

Приветствую вас, Ральф Роннквист!

Значит, я должен создать еще одну строку sdl, что-то вроде SDLL = long SDLS = short?

Я думаю, что я прав, говоря, что на SDL инди

восходящий тренд = буфер 1 и индекс 1 цвет синий

dntrend = буфер 2 и индекс 2 цвет красный.

Если да, то куда мне их поместить. Помещаю ли я их в конце строки iCustom.

double SDL=iCustom(NULL,0, "Slope Direction Line",period,method,price,1,1,shift);

или я сбился с пути

 

Утверждение:

double SDL=iCustom(NULL,0,"Slope Direction Line",period,method,price,1,shift);

заставляет SDL удерживать значение второго буфера (Uptrend) на данном баре "shift".

(Обратите внимание, что у вас было повторено ",1", что выглядит как опечатка. В любом случае, ее там быть не должно).

Так что, да, если вы хотите считывать и Uptrend, и Dntrend, то вам понадобятся две переменные для хранения значений. Как вы говорите, Uptrend - это 1, а Dntrend - это 2.

 

Приветствую, Ральф.

Спасибо за помощь. Все работает, теперь я могу идти спать.

Спасибо

Beno

 
wolfe:
Надеюсь, это то, что вы искали.

Это направило меня в правильном направлении - спасибо, очень признателен.

Моя новая проблема заключается в том, что когда мой оператор if вызывается....

он отталкивается от значения предыдущего бара индикатора по отношению к текущему бару и посылает Alert();, который я создал... около 20 раз.

Как мне сделать так, чтобы он отправлял только один раз?

Я попробовал создать переключатель вкл/выкл с помощью переменных - к сожалению, в MQL4 это не работает.

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

Но я не могу найти идею, которая была бы действительно возможна в MQL4.

Есть идеи?

 

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

 
dharsant:
Другими словами... Мне нужно каким-то образом остановить его от отправки оповещения после первого, потому что в данный момент он оповещает несколько раз (раздражающий и ненужный, как вы можете догадаться).

Не могли бы вы предоставить код для просмотра?

Возможно, вы можете установить булево значение true/false, которое будет срабатывать после того, как предупреждение будет отправлено в первый раз.

 

Я не уверен, какой код будет иметь смысл. Вот мой оператор if для алерта.

"Code":

latestlatestmain = 2 бара назад в моем индикаторе.

latestmain = предыдущий бар в моем индикаторе

if(MainCCI > ErgoCCI){

{сигнал = "SHORT";

if ((latestlatestmain >= 0) && (latestmain < 0)) {

PlaySound("alert2.wav");

}

}

if(lastsignal != signal && alertTag!=Time[0]){

alertTag = Time[0];

lastsignal=signal;

}

}

if (MainCCI < ErgoCCI){

{ signal = "LONG";

if ((lastlatestmain 0)) {

PlaySound("alert2.wav");

}

Это индикатор FX Sniper, и когда он соответствует моим параметрам, он посылает алерт.

Как бы мне установить булеву истину/ложь?

Я пытался сделать вот так.....

"Код с выключателем":

if(MainCCI > ErgoCCI){

{signal = "SHORT";

if ((latestlatestmain >= 0) && (latestmain < 0)) {

if (onealert == 1) {

PlaySound("alert2.wav");

onealert = 0;

} }

}

if(lastsignal != signal && alertTag!=Time[0]){

alertTag = Time[0];

lastsignal=signal;

}

}

if (MainCCI < ErgoCCI){

{ signal = "LONG";

if ((lastlatestmain 0)) {

if (onealert == 0) {

PlaySound("alert2.wav");

onealert = 1;

} }

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

Есть ли что-то еще, что я мог бы сделать, используя boolean? Есть идеи, как я могу это сделать?

На данный момент он работает нормально, просто предупреждает меня около 5-6 раз.

Спасибо за время и помощь.

-dharsant

 

Просто подумал, что разобрался, и что Sleep(); будет работать.... darn

 

Я нашел это у Codersguru;

void AlertOnce(string alert_msg, int ref)

{

if (ref > 10)

return;

ref--;

static int LastAlert[10];

if( LastAlert[ref] == 0 || LastAlert[ref] < Bars)

{

Alert(alert_msg);

LastAlert[ref] = Bars;

}

}

Похоже на то, что мне нужно!!!

При использовании этого с моим индикатором...

Могу ли я просто поместить функцию в свой скрипт, а затем использовать

AlertOnce("Sniper going LONG",10);

вместо моего Alert();?

Я чувствую себя как маленький неопытный программист.

 

Понял, спасибо за помощь!!!