Доброго дня! Я заранее прошу прощения, может я что-то туплю, или не понимаю какие-то очивидные вещи. Я пытаюсь использовать индикатор iMA, стараюсь писать согласно примерам, что я читал.
В общем, пытаюсь так. ВВерху, выше всех функций советника, обьявляю
double MA[]; // массив для индикатора iMA//---- handles for indicatorsint MA_handle; // указатель на индикатор iMA
Затем использую функцию, каторая будет работать внутри функции OnTick(). В образце, сама функция в нижней части. Собствено, из всего масива я пока
if (EURNZD_d1 != 0.0) countq++;
EURUSD_d1 = CalculateStrengthPairsTF("EURUSD"+dop_symb, PERIOD_D1);
if (EURUSD_d1 != 0.0) countq++;
EURCAD_d1 = CalculateStrengthPairsTF("EURCAD"+dop_symb, PERIOD_D1);
if (EURCAD_d1 != 0.0) countq++;
EURGBP_d1 = CalculateStrengthPairsTF("EURGBP"+dop_symb, PERIOD_D1);
if (EURGBP_d1 != 0.0) countq++;
EURAUD_d1 = CalculateStrengthPairsTF("EURAUD"+dop_symb, PERIOD_D1);
if (EURAUD_d1 != 0.0) countq++;
EURCHF_d1 = CalculateStrengthPairsTF("EURCHF"+dop_symb, PERIOD_D1);
if (EURCHF_d1 != 0.0) countq++;
if (countq != 0) D1_eur = NormalizeDouble((EURJPY_d1 + EURNZD_d1 + EURUSD_d1 + EURCAD_d1 + EURGBP_d1 + EURAUD_d1 + EURCHF_d1) / countq, 0);
}
int l_count_4 = 0;
AVG_eur = 0;
if (M1_eur != 0.0) l_count_4++;
if (M5_eur != 0.0) l_count_4++;
if (M15_eur != 0.0) l_count_4++;
if (M30_eur != 0.0) l_count_4++;
if (H1_eur != 0.0) l_count_4++;
if (H4_eur != 0.0) l_count_4++;
if (D1_eur != 0.0) l_count_4++;
if (l_count_4 != 0) AVG_eur = (M1_eur + M5_eur + M15_eur + M30_eur + H1_eur + H4_eur + D1_eur) / l_count_4;
}
double CalculateStrengthPairsTF(string a_symbol, int a_timeframe) {
int DIGITS_ = SymbolInfoInteger(a_symbol,SYMBOL_DIGITS);
//---MqlTick last_tick;
if(SymbolInfoTick(a_symbol,last_tick));
double BID_ = last_tick.bid;
BID_ = NormalizeDouble( BID_, DIGITS_);
MA_handle=iMA(a_symbol,a_timeframe,Period_,0,method_ma,price_applied);
//--- заполнение массива MA[] текущими значениями индикатора iMA//--- в массив будет записано 100 элементовCopyBuffer(MA_handle,0,0,100,MA);
//--- задаём порядок индексации массива MA[] как в MQL4ArraySetAsSeries(MA,true);
double iMA_ = NormalizeDouble(MA[0], DIGITS_);
буду использовать только последнее-нулевое-значение.
Пишет ошибку 'a_timeframe' - can't convert enum Сова.mq5 2009 28
По поводу этой иминно переменной, она в инструкции типа стринг, видите светится сама голубым цветом..
Valmars: Это чисто баг тестера. Поле trans.price_tp в случае TRADE_TRANSACTION_DEAL_ADD может содержать 0 или любой мусор. В on-line торговле выводится всё правильно.
Спасибо. Исправлено. Исправление будет доступно в ближайшем билде.
Подскажите почему в советнике в строке request.type_filling=ORDER_FILLING_AON; пишется ошибка 'ORDER_FILLING_AON' - undeclared identifier cs2011.mq512728 в версии 697
Подскажите почему в советнике в строке request.type_filling=ORDER_FILLING_AON; пишется ошибка 'ORDER_FILLING_AON' - undeclared identifier cs2011.mq512728 в версии 697
Потому что с тех пор как был написан советник произошли изменения в языке.
поставьте в этой строке вместо request.type_filling=ORDER_FILLING_AON;
request.type_filling=ORDER_FILLING_FOK; и будет вам счастье.
Хотя можете просто 0 поставить
request.type_filling=0;
тоже покатит.
PS или как вариант можно (чтоб не делать правки во всём советнике) поставить заплатку на самом верху до всего
#define ORDER_FILLING_AON ORDER_FILLING_FOK
это на случай если ORDER_FILLING_AON упоминается несколько раз, и чтоб не отлавливать все можно так сделать.
Почему-то наблюдаю такую картину: набрасываю индюк в терминале из Навигатора на чарт, а на чарте появляется пустая область под индюк, сам индюк не отображается, а если открыть список индюков чарта, то там он значится с припиской "Debugging". Что за баг и как бороться?
marketeer: Почему-то наблюдаю такую картину: набрасываю индюк в терминале из Навигатора на чарт, а на чарте появляется пустая область под индюк, сам индюк не отображается, а если открыть список индюков чарта, то там он значится с припиской "Debugging". Что за баг и как бороться?
Доброго дня! Я заранее прошу прощения, может я что-то туплю, или не понимаю какие-то очивидные вещи. Я пытаюсь использовать индикатор iMA, стараюсь писать согласно примерам, что я читал.
В общем, пытаюсь так. ВВерху, выше всех функций советника, обьявляю
Затем использую функцию, каторая будет работать внутри функции OnTick(). В образце, сама функция в нижней части. Собствено, из всего масива я пока
буду использовать только последнее-нулевое-значение.
Пишет ошибку 'a_timeframe' - can't convert enum Сова.mq5 2009 28
По поводу этой иминно переменной, она в инструкции типа стринг, видите светится сама голубым цветом..
Пишет ошибку 'a_timeframe' - can't convert enum Сова.mq5 2009 28
Спасибо!! А это то же самое, что double, стринг или инт? Что-то не вьеду, простите уж, куда этот тип вписать?
Хорошо, спасибо!
Это чисто баг тестера. Поле trans.price_tp в случае TRADE_TRANSACTION_DEAL_ADD может содержать 0 или любой мусор. В on-line торговле выводится всё правильно.
Подскажите почему в советнике в строке request.type_filling=ORDER_FILLING_AON; пишется ошибка 'ORDER_FILLING_AON' - undeclared identifier cs2011.mq5 127 28 в версии 697
Подскажите почему в советнике в строке request.type_filling=ORDER_FILLING_AON; пишется ошибка 'ORDER_FILLING_AON' - undeclared identifier cs2011.mq5 127 28 в версии 697
Потому что с тех пор как был написан советник произошли изменения в языке.
поставьте в этой строке вместо request.type_filling=ORDER_FILLING_AON;
request.type_filling=ORDER_FILLING_FOK; и будет вам счастье.
Хотя можете просто 0 поставить
request.type_filling=0;
тоже покатит.
PS или как вариант можно (чтоб не делать правки во всём советнике) поставить заплатку на самом верху до всего
#define ORDER_FILLING_AON ORDER_FILLING_FOK
это на случай если ORDER_FILLING_AON упоминается несколько раз, и чтоб не отлавливать все можно так сделать.
Почему-то наблюдаю такую картину: набрасываю индюк в терминале из Навигатора на чарт, а на чарте появляется пустая область под индюк, сам индюк не отображается, а если открыть список индюков чарта, то там он значится с припиской "Debugging". Что за баг и как бороться?
Люди добрые, помогите!
Берем простейший код.
#property copyright "Copyright 2011,"
#property link "http://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Vhod;
Vhod=linfunc(15);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
double linfunc(int b) // имя функции и список параметров
{
double a;
while((a/b)<1 && !IsStopped())//---------
{
a=a+1;
}
double f=a+b;
// составной оператор
return(a+b); // возвращаемое значение
}
Компилируем на 687 билде, и получаем в отладчике Vhod=0
Как это понимать??? При этом иногда у меня получалось Vhod=30. (странно но факт)
return какую то ерунду возвращает...
Чего за глюки или я чего-то недопонимаю???
У меня предложение к разработчикам -- сделайте значения по умолчанию у всех встроенных типов. С++ в этом смысле не эталон для подражания.
Ну ведь реально кучу времени и нервов сэкономите себе и отвечающим, на отсутствии вопросов как сверху.