Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
mladen
Во-первых, я надеюсь, что ты больше не сердишься на меня...
У меня вторая ошибка при попытке загрузить советника.dasssi
Попробуйте переименовать советник (из-за французской буквы в названии он может вызвать у вас проблему - никакая другая проблема не может быть причиной этого, поскольку это очень простой советник).
спасибо, теперь работает.
не очень хорошо выглядит в тестере стратегий
спасибо, теперь он работает/не выглядит хорошо в тестере стратегий
Это просто пример того, как индикатор должен вызываться из ea, когда дело доходит до сигналов. Это далеко не полный советник (посмотрите на новые советники в разделе elite и advanced и сравните код - вы поймете, что я имею в виду). Так что это была просто помощь After-rage в решении его проблемы кодирования
Спасибо!!! Он хорошо работает для входа в позиции. Я не знаю, почему мой советник не работает, но это не имеет значения. Я попытался добавить код для закрытия ордеров, но он тоже не работает. Странно, потому что я взял код, похожий на структуру для позиций на вход, и я просто удвоил объем лота. Не могли бы вы взглянуть?
Спасибо !!! Это хорошо работает для входа в позицию. Я не знаю, почему мой советник не работает, но это не имеет значения. Попробовал добавить код для закрытия ордеров, но он тоже не работает. Странно, потому что я взял код, похожий на структуру для позиций на вход, и я просто удвоил объем лота. Не могли бы вы взглянуть?
After-rage
Один из способов сделать это (закрыть открытый ордер при изменении сигнала) находится в коде сейчас
Большое спасибо! Все работает очень хорошо. Я буду работать над этим и посмотрю, почему я был неправ.
Кто-нибудь знает, можно ли изменить настройки индикатора по времени исполнения через код? Например, я хотел бы иметь CCI, период которого равен ATR, так что когда ATR изменяется, период CCI также изменяется... как инициировать индикатор на каждом новом баре... Проблема в том, что я не знаю, как переинициализировать индикатор через код... Я пытался вызвать init(), когда открыт новый бар, и период меняется правильно, но индикатор не обновляется... значение последнего бара правильное, но я хочу, чтобы весь индикатор перерисовывался в соответствии с новыми настройками... Надеюсь, я понятно объяснил... Спасибо.
Кто-нибудь знает, можно ли изменить настройки индикатора на время исполнения через код? Например, я хотел бы иметь CCI, период которого равен ATR, так что когда ATR меняется, период CCI тоже меняется... как бы инициировать индикатор на каждом новом баре... Проблема в том, что я не знаю, как переинициализировать индикатор через код... Я пытался вызвать init(), когда открыт новый бар, и период меняется правильно, но индикатор не обновляется... значение последнего бара правильное, но я хочу, чтобы весь индикатор перерисовывался в соответствии с новыми настройками... Надеюсь, я понятно объяснил... Спасибо.
Если вы хотите перерисовать все значения indi, просто установите счетчик главного цикла в начале на Bars-1 и рассчитайте значения с новыми настройками.
Спасибо mladen за быстрый ответ...
пожалуйста, взгляните на этот пример:
extern int IndicatorPeriod = 10;
extern int AtrPeriod= 10;
extern bool DynamicPeriod = TRUE;
int init()
{
if (DynamicPeriod)
{
double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);
IndicatorPeriod = atr;
}
}
int start()
{
datetime lastBarOpenTime;
datetime thisBarOpenTime = Time[0];
if (DynamicPeriod)
{
if(thisBarOpenTime != lastBarOpenTime)
{
lastBarOpenTime = thisBarOpenTime;
init();
}
}
int i,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
// is this what you are talking about?
int limit=MathMin(Bars-counted_bars,Bars-1);
for(i=limit; i>=0; i--) //MAIN LOOP
{
wherever calculation
}
}
Спасибо mladen за быстрый ответ...
пожалуйста, посмотрите этот пример:
extern int IndicatorPeriod = 10;
extern int AtrPeriod= 10;
extern bool DynamicPeriod = TRUE;
int init()
{
if (DynamicPeriod)
{
double atr = NormalizeDouble(100*iATR(0,0,AtrPeriod,0),0);
IndicatorPeriod = atr;
}
}
int start()
{
datetime lastBarOpenTime;
datetime thisBarOpenTime = Time[0];
if (DynamicPeriod)
{
if(thisBarOpenTime != lastBarOpenTime)
{
lastBarOpenTime = thisBarOpenTime;
init();
}
}
int i,counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
// is this what you are talking about?
int limit=MathMin(Bars-counted_bars,Bars-1);
for(i=limit; i>=0; i--) //MAIN LOOP
{
wherever calculation
}
}
AtApi
Если вы хотите сохранять значения в буфер (одно значение на точное время для данного бара), то да, это правильный способ. Но если вы хотите, чтобы все бары были "перерисованы", то установите linit всегда равнымBars-1.