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

 

Слишком сильная тревога Re: Помощь в кодировании

Привет мастера Спасибо за вашу большую работу, я хотел бы поделиться со всеми этот TrendLine Alert, он возникает Играет звук, когда цена Bid пересекает любую линию тренда или горизонтальную линию вы рисуете, я изменил его на всплывающее уведомление, как хорошо, единственная проблема с ним является это предупреждение каждый тик, когда цена (bid) пересекает линию, я пытаюсь изменить его, чтобы предупредить только один каждый бар, когда он пересекает линию, добавив функцию метки времени в конце его.Это работает нормально, но не работает вообще (нет алерта). Пожалуйста, если у вас есть время, посмотрите на это и направьте меня в нужное русло. Большое спасибо!!! Код, который я пытаюсь добавить, следующий

static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

 
huang jin:
Привет, мастера Спасибо за вашу большую работу, я хотел бы поделиться со всеми TrendLine Alert, он воспроизводит звук, когда цена бида пересекает любую линию тренда или горизонтальную линию, которую вы рисуете, я изменил его на всплывающее оповещение, единственная проблема с ним - он оповещает каждый тик, когда цена (бид) пересекает линию, я пытаюсь изменить его, чтобы оповещать только один раз на каждом баре, когда он пересекает линию, добавив функцию отметки времени в конце его.Это работает нормально, но не работает вообще (нет алерта). Пожалуйста, если у вас есть время, посмотрите на это и направьте меня в нужное русло. Большое спасибо!!! Код, который я пытаюсь добавить, следующий
static datetime lastbar;

datetime curbar = Time[0];

if(lastbar!=curbar)

{

lastbar=curbar;

return (true);

}

else return(false);

}

Вы никогда не присваиваете значение Close_Time. Как только вы это сделаете, алерт будет срабатывать только один раз за бар.

 

@mladen Я нашел этот индикатор на TradingView, возможно ли сделать его для mt4?

Вот исходный код:

//Created by user ChrisMoody 4-24-2014

//Показывает большинство скользящих средних.

//По умолчанию используется текущий таймфрейм графика --- но может быть изменен на более высокий или более низкий таймфрейм

//2nd MA Capability with Show Crosses Feature

study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)

//входы

src = закрыть

useCurrentRes = input(true, title="Использовать текущее разрешение графика?")

resCustom = input(title="Использовать другой таймфрейм? Uncheck Box Above", type=resolution, defval="D")

len = input(20, title="Длина скользящей средней - период просмотра назад")

atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")

cc = input(true,title="Менять цвет в зависимости от направления?")

smoothe = input(2, minval=1, maxval=10, title="Сглаживание цвета - 1 = нет сглаживания")

doma2 = input(false, title="Дополнительная 2-я скользящая средняя")

len2 = input(50, title="Длина скользящей средней - необязательная 2-я МА")

atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")

cc2 = input(true,title="Менять цвет в зависимости от направления 2-й МА?")

warn = input(false, title="***Вы можете включить параметр Show Dots ниже без построения 2-й МА, чтобы увидеть кресты***")

warn2 = input(false, title="***Если вы используете функцию крестов без построения 2-й МА - убедитесь, что параметры 2-й МА установлены правильно***")

sd = input(false, title="Показывать точки на пересечении обеих МА")

res = useCurrentRes ? period : resCustom

// определение корпусной МА

hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))

// определение ТЕМА

ema1 = ema(src, len)

ema2 = ema(ema1, len)

ema3 = ema(ema2, len)

tema = 3 * (ema1 - ema2) + ema3

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema

//2-й ма - определение hull ma

hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2)))

//2-ое определение MA TEMA

sema1 = ema(src, len2)

sema2 = ema(sema1, len2)

sema3 = ema(sema2, len2)

stema = 3 * (sema1 - sema2) + sema3

avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src,len2) : atype2 == 6 ? rma(src,len2) : tema

out = avg

out_two = avg2

out1 = security(tickerid, res, out)

out2 = security(tickerid, res, out_two)

ma_up = out1 >= out1[smoothhe]

ma_down = out1 < out1[smoothhe]

col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua

col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua

circleYPosition = out2

plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col)

plot(doma2 and out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2)

plot(sd и cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)

 

Скриншот индикатора:

Файлы:
pepqyie.png  84 kb
 

Есть ли примеры совместного доступа к файлам из нескольких экземпляров кода?

 
apprentice coder:
Есть ли примеры совместного доступа к файлам из нескольких экземпляров кода?

Вы можете увидеть один пример здесь: https: //www.mql5.com/en/forum/175881/page5

 
mladen:
Вы можете увидеть один пример здесь: https: //www.mql5.com/en/forum/175881/page5

Есть

 

Могу ли я узнать, есть ли какая-нибудь ea, использующая индикатор "HalfTrend-1.02"?

Мне нужен пример кода.

Я пытался использовать этот индикатор для фильтрации, но увидел, что он пропускает много сделок.

Я не знаю, что не так с этим .....

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;
 
stevenpun:
Могу ли я узнать, есть ли какая-нибудь программа, использующая индикатор "HalfTrend-1.02"?

Мне нужен пример кода.

Я пытался использовать этот indi для фильтрации, но увидел, что он пропускает много сделок.

Я не знаю, что не так с этим .....

double MA_Signal = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,0);

double MA_Signal1 = iCustom(Symbol(),0,"HalfTrend-1.02",Amplitude,false,false,false,false,false,false,false,1);

double MA_Signala = iMA(Symbol(),0,UpperMa,UpperMaShift,UpperMaMode,UpperMaPrice,0);

double MA_Signalb = iMA(Symbol(),0,LowerMa,LowerMaShift,LowerMaMode,LowerMaPrice,0);

double Bbands = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,2);

double Bbands2 = iCustom(Symbol(),0,"BBands_Stop_v2",Length,Deviation,MoneyRisk,Shift,3);

double Ma_Bid_Diff = MathAbs(MA_Signala - Bid)/vPoint;

double Ma_Bid_Diff1 = MathAbs(MA_Signalb - Bid)/vPoint;

if ( MA_Signal>MA_Signala ) if ( Bbands MAOpenDistance && Bid > MA_Signala ) Signal = 1;

if ( MA_Signal1MA_Signal1 ) if ( Ma_Bid_Diff1 > MAOpenDistance && Bid < MA_Signalb ) Signal = -1;

Привет, Стивенпун,

Две вещи, которые вы можете попробовать немедленно:

1) Добавьте печать и комментарии, чтобы увидеть ВСЕ ваши значения... и убедитесь, что вы получаете все значения индикатора правильно...

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

2) Сверните "Торговую логику"... и протестируйте каждый сигнал по отдельности... Затем, если они работают... начните объединять их вместе.

Если они не работают... значит, вы нашли свою проблему.

Чем меньше у вас будет "вложенных "если", тем легче будет отследить проблемы без сделок...

Кроме того... множественные "если" отфильтровывают большинство сделок... поэтому даже при хорошей работе... может не быть много сделок...

Надеюсь, это поможет,

Роберт

 

Спасибо, Младен,

mladen:
.................. он будет предупреждать только один раз за бар

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