Особенно вот это понравилось
if (NormalizeDouble(SigLin-0,00129, 5)==0.0)
Долго ждать будете, пока они сравняются. Слишком туго, зазорчик надо больше оставлять.
А как производить расчет только по последней свече?
Обычно ищут не равенство, а пересечение, т.е., например, если на предыдущей свече цена или другой параметр были меньше определенного значения, а на последней стал больше, то пересечение состоялось.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте. Задача проста, но к сожалению пока толь учусь и она на данном етапе является сложной.
Пожалуста, только дельные советы.Вопрос вот в чем...
Когда МACD к примеру по сигнальной линии 0,00129 должен открываться ордер.(ордер открывается срезу после окончания формирования свечи в которой на индикаторе MACD сигнальной линии было 0,00129 на следующей свече (во время ее формирования)) Загвоздка в том что не могу добиться принятия решения индикатором на основе предыдущего бара.
Постараюсь объяснить другими словами на примере рисунка.
http://hostex.org/dl/f8d8c911d2
Здесь старался описать данное действие по советам из форума
extern double Lot=0.1; // Лот
extern int TimeFrame=0; // Период. Может быть одним из периодов графика. 0 означает период текущего графика.
extern int FastEmaPeriod=12; // Период усреднения для вычисления быстрой скользящей средней.
extern int SlowEmaPeriod=26; // Период усреднения для вычисления медленной скользящей средней.
extern int SignalPeriod=9; // Период усреднения для вычисления сигнальной линии.
extern double SellSL=2; //стоплосс для продажи
extern double SellTP=2; //тейкпрофит для продажи
/*extern double BuySL=2; //стоплосс для покупки
extern double BuyTP=2; //тейкпрофит для покупки*/
double OsnLin;
double SigLin;
int init(){return(0);}
int start()
{
{
if (OrdersTotal()<0) // Если ордеров нет - открываем
{
OsnLin=iCustom(NULL,TimeFrame,"MACD",FastEmaPeriod,SlowEmaPeriod,SignalPeriod,PRICE_CLOSE,MODE_MAIN, 1);
SigLin=iCustom(NULL,TimeFrame,"MACD",FastEmaPeriod,SlowEmaPeriod,SignalPeriod,PRICE_CLOSE,MODE_SIGNA L,1);
if (NormalizeDouble(SigLin-0,00129, 5)==0.0)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,NormalizeDoub le(Ask + SellSL*Point,Digits), NormalizeDouble(Bid - SellTP*Point,Digits));
}
}
return(0);
}