Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
IndicatorCounted и синхронизация буфера индикатора.
Здравствуйте,
Мой вопрос касается сдвига буфера в пользовательском индикаторе. Я спрашивал на другом форуме, но безрезультатно.
Например:
Код:
#define MAX_LOOK_BACK 5
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_color1 DodgerBlue
#property indicator_separate_window
double rsiBuf[];
int start()
{
int limit;
int counted_bars = IndicatorCounted();
//---- check for possible errors
if(counted_bars < 0)
return(-1);
//---- the last counted bar will be recounted
if(counted_bars > 0)
counted_bars--;
limit=Bars-counted_bars;
//---- main loop
Print("indicator limit: ", limit);
if(MAX_LOOK_BACK < limit)
limit = MAX_LOOK_BACK;
//Calculate from right to left
for(int i = 0; i < limit; i++)
{
rsiBuf = iRSI(Symbol(), NULL, 14, PRICE_CLOSE, i);
}
}Во время работы индикатор вычисляет последние значения RSI за последние 5 баров. (Я поставил максимальное значение MAXLOOK_BACK для удобства тестирования) Если, например, в ситуации, когда limit==2 (а limit==2 часто случается в моих тестах при вызове через iCustom в советнике), то он вычислит значения баров 0 и 1 и запишет в RSI[0] и RSI[1] соответственно и не будет трогать остальной буфер. Все пользовательские индикаторы, которые я видел, написаны именно так. Не должны ли мы сдвигать буфер, если limit < MAX_LOOK_BACK ? так как это перезаписывает RSI[0] и RSI[1], но предыдущие значения этих элементов должны быть в RSI[2] и RSI[3], я прав?
Для наглядности :
Tick=0 AND limit = 5 ==> RSI[0] = 33.33 RSI[1] =44,44 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77.77
Теперь предположим, что последние 2 значения RSI равны 88,88 и 99,99, и массив будет выглядеть следующим образом:
Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77.77
Но разве не должно быть так:
Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2]=33,33 RSI[3]=44,44 RSI[4] = 55.55
Разве при появлении двух новых баров мы не должны сдвигать значения предыдущего бара на 2? previousПочему все индикаторы написаны именно так и нет сдвига значений. И почему они правильно рисуют трендовые линии.
Я работаю над советником, который использует полосу Кельтнера для выхода из позиции (как для прибыли, так и для убытка), однако при любом усреднении с 2 лотами советник игнорирует первый вход. Есть ли какое-нибудь решение для этого, кроме входа на новом графике? Спасибо
Я работаю над советником, который использует полосу Кельтнера для выхода из позиции (как для прибыли, так и для убытка), однако при любом усреднении с 2 лотами советник игнорирует первый вход. Есть ли какое-нибудь решение для этого, кроме входа на новом графике? Спасибо
Опубликуйте советника здесь.
Кодер пока не предоставил мне исходный код, я надеюсь, что это будет полезно само по себе. Любые отзывы будут высоко оценены.
Условное удаление с ожиданием
Я ищу скрипт или код для условного удаления.
В основном я хочу иметь возможность выполнять:
IF Ask is 200MA H1
Сохраняя все отложенные ордера открытыми/живыми ниже 200MA.
Есть идеи?
Получение недельных цен открытия для 10 пар одновременно
Здравствуйте, я новичок в MT4. Я пытаюсь автоматизировать свою технику, написав скрипт для одновременного доступа к недельным ценам открытия 10 пар. Я не могу использовать один советник или скрипт для доступа к недельному графику по одному. Может ли кто-нибудь подсказать мне лучший способ сделать это? Большое спасибо .....
Здравствуйте, я новичок в MT4. Я пытаюсь автоматизировать свою технику, написав скрипт для одновременного доступа к недельным ценам открытия 10 пар. Я не могу использовать один советник или скрипт для доступа к недельному графику по одному. Может ли кто-нибудь подсказать мне лучший способ сделать это? Большое спасибо .....
Здравствуйте,
Вам необходимо объединить функцию iOpen.
Например, допустим, вы хотите показать в комментарии открытые цены gbpusd, eurusd и usdjpy.
тогда фрагмент кода будет выглядеть следующим образом:
double openPair1 = iOpen("EURUSD",PERIOD_W1,0);
double openPair2 = iOpen("GBPUSD",PERIOD_W1,0);
double openPair3 = iOpen("USDJPY",PERIOD_W1,0);
Comment("EURUSD weekly open: "+openPair1+\nGBPUSD weekly open: "+openPair1+"\nUSDJPY weekly open: "+openPair1);
Я предпочитаю иметь пары в качестве входных данных, а также 2 дополнительных входа.
Входы префикса и суффикса позволяют избежать проблем, когда брокеры добавляют что-то к основному имени пары.
extern string pair_preffix = "";
extern string pair_suffix = ""; // введите m для мини-счетов IBFX
extern string pair1 = "EURUSD;
extern string pair2 = "GBPUSD;
extern string pair3 = "USDJPY";
string myPair1, myPair2, myPair3;
int init()
{
myPair1 = pair_prefix + pair1 + pair_suffix;
myPair2 = pair_prefix + pair2 + pair_suffix;
myPair3 = pair_prefix + pair3 + pair_suffix;
return(0);
}
int start()
{
double openPair1 = iOpen(myPair1, PERIOD_W1,0);
double openPair2 = iOpen(myPair2, PERIOD_W1,0);
double openPair3 = iOpen(myPair3, PERIOD_W1,0);
Comment(pair1 + "weekly open: "+openPair1+"\n" + pair2 + " weekly open: "+openPair2+"\n" + pair3 " " weekly open: "+openPair3);
}
Конечно, я бы использовал массивы для этого при использовании 10 пар.
Роберт Хилл aka MrPip