Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Большое спасибо!!! cockeyedcowboy, это было действительно здорово!!!
Теперь сообщение об ошибке исчезло!!!
Но 2-й индикатор не рисуется и я не знаю почему.
Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);
У вас проблемы со вторым буфером, потому что в нем нет данных для вычислений.
Попробуйте вычислить ВСЕ элементы в Buffer_Mom, затем Buffer_Ma.
Пример:
{
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars;
if(counted_bars>0) limit++;
for(int i=0; i<limit; i++)
{
Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);
}
for( i=0; i<limit; i++)
{
Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);
}
return(0);
}Удачи.
Нахождение OHLC определенного бара
Может ли кто-нибудь подсказать мне, как узнать цену закрытия определенного бара с помощью кода MQL? Можно ли ссылаться на бар по его времени?
Т.е.: closing_price_of_bar = Close("04:59:00 AM") ... если бы это было так просто!
Спасибо
Привет, народ!
У меня еще одна большая проблема...
как закодировать это условие:
входить в лонг или шорт только в первый раз
(так что если у меня есть много следующих длинных сигналов, ea вводит только в первый раз).
Я буду благодарен всем, кто поможет мне в этом.
вот мой простой код для условия покупки:
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}Может ли кто-нибудь подсказать мне, как узнать цену закрытия определенного бара с помощью кода MQL? Могу ли я ссылаться на бар по его времени?
т.е.: closing_price_of_bar = Close("04:59:00 AM") ... если бы это было так просто!
СпасибоПопробуйте это:
closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59")));
Купить или продать
Привет всем,
У меня есть советник на покупку и советник на продажу, которые всегда открывают более одной позиции. Я хотел бы получить некоторую помощь в том, как изменить или модифицировать код, который позволяет только 1(одну) позицию покупки и 1(одну) позицию продажи и на 1(одном) счете.
SL и TP будут использовать Price Target, т.е. если цена покупки достигла Price Target, то позиция будет закрыта. То же самое с ценой продажи.
Буду признателен за помощь экспертам по коду на этом форуме.
Спасибо.
=s21=
Покупка и продажа
Упс...
Вот советник по покупке.
Здравствуйте, если вам нужно, чтобы был открыт только один ордер, вы можете просто добавить следующее условие: If (OrdersTotal()==0).
Таким образом, ваши правила для ордеров BUY будут примерно такими:
if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))
[/CODE]
So you will not get second-third-... orders opened until you current order open.
hy folks !
ok i have another big problem...
how to code this condition :
enter long or short only first time
(so if i have many following long signal ea enter only at first time)
i'll pay everyone could help me on this
this is my simple code for buy condition:
[CODE]
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}Попробуйте так: closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));
Отлично! Мне пришлось добавить еще одну закрывающую скобку, чтобы интерпретатор не жаловался на ошибку, но все работает отлично.
Спасибо, Roger09
Привет, если вам нужно, чтобы открывался только один ордер, вы можете просто добавить следующее условие: If (OrdersTotal()==0).
Так что ваши правила для заказов на покупку будут примерно такими:
if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))
Спасибо Лавина,
но это не решение для меня, потому что у меня есть TP, я не жду противоположного условия.
Другие идеи? Напишите мне, я заплачу.