Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите еще раз
Привет всем,
Я работаю над советником уже, кажется, целую вечность. Спасибо всем людям в этой теме за помощь, которую они мне оказали.
Сейчас я снова в тупике и ищу еще помощи. Как мы все знаем, большинство сигналов типа пересечения от MA до Stoch не очень хорошо работают, потому что много раз они пересекаются в конце движения.
Я пытаюсь использовать Stochastic RSI, когда он пересекает линию 50, но только на следующем баре, когда цена прошла максимум или минимум на определенное количество пунктов (MinPips). Моя основная проблема заключается в том, что когда я отслеживаю пересечение, если цена достигает MinPips только на последующих барах после пересечения, но пересечение остается в том же направлении.
Я пытаюсь прикрепить картинку, чтобы показать, что я пытаюсь сделать.
Точка #1 находится в точке пересечения на продажу, но поскольку цена никогда не проходит минимум этого бара, сделка не совершается (на самом деле, я бы хотел, чтобы все предыдущие сделки оставались активными).
Точка #2 находится на пересечении покупок, но цена проходит максимум бара только на 4-ом баре после пересечения, и сделка должна быть взята в это время. Все предыдущие ордера на продажу должны быть закрыты в это время.
Я надеюсь, что это работает, так как это первый раз, когда я прикрепляю картинку. Заранее извиняюсь, если что-то напутал.
Putz
Дополнительная информация
Ниже приведена моя программа, где CurrDir - это текущее направление, а PrevDir - предыдущее направление, так что если они не равны, то произошло пересечение.
Проблема в том, что если он не пересекается на текущем баре, то CurrDir и PrevDir становятся равными, и он никогда не проходит мимо этого бара, чтобы увидеть, достиг ли он ValHigh или ValLow.
Любая помощь будет оценена по достоинству.
Putz
if(CurrDir != PrevDir)
{
if(CurrDir == 1)
{
ValHigh = iHigh(Symbol(),Timeframe2,1) + MinPips*Point;
if(Bid >= ValHigh)
{
return(1); //up
}
return (2);
}
if(CurrDir == 2)
{
ValLow = iLow(Symbol(),Timeframe2,1) - MinPips*Point;
if(Ask <= ValLow)
{
return(2);//down
}
return (1);
}
Разобрался... кажется
Кажется, я наконец-то разобрался со своей проблемой. Сейчас почти 2:30 ночи, и я устал, так что я проверю это завтра...
Putz
Есть ли способ изменить формат данных экспортного файла MT4?
Я ищу ASCII.csv, но мне нужно, чтобы данные были в следующем формате;
1) отдельные столбцы (нужны только: время, максимум, минимум и закрытие)
2) только для последних 1000 баров
3) обратный порядок (последний сверху)
4) сохраняет его в папке, которая уже есть на моем рабочем столе (может быть функция просмотра для выбора папки?).
Заранее спасибо всем, кто сможет мне помочь.
Добавление и удаление индикаторов
Можно ли написать в советнике код для добавления или удаления индикатора в торговой платформе?????
Дэйв
У меня большая проблема с управлением ордерами.....
Мой простой советник входит в X:59...... но у меня несколько входов на одном и том же кресте. Мой вопрос: Можно ли проверить время входа ордеров и сравнить с новым ордером?
Я хочу, чтобы вход в X:59 был только с 1 ордером на кросс.....
Кто-нибудь может мне помочь?
У меня большая проблема с управлением ордерами....
Мой простой советник входит в X:59......, но у меня несколько входов на одном и том же кресте. Мой вопрос: Можно ли проверить время входа ордеров и сравнить с новым ордером?
Мне нужен вход в X:59 только с 1 ордером на кросс.....
Кто-нибудь может мне помочь?Это мое решение, я надеюсь, что это может помочь кому-нибудь......
//+------------------------------------------------------------------+
//| Сигнал Begin(Entry)|
//+------------------------------------------------------------------+
if (Buy1_1 58 && check_buy==0) Order = SIGNAL_BUY;
if (Sell1_1 > Sell1_2 && Minute()>58 && check_sell==0) Order = SIGNAL_SELL;
if (Minute()==00) {check_buy=0;}
if (Minute()==00) {check_sell=0;}
//+------------------------------------------------------------------+
//| Конец сигнала |
//+------------------------------------------------------------------+
//Покупка
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
//if(!IsTrade) {
//Проверка свободной маржи
if (AccountFreeMargin() < (1000 * Lots)) {
Print("У нас нет денег. Свободная маржа = ", AccountFreeMargin());
return(0);
}
if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
check_buy = 1;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy %W(#" + Magic_Number + ")", Magic_Number, 0, DodgerBlue);
if (Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("Открыт ордер BUY : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Ошибка открытия ордера BUY : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
// }
}
//Продажа
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
//if(!IsTrade) {
//Проверка свободной маржи
if (AccountFreeMargin() < (1000 * Lots)) {
Print("У нас нет денег. Свободная маржа = ", AccountFreeMargin());
return(0);
}
if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
check_sell = 1;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell %W(#" + Magic_Number + ")", Magic_Number, 0, DeepPink);
if (Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print(" Открытордер SELL: ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Ошибка открытия ордера SELL : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
//}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
В Метасток
Я не могу сказать, что заставляет check_buy быть True.
Чтобы ограничиться одним открытым ордером, вы можете использовать, перед входом:
if (OrdersTotal()==0)
Big Be
Вопросы на знание кодирования
КОГДА вы хотите использовать переменную STATIC - какие проблемы она может решить?
КОГДА вы хотите поместить что-то в секцию INIT() - какие проблемы это решает?
Big Be
не уверен, что это уже спрашивали, но есть ли способ провести линию в текущее время +1 час до и после по определенной цене в советнике?