extern int X = 10; extern int MA_Period = 13; extern int MA2_Period = 34; int start() { double MA1 = iMA(Symbol(), 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 1); double MA2 = iMA(Symbol(), 0, MA2_Period, 0, MODE_SMA, PRICE_CLOSE, 1); if(MA1-MA2 >= X) { // ваши действия } }
Я именно не догоняю, как учесть и пересечение,и эту разницу Х - она ведь может случиться и через 10-15 баров, и через 2...Насколько я поняла в описании индикатора - последняя цифра в скобках - это именно бары?
Я именно не догоняю, как учесть и пересечение,и эту разницу Х - она ведь может случиться и через 10-15 баров, и через 2...Насколько я поняла в описании индикатора - последняя цифра в скобках - это именно бары?
Порядковый номер бара начиная от текущего.
0-текущий бар
1-предыдущий, до нулевого
2-еще более поздний чем 1
и тд
double MA2 = iMA ( Symbol (), 0, MA2_Period, 0, MODE_SMA, PRICE_CLOSE, 1 ) ;
в данном случае МА2=значение средней с определенным периодом которое было на прошлом баре.
Девушка-программистка!!!
Девушка-программистка!!!
Я только учуссс:) И все-таки...кхы-кхы...
if( ma1(0)-ma2(0)>X && ma1(i)>ma2(i) && ma1(i-1)<ma2(i-1)) то тра-ля-ля...
Как определить, чему равно i ? Спасибо заранее
Я только учуссс:) И все-таки...кхы-кхы...
if( ma1(0)-ma2(0)>X && ma1(i)>ma2(i) && ma1(i-1)<ma2(i-1)) то тра-ля-ля...
Как определить, чему равно i ? Спасибо заранее
" i "- в данном случае индекс буфера хранящего значения МА
Вы сами вольны его определять с помощь введения в код внешней переменной, например
extern int i=1;
В рассматриваемом случае занчение i и может быть равно 1.(и любое другое)
if ( ( (MathAbs(ma1(0)-ma2(0))*Point > X ) && (ma1(i)>ma2(i) ) && ( ma1(i-1)<ma2(i-1) )
{
делаем что хотим
}
Как найти момент пересечения двух средних - понятно, а вот как открыться тогда, когда расхождение между мувингами (т.е. ma1 - ma2 >= x) после пересечения составит несколько пунктов?
Пожалуйста,помогите!
Посмотрите здесь: Учебник по MQL4 Простые программы на MQL4 Использование технических индикаторов .
Я только учуссс:) И все-таки...кхы-кхы...
if( ma1(0)-ma2(0)>X && ma1(i)>ma2(i) && ma1(i-1)<ma2(i-1)) то тра-ля-ля...
Как определить, чему равно i ? Спасибо заранее
extern int X = 10; extern int MA_Period = 13; extern int MA2_Period = 34; int start() { double MA1 = iMA(Symbol(), 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 1); double MA2 = iMA(Symbol(), 0, MA2_Period, 0, MODE_SMA, PRICE_CLOSE, 1); double MA1_2 = iMA(Symbol(), 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 2); double MA2_2 = iMA(Symbol(), 0, MA2_Period, 0, MODE_SMA, PRICE_CLOSE, 2); if(MA1-MA2 >= X && MA1_2 < MA2_2) { // ваши действия (насколько я понимаю, Buy) } if(MA2-MA1 >= X && MA2_2 < MA1_2) { // ваши действия (насколько я понимаю, Sell) } }
Если нужно определить пересечение да к тому же такое, при котором расхождение составит больше, чем Х пунктов, то так:
extern int X = 10; extern int MA_Period = 13; extern int MA2_Period = 34; int start() { double MA1 = iMA(Symbol(), 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 1); double MA2 = iMA(Symbol(), 0, MA2_Period, 0, MODE_SMA, PRICE_CLOSE, 1); double MA1_2 = iMA(Symbol(), 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 2); double MA2_2 = iMA(Symbol(), 0, MA2_Period, 0, MODE_SMA, PRICE_CLOSE, 2); if(MA1-MA2 >= X && MA1_2 < MA2_2) { // ваши действия (насколько я понимаю, Buy) } if(MA2-MA1 >= X && MA2_2 < MA1_2) { // ваши действия (насколько я понимаю, Sell) } }
Если Х=10, а разница двух MA исчисляется в сотых и десятитысячных долях от единицы (на Евродолларе значение MA1 примерно 1.4601 например а МА2 =1.4635, и разница между ними составит всего 0,0034 )
Получается что:
выражение MA1 - MA2 >= X не реализуется никогда (в ближайшие 100 лет точно)
а выражение MA1 - MA2 <= X,выполнятся всегда (ну или в ближайшие 100 лет точно)
Как в таких сравнениях можно сравнивать 2 значения абсолютно разных порядков?
Их для начала надо привести в один порядок, например так:
//
extern double X=10;
...
X=X*point;
//
Зачем подсказывать человеку, то в чем сами еще делаете такие же ошибки?
Про условия покупки/продажи в целом я вообще молчу.
Спасибо вам за участие, но чур не ругаться:)
Все равно не догоняю.... здесь может быть должен присутствовать цикл? Мне не совсем ясно, как вы все предлагаете узнавать номера баров по ходу действия. Текущая разность (как сигнал) в "X" пунктов - это бар №0. Т.е сейчас. А за сколько баров до этого произошло пересечение - как узнать это??
Это могло быть и 2 бара назад, и 20...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как найти момент пересечения двух средних - понятно, а вот как открыться тогда, когда расхождение между мувингами (т.е. ma1 - ma2 >= x) после пересечения составит несколько пунктов?
Пожалуйста,помогите!