Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 51
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может быть, я непонятно спросила.
Находясь на графике периода М1 хочу заполнить буфер, если на периоде М5, линия индикатора “ Stochastic” сейчас находится выше уровня 55.
////////////////////////////////////////////////
for(int i=limit; i>=0; i--) {
int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55.0)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
if(sto2_0<44.0)
{
BufferDN[i]=high[i]+distance*MyPoint;
}
Comment(sto2_0);
}
В комменте текущее значение верное с М5, а на истории стрелки ставит не по условию, хаос.
В чём может быть дело?
В “подвале” стохастик с М5
Обведены стрелки не по сигналу
пишу советника, который одновременно выставляет 2 СтопОрдера, один на продажу, второй на покупку.
Как прописать условие, что при срабатывании одного СтопОрдера, второй (противоположный) удаляется?
Спасибо.
пишу советника, который одновременно выставляет 2 СтопОрдера, один на продажу, второй на покупку.
Как прописать условие, что при срабатывании одного СтопОрдера, второй (противоположный) удаляется?
Спасибо.
В условии просто. При срабатывании ордера, в рынке появляется позиция, из этого следует, что нужно отследить именно появление позиции, и если она есть - удаляем противоположный ордер.
Это кусок кода для размышления)
bool b, s;
switch(op) {
case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break;
case OP_SELL: s=ExistPositions(sy, OP_SELL, mn); break;
}
if(b) {
DeleteOrders(sy, OP_SELLLIMIT, mn, cl);
DeleteOrders(sy, OP_SELLSTOP , mn, cl);
}
if(s) {
DeleteOrders(sy, OP_BUYLIMIT, mn, cl);
DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
Vitaly Muzichenko, Насколько я понял, еще теперь нужно прописать функции ExistPositions и DeleteOrders
Vitaly Muzichenko, Насколько я понял, еще теперь нужно прописать функции ExistPositions и DeleteOrders
Можно не писать, они есть обе готовые
Ну ..., в учебных целях весьма пользительно...
В практических - очень затратно гонять в каждой функции циклы.
Ну ..., в учебных целях весьма пользительно...
В практических - очень затратно гонять в каждой функции циклы.
Что делать если стоп\тейк 200
но
tp=NormalizeDouble((price+(TakeProfit*_Point)),Digits);
на доллар-иене даст 317.000 при курсе 117.000
ожидаемый результат 117.200
Что делать если стоп\тейк 200
но
tp=NormalizeDouble((price+(TakeProfit*_Point)),Digits);
на доллар-иене даст 317.000 при курсе 117.000
ожидаемый результат 117.200
Зачем столько скобок? Дело вкуса, конечно, но перебор, всё-таки.
tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
Значения подставляются неправильные, если результат неправильный на выходе, так как эта строка кода вычислит всё правильно, даже с лишними скобками.