Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
спасибо за ваш ответ.
но это не работает, если было проскальзывание, когда позиция была закрыта, верно?
Привет всем,
У меня проблема с советником RSI и MA...
У меня индикатор работает правильно... Все, что я хочу, это преобразовать его в советника...
Я попробовал несколько вещей. IndicatorCounted() не работает в советнике, поэтому я попытался жестко закодировать значения в цикле for (bar=0; bar<15; bar++), я получил правильный RSI, но SMA не дает правильных значений...
Я прилагаю код для SMA, пересекающей RSI...
Так что не мог бы кто-нибудь помочь мне преобразовать этот индикатор в советника.
***************************************************************************************************************************************
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 LawnGreen
#property indicator_color2 DarkBlue
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int init()
{
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
SetIndexBuffer(1,ExtMapBuffer2);
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int bar, limit;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-IndicatorCounted();
for(bar=0; bar<limit; bar++)
ExtMapBuffer1 = iRSI(NULL,0,14,PRICE_TYPICAL,bar);
for(bar=0; bar<limit; bar++)
ExtMapBuffer2=iMAOnArray(ExtMapBuffer1,Bars,14,0,MODE_SMA,bar);
return(0);
}
***************************************************************************************************************************************
Спасибо и с уважением,
ГанешГанеш,
Попробуйте сделать бары в порядке времени.
Вместо for(bar=0; bar<limit; bar++)
используйте for(bar=limit-1; bar>=0; bar--)
Chazzmoney
Привет
Спасибо за быстрый ответ... Я попробовал, но это ничего не меняет...
Кроме того, если мы используем Bars в цикле, он должен вычислить все значения (для всех баров) для каждого тика... и там может быть задержка... Также значение SMA будет равно нулю.
В индикаторе мы вычисляем RSI и EMA только для нового бара с помощью IndicatorCounted(), но мы не можем использовать это в советнике...
Точное место проблемы - второй цикл for и значения для iMAOnArray.
Первый цикл for работает отлично, даже когда мы его жестко кодируем...
спасибо за ответ. но это не работает, если было проскальзывание, когда позиция была закрыта, верно?
Некоторые брокеры пишут [sl] и [tp] в поле комментария. Вы тоже можете использовать это.
спасибо. я попробую.
как можно выбрать последний закрытый ордер с правильным магическим числом?
спасибо. попробую. а как можно выбрать последний закрытый ордер с нужным магическим номером?
Если вы находите его в списке истории, это закрытый ордер, если в общем списке - еще открытый.
Запрос кода Ea: Закрытие предыдущего ордера при открытии новой позиции
Здравствуйте, я хотел бы сделать запрос на код для того, чтобы при открытии новой позиции, автоматически закрывался предыдущий ордер. Имеется в виду, что я не хочу использовать тейк-профит или трейлинг.
Пример:
Когда открывается ордер buy, предыдущий ордер sell закрывается.
Когда ордер sell открыт, предыдущий ордер buy закрывается.
Я нашел код OrderCloseBy(), но я не знаю, куда именно поместить этот код.
спасибо
Здравствуйте, я хотел бы сделать запрос на код для того, чтобы при открытии новой позиции, автоматически закрывался предыдущий ордер. Я не хочу использовать тейк-профит или трейлинг.
Пример:
Когда ордер buy открыт, предыдущий ордер sell закрывается
Когда ордер sell открыт, предыдущий ордер buy закроется
Я нашел код OrderCloseBy(), но я не знаю, куда именно поместить этот код.
спасибоРешение проблемы
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // закрываем позицию
}
вставить после OrderSend SELL
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрытие позиции
}Другой код я взял из ForexFactory благодаря (Fulltime247, magnumfreak)
extern double LOTSize=0.10;
extern string ORDERComment="Текст комментария ордера";
//Подсчет итогов...
int btotal=0; int stotal=0; int ticket=0; double closelots=0; bool xbool;
for( int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
xbool=OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){btotal++; ticket=OrderTicket(); closelots=OrderLots();}
if(OrderType()==OP_SELL && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){stotal++; ticket=OrderTicket(); closelots=OrderLots();}
}// КОНЕЧНЫЙ СЧЕТ ИТОГОВ...
if(WHATEVER YOUR CONDITION FOR A BUY)
{
if(btotal>0){OrderClose(ticket,closelots,Bid,3,CLR_NONE);}
ticket=OrderSend(Symbol(),OP_BUY,LOTSize,Ask,3,0,0,ORDERComment,MAGICTerminal,0,Magenta);
}
if(WHATEVER YOUR CONDITION FOR A SELL)
{
if(stotal>0){OrderClose(ticket,closelots,Ask,3,CLR_NONE);}
ticket=OrderSend(Symbol(),OP_SELL,LOTSize,Bid,3,0,0,ORDERComment,MAGICTerminal,0,Lime);
}Я новичок в MT4.
Я хочу подсчитать количество баров после того, как shortMA пересекла longMA, кто-нибудь знает, как закодировать эту функцию?
Заранее спасибо!