![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если я хочу, чтобы период был 30 в корпусе, какую скользящую среднюю я должен поставить на график, две или одну с каким периодом, я не силен в математике, спасибо большое за ваши усилия.
zoroxzyad
Вы не можете использовать только скользящую среднюю. Вы должны использовать формулу из предыдущего поста
Есть ли руководство для нового metatrader 4?
Или они когда-нибудь сделают его?
Есть ли руководство для нового metatrader 4? Или они когда-нибудь сделают его?
Насколько я знаю, нет. Я полагаю, что они появятся (на определенном этапе разработки).
Младен, прилагаю модифицированный вами индикатор для отображения сигналов кроссовера на основном графике.
Этот код взят из новой версии.
arrDn[CB] = EMPTY_VALUE;
state[CB] = state[CB+1];
if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;
if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;
if (state[CB]!=state[CB+1])
{
if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;
if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;
}Есть ли простой способ объяснить, как этот код вставляет сигналы?
Спасибо.
Mladen, прилагаю модифицированный вами индикатор для отображения сигналов пересечения на основном графике.
Этот код взят из новой версии.
arrDn[CB] = EMPTY_VALUE;
state[CB] = state[CB+1];
if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;
if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;
if (state[CB]!=state[CB+1])
{
if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;
if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;
}Есть ли простой способ объяснить, как этот код вставляет сигналы?
Спасибо.Майкл
Он ищет пересечения значений в двух буферах: TrendBuffer и LoBuffer. Он отмечает текущее состояние этих двух буферов: если TrendBuffer > LoBuffer, он устанавливает состояние в 1, а если TrendBuffer < LoBuffer, он устанавливает состояние в -1.
Теперь, когда состояние текущего бара отличается от состояния предыдущего бара, это означает, что есть крест. И затем он рисует стрелку на графике.
Тоже хлопотный учитель опять, пожалуйста выложите этот индикатор переделанный в индикаторы MT4, спасибо!
colorbars_hlc.mq5
Майкл
Он ищет пересечения значений в двух буферах: TrendBuffer и LoBuffer. Он отмечает текущее состояние этих двух буферов: если TrendBuffer > LoBuffer, он устанавливает состояние в 1, а если TrendBuffer < LoBuffer, он устанавливает состояние в -1.
Теперь, когда состояние текущего бара отличается от состояния предыдущего бара, это означает, что есть крест. И тогда он рисует стрелку на графике.Хорошо, это объясняет TrendBuffer и LoBuffer.
Но как работают arrUp и arrDn?
Почему сигналы появляются на определенных свечах, а не на каждой свече.
Еще раз спасибо.
Хорошо, это объясняет TrendBuffer и LoBuffer.
Но как работают arrUp и arrDn?
Почему сигналы появляются на определенных свечах, а не на каждой свече.
Еще раз спасибо.michael
Представьте себе последовательность вроде этой (1, когда TrendBuffer > LoBuffer, -1, когда TrendBuffer < LoBuffer)
11111111-1-1-1-1-1-1-1-111111111
Стрелки нужно рисовать только тогда, когда 1 становится -1 или когда -1 становится 1 (когда меняется "состояние"). Поэтому есть строка, которая проверяет это (эта строка : if (state[CB] !=state[CB+1]) ). Таким образом, когда состояние меняется, стрелка рисуется, иначе стрелку вообще не нужно рисовать.
Привет, Младен,
надеюсь, у вас есть время ближе к концу года.
Приведенный ниже код имеет отношение к последнему заданному мне вопросу. Он отслеживает 0.8 пипса для одного ордера после цели в 2 пипса в плюс.
Но как я могу изменить его, чтобы он проверял все ордера и отслеживал их по отдельности?
Большое спасибо! Вы делаете отличную работу.
int start()
{
//----
if (OrdersTotal() == 0) {
isStopLoss = false;
}
for(int i=0; i<=OrdersTotal(); i++) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
continue;
}
if(OrdersTotal() == 0) {
continue;
}
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(isStopLoss == true) {
if(OrderType() == OP_BUY) {
if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);
if(OrderStopLoss() >= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
} else if(OrderType() == OP_SELL) {
if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich
if(OrderStopLoss() <= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
}
lastStopLoss = OrderStopLoss();
continue;
}
if(OrderType() == OP_BUY) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);
} else if(OrderType() == OP_SELL) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);
}
lastStopLoss = OrderStopLoss();
}
//----
return(0);
}Привет, Младен,
надеюсь, у вас найдется время ближе к концу года.
Приведенный ниже код имеет отношение к последнему заданному мне вопросу. Он отслеживает 0.8 пипса для одного ордера после цели в 2 пипса в плюс.
Но как я могу изменить его, чтобы он проверял все ордера и отслеживал их по отдельности?
Большое спасибо! Вы делаете отличную работу.
int start()
{
//----
if (OrdersTotal() == 0) {
isStopLoss = false;
}
for(int i=0; i<=OrdersTotal(); i++) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
continue;
}
if(OrdersTotal() == 0) {
continue;
}
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(isStopLoss == true) {
if(OrderType() == OP_BUY) {
if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);
if(OrderStopLoss() >= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
} else if(OrderType() == OP_SELL) {
if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich
if(OrderStopLoss() <= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
}
lastStopLoss = OrderStopLoss();
continue;
}
if(OrderType() == OP_BUY) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);
} else if(OrderType() == OP_SELL) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);
}
lastStopLoss = OrderStopLoss();
}
//----
return(0);
}arroganzmaschine
Проверьте способ управления трейлинг-стопами в советнике из этого поста: https: //www.mql5.com/en/forum/181334. Я думаю, что это может помочь вам, поскольку он имеет все элементы (включая проверку ошибок), которые необходимы для обработки трейлинг стоп лосс.