MarketInfo в мультивалютнике

 

Видимо, туплю...

Не работает MarketInfo в мультивалютнике:

- по определённым критериям понял, что нужна инфа (например: инимальный лот) по опр. паре. Делаю так:

Прикрепил эксперт к EURGBP M15. Открыл все сопутствующие графики М15.

Обьявил Symb на глобальном уровне: string Symb; далее:

if ( тра-та-та ) Symb="GBPUSD";

double Min_Lot=MarketInfo(Symb,MODE_MINLOT);

Компиляция проходит нормально. Однако при запуске выдаёт следующее:

MyExpert EURGBP M15: Symbol name for MarketInfo function must be string.

Кто-нить подскажите, плз.

 
alderru >>:

Компиляция проходит нормально. Однако при запуске выдаёт следующее:

Хочу уточнить, при запуск где? в тесторе? если в нем, то MarketInfo() будет работать только для  EURGBP.

 
RomanS писал(а) >>

Хочу уточнить, при запуск где? в тесторе? если в нем, то MarketInfo() будет работать только для EURGBP.

Да нет не в тестере, сразу в терминале.

 
alderru писал(а) >>

Да нет не в тестере, сразу в терминале.

Скорее всего ошибка в коде. покажите код, тогда можно будет помочь.

 
xeon >>:

Скорее всего ошибка в коде.

Согласен, если это не в тесторе, то MarketInfo() должна работать нормально.

 

Да, всё верно.

Созданная простенькая прога показала, что ошибка где-то в другом.
int init()
{
return;
}
int start()
{
double Min_Lot;
double OldBid[1];
string Symb;
if (Bid>=OldBid[0])
{
Symb="EURGBP";
}
else
{
Symb="AUDJPY";
}
OldBid[0]=Bid;
Min_Lot=MarketInfo(Symb,MODE_MINLOT);
Alert("Мин. лот для ",Symb,"=",Min_Lot);
return;
}

Я, честно говоря, грешил на дв. кавычки, что в MarketInfo значение Symb вставляется без них и от этого всё... Но - всё норм.

 

Проблема в кавычках, вот так: "проблема" :)))

...

Назначенная переменная Symb путается в показаниях, и запутывает маркетинфо.

Тут нужно либо так:

Min_Lot_a=MarketInfo("EURGBP",MODE_MINLOT);
Min_Lot_b=MarketInfo("AUDJPY",MODE_MINLOT);
// и т.д...

либо цикл с массивом:

double cena;
string Symb={"EURGBP", "AUDJPY"};
//
for (int i=0; i<2; i++)
{cena=MarketInfo(Symb[i],MODE_BID);
Alert("Цена: ",Symb[i]," = ",cena); }
 

Ваш код работает корректно:

08:40:21 Compiling 'test'
08:40:21 test GBPUSD,M5: loaded successfully
08:40:35 test GBPUSD,M5: Alert: Мин. лот для EURGBP=0.1
08:40:43 test GBPUSD,M5: Alert: Мин. лот для EURGBP=0.1
08:40:44 test GBPUSD,M5: Alert: Мин. лот для EURGBP=0.1
08:40:45 test GBPUSD,M5: Alert: Мин. лот для AUDJPY=0.1
08:40:46 test GBPUSD,M5: Alert: Мин. лот для EURGBP=0.1
08:40:54 test GBPUSD,M5: Alert: Мин. лот для AUDJPY=0.1
08:40:54 test GBPUSD,M5: uninit reason 1
08:40:54 test GBPUSD,M5: removed

 

Идея с построчныи MarketInfo или с массивом, конечно, катит. Но, на то он и советник, что помимо Info ему надо будет ордера выставлять. Там нужна определённость. В массив на выставление ордера все Symb не затолкаешь.

 

Млять!!!

Удаляйте топик на хрен!

У меня нумерация массивов с единичного номера, а не с нуля начинается! Отсюда критерии не правильные.

Всем СПАСИБО за участие.