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

 
mystified:
Я добавил уровни к HMA:

#свойство indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Black

#property indicator_color2 Red

#property indicator_width1 2

#property indicator_minimum 0

#property indicator_maximum 100

#property indicator_level1 80

#property indicator_level2 60

#property indicator_level3 40

#property indicator_level4 20

#property indicator_levelcolor DarkSlateGray

Но индикатор не отображается в отдельном окне должным образом.Любая помощь будет очень признательна.

Потому что индикатор принудительно ограничен:

Удалите эти две строки:

#property indicator_minimum 0

#property indicator_maximum 100

Уровни хорошо работают только для ограниченных индикаторов, но чтобы сделать ограниченный индикатор, расчет должен включать границы.

Пример: RSI = 100-(100/(1+U/D))

По этой формуле мы знаем, что индикатор будет двигаться в диапазоне 0-100, и поэтому мы можем включить уровни 70-30, не боясь, что они исчезнут.

Другой пример - MACD = EMA(CLOSE, 12)-EMA(CLOSE, 26)).

Мы установили уровень на M5, и когда мы переходим на H1, наиболее вероятно, что уровень исчез.

Значит, берем ту же формулу и вносим некоторые изменения MACD = (EMA(CLOSE, 12)-EMA(CLOSE, 26))/EMA(CLOSE, 26). И теперь у нас есть процентный индикатор. Он не ограничен, но у нас меньше вероятность потерять наши уровни.

 

Спасибо, Линуксер.

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

i need a code that would only do one order for buy and for sell per bar per TF and still open if it is on a different bar. i can have buy and sell and the same bar.

.

Иногда у меня есть 3 сигнала на 3 разных ТФ. Я хочу взять все ордера, но я хочу только один ордер на ТФ и я могу взять другой ордер на другом ТФ, если он все еще открыт, но на другом баре.

пример:

1 сигнал на 4h

1 сигнал в 1 час, но он падает в баре на 4 часа

1 сигнал в 30 мин, но только один бар для 1ч и 4ч.

3 сигнала будут открыты.

Я не против использования магического числа в качестве фильтра.

Кто-нибудь может мне помочь? Большое спасибо.

Пока что вот что я думаю:

30 минут

if (magicnumber == 123)

{

if (iTime(OrderOpenTime()) != iTime(Symbol(),PERIOD_M30,0))

{//код моего ордера}

}

У меня нет MT4, но я знаю, что что-то не так в логике или коде. Так что ребята, пожалуйста, помогите мне.

также я думаю, что у нас есть аналогичная проблема с matrixebiz

Кто-нибудь может мне помочь?

 
mystified:
Спасибо Linuxer.

Это просто пример (потому что теперь у вас есть осциллятор HMA ) из предыдущего сообщения, это все еще MACD, но рассчитанный другим способом.

 
 

Как начать торговлю на открытии свечи в D1?

знает ли кто-нибудь код, чтобы попросить советника начать открывать торговлю, когда начинается новый бар на таймфрейме D1?

вот логика:

на ТФ D1, когда начинается новая свеча (это означает новый день), советник открывает 2 позиции, BUY и SELL с TP=10 пунктов для каждой позиции.

Когда свеча закрывается, советник закрывает все позиции и начинает открывать позиции снова для новой свечи.

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

Я действительно новичок в кодировании MQL4 и уже искал и читал много источников и форумов, чтобы узнать больше о кодировании MQL4, но не могу найти то, что мне нужно.

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

 

вот мой код.... пожалуйста, помогите мне исправить это

Я попытался закодировать то, что я спрашивал раньше, вот пример кода советника:

int start()

{

LastPrice=0;

LastProfit=0;

LastTicket=0;

LastLots=Lots;

Profit=0;

ProfitPip=0;

PairOrder=0;

OrdersOpened = 0;

PreviousOrders = OrdersOpened;

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

PipValue=MarketInfo(Symbol(),MODE_TICKVALUE);

ArrayCopyRates(rates, Symbol(), PERIOD_D1);

if(DayOfWeek()==0 || DayOfWeek()==6)

{

// торговля в праздничные дни запрещена;

return(0);

}

else

{

if (newbar()==Period())

{

for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt --)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Color1);

}

}

OpenBuy();

OpenSell();

}

}

}

int newbar()

{

двойное g;

int m,s,k;

m=Time[0]+Period()*60-TimeCurrent();

g=m/60.0;

s=m%60;

m=(m-m%60)/60;

return(m);

}

void OpenBuy()

{

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = Ask-Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitBuy(),Digits);

OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,ldStop,ldTake, "BUY",Magic,0,Color1);

}

void OpenSell()

{

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = Bid+Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitSell(),Digits);

OrderSend(Symbol(),OP_SELL,ldLot,NormalizeDouble(Bid,Digits),Slippage,ldStop,ldTake, "SELL",Magic,0,Color1);

}

double GetSizeLot()

{

return(Lots);

}

double GetTakeProfitBuy()

{

return(Ask+TakeProfit*Point);

}

double GetTakeProfitSell()

{

return(Bid-TakeProfit*Point);

}

Вчера вечером я загрузил на свой vps, но сегодня утром я проверил его, но мой образец советника не открывает ни одной сделки, может ли кто-нибудь здесь помочь мне исправить мой образец советника здесь?

Кстати, я прикрепил его здесь

 

Оповещения, которые действуют дольше

привет, я новичок, пытаюсь разобраться в этом и любая помощь будет оценена по достоинству!!!

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

if (setalert == 1 && shift == 0) {

Alert(Symbol(), " ", period, " ", pattern);

setalert = 0;

}

Спасибо

 

Перекодировка в metatrader (Осциллятор объема Клингера)

Осциллятор Клингера (KO) был разработан Стивеном Дж. Клингером. Опираясь на результаты исследований объема, проведенных такими известными специалистами, как Джозеф Грэнвилл, Ларри Вильямс и Марк Чайкин, г-н Клингер решил разработать индикатор, основанный на объеме, чтобы помочь в краткосрочном и долгосрочном анализе.

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

В основе КО лежат следующие постулаты:

* Ценовой диапазон (т.е. High - Low) является мерой движения, а объем - силой, стоящей за движением. Сумма High + Low + Close определяет тренд. Накопление происходит, когда сегодняшняя сумма больше, чем сумма предыдущего дня. И наоборот, распределение происходит, когда сегодняшняя сумма меньше предыдущей. Когда суммы равны, существующая тенденция сохраняется.

* Объем создает непрерывные внутридневные изменения цены, отражающие давление покупки и продажи. КО количественно оценивает разницу между количеством акций, накапливаемых и распределяемых каждый день, как "силу объема". Сильный, растущий объем должен сопровождать восходящий тренд, а затем постепенно сокращаться с течением времени на последних стадиях восходящего тренда и на ранних стадиях следующего нисходящего тренда. За этим должна последовать сила растущего объема, отражающая некоторое накопление перед формированием дна.

* Преобразовав силу объема в осциллятор, представляющий собой разницу между 34-периодной и 55-периодной экспоненциальной скользящей средней с 13-периодным триггером, можно легко отследить силу объема вхождения и выхода из ценной бумаги. Сравнение этой силы с ценовым движением может помочь выявить дивергенции на вершинах и дне.

Интерпретация

Г-н Клингер рекомендует следующие рекомендации по использованию КО:

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

2. Наиболее важный сигнал возникает, когда КО расходится с базовым ценовым действием, особенно на новых максимумах или новых минимумах на территории перекупленности/перепроданности. Например, если акция достигает нового максимума или минимума в течение цикла, а КО не подтверждает это, возможно, тренд теряет импульс и близок к завершению.

3. Если цена находится в восходящем тренде (т.е. выше 89-дневной экспоненциальной скользящей средней), покупайте, когда KO упадет до необычно низкого уровня ниже нуля, развернется вверх и пересечет свою триггерную линию. Если цена находится в нисходящем тренде (т.е. ниже 89-дневной экспоненциальной скользящей средней), продавайте, когда KO поднимется до необычно высокого уровня выше нуля, развернется вниз и пересечет линию срабатывания.

В то время как KO хорошо работает для своевременного заключения сделок в направлении тренда, он менее эффективен против тренда. Это может создать проблемы для трейдера, пытающегося "скальпировать" сделку против преобладающего тренда. Однако при использовании KO в сочетании с другими техническими индикаторами можно добиться лучших результатов. %R Уильяма рекомендуется использовать для подтверждения состояния перекупленности/перепроданности цены, а MACD Джеральда Аппеля - для подтверждения краткосрочного направления движения цены.

Совет

Стивен Клингер предлагает следующую формулу для просмотра кумулятивного потока денег в ценную бумагу и из нее:

cum(kvo())

Постройте 13-периодное скользящее среднее по этой формуле в качестве триггерной линии для входа в сделки на покупку и продажу.

источник codenya untuk торговая станция

Тип: Функция, Имя: VForce

Параметры: TSum(0), Trend(0), DM(0), CM(0);

TSum = High + Low + Close;

IF TSum > TSum[1] Then

Тренд = 1

Иначе

Trend = -1;

IF Trend = Trend[1] Then

CM = CM + Диапазон

Иначе

CM = Range + Range[1];

IF CM 0 Then

VForce = Volume * AbsValue(2 * (DM/CM) -1) * Trend * 100;

Тип: Функция, Имя: KVO

Входы:

FastX(Numeric),

SlowX(Numeric); Vars:

FXAvg(0),

SXAvg(0);

FXAvg = XAverage(VForce, FastX);

SXAvg = XAverage(VForce, SlowX);

KVO = FXAvg - SXAvg;

Тип: Индикатор, Название: Klinger Volume Oscillator

Входы:

FastX(34),

SlowX(55),

TrigLen(13),

Smooth(1);

переменные:

Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);IF Smooth <= 1 Then Begin

Plot1(KVO(FastX, SlowX), "KVO");

Plot2(Trigger, "KVO Trigger");

End Else BeginPlot1(Summation(KVO(FastX, SlowX), Smooth), "KVO");

Plot2(Summation(Trigger, Smooth), "KVO Trigger");

End;

Plot3(0, "Zero");

ЕСЛИ Plot1 пересекает выше Plot2 ИЛИ Plot1 пересекает ниже Plot2 ИЛИ

Plot2 пересекает выше Plot3 ИЛИ Plot2 пересекает ниже Plot3 Тогда

Alert = True;

кто-нибудь может помочь мне преобразовать эту кодировку в Mql4?

спасибо

 
Причина обращения: