bool MACD(int type, int TF) { bool r = false; int x = 0; int y = 0; int sumx = 0; int sumy = 0; double MACDx = 0.0; double MACDy = 0.0; if(type == OP_BUY) { for(x = 0; x < 6; x++) { MACDx = iMACD(Symbol(), TF, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, x); if(MACDx > 0.0) sumx++; } for(y = 0; y < 6; y++) { MACDy = iMACD(Symbol(), TF, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, y); if(MACDy > -0.00015 && MACDy < 0.00015) sumy++; } if(sumx < 5 || sumy < 5) r = true; } if(type == OP_SELL) { for(x = 0; x < 6; x++) { MACDx = iMACD(Symbol(), TF, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, x); if(MACDx < 0.0) sumx++; } for(y = 0; y < 6; y++) { MACDy = iMACD(Symbol(), TF, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, y); if(MACDy > -0.00015 && MACDy < 0.00015) sumy++; } if(sumx < 5 || sumy < 5) r = true; } return r; }
Привет коллеге, пришедшему в MQL из C++ Идея позаимствована у Билла Вильямса. Посмотрел два цикла по x и по y. Кажется проще так:
{
MACD = iMACD(Symbol(), TF, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, x);
if(MACD > 0.0) sumx++;
if(MACD > -0.00015 && MACD < 0.00015) sumy++;
}
А вот короче исходного в 3,2 раза (14 строк вместо 45) при том же результате. Теперь ошибка уже видна!!!
bool MACD(int type, int TF) { int sumx = 0, sumy = 0, sumz = 0; double MACD; for(int x = 0; x < 6; x++) { MACD = iMACD(Symbol(), TF, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, x); if(MACD > 0.0) sumx++; if(MACD > -0.00015 && MACD < 0.00015) sumy++; if(MACD < 0.0) sumz++; } if((type == OP_BUY && (sumx < 5 || sumy < 5)) || (type == OP_SELL && (sumz < 5 || sumy < 5))) return true; return false; }Приложите весь код - в понедельник посмотрю на демо и исправлю. Если секрет - почту дайте
То что из плюсов пришел верно подмечено, но я и на них не особо толково пишу =D Спасибо за ответ. Кода всего, как такового, нет, так как только придумал алгоритм весь, довольно простой, решил с чего то простого начать и тут же в лужу присел. Если интересно могу поделиться, не такой это и секрет)
Вобщем суть следующая. На покупку открываемся когда macd изменился с "-" на "+" и прошло не более 5 столбиков гистограммы или имеет значения около 0 - это первый сигнал. И второй индикатор это средняя скользящая периода 20 как только она пробивается снизу вверх свечой и закрывается минимум на 10 пунктов выше неё - это второй сигнал. TP ставил 10-15 пунктов, SL по идее нужно ставить куда-то за MA пунктов за 15, но думаю прикрутить ко всему этому мартингейл (хотя да знаю рисковый получится метод). Времени много не было, по разным причинам и проверить толком на практике не удалось. Но пока удавалось проверять иногда, приносило вроде прибыль, уходило на 15-20 пунктов вниз, открывал мартингейла, пока что все работало.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет. Хотел написать своего первого советника, но так как в этом вопросе новичок что-то пошло не так. Помогите разобраться с функцией, задача её следующая когда MACD пересек 0 и количество столбцов его не более 5 или последние 5 столбцов около 0 линии открыть сделку (то есть выслать true, иначе false). Но открывается совсем не по правилу, вот хоть глаз выколи не вижу в чем проблема.