struct PriceData { double open[12]; }; PriceData pdata[7];
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Подскажите пожалуйста, как перебирать с помощью цикла динамические массивы?
Aleksei Stepanenko, 2020.10.28 00:00
Можно так, как Дмитрий говорил:
struct My { double ma[]; int handle; } my[100]; for(int i=0; i<100; i++) { SetIndexBuffer(i, my[i].ma, INDICATOR_DATA); } for(int i=0; i<100; i++) { my[i].handle = iMA(Symbol(), PERIOD_CURRENT, i+1, 0, MODE_SMA, PRICE_CLOSE); } for(int i=0; i<100; i++) { CopyBuffer(my[i].handle, 0, 0, rates_total, my[i].ma); }
Спасибо, однако вообще не понял как работает и как применить. У меня в коде множество повторений отличие только в переменных, которые было бы удобно перебирать, тогда и код сократься и гибкость кода будет лучше.
Каждая переменная производная от символа, которые мне приходиться прописывать явно, но я хотел бы чтобы они счтитывались с обзора рынка, например 2 символа или 30. Соотвественно переменные динимачески меняются.
Вот еще пример из кода:
if(PositionGetString(POSITION_SYMBOL)==S01) {aMinStop=msS01; bTicket=S01BBOT; sTicket=S01SBOT;} if(PositionGetString(POSITION_SYMBOL)==S02) {aMinStop=msS02; bTicket=S02BBOT; sTicket=S02SBOT;} if(PositionGetString(POSITION_SYMBOL)==S03) {aMinStop=msS03; bTicket=S03BBOT; sTicket=S03SBOT;} if(PositionGetString(POSITION_SYMBOL)==S04) {aMinStop=msS04; bTicket=S04BBOT; sTicket=S04SBOT;} if(PositionGetString(POSITION_SYMBOL)==S05) {aMinStop=msS05; bTicket=S05BBOT; sTicket=S05SBOT;} if(PositionGetString(POSITION_SYMBOL)==S06) {aMinStop=msS06; bTicket=S06BBOT; sTicket=S06SBOT;} if(PositionGetString(POSITION_SYMBOL)==S07) {aMinStop=msS07; bTicket=S07BBOT; sTicket=S07SBOT;}
А хотелось бы так:
for(i=1; i<7; i++) { if(PositionGetString(POSITION_SYMBOL)==S0+i) {aMinStop=msS0+i; bTicket=S0+i+BBOT; sTicket=S0+i+SBOT;} }

- www.mql5.com
Спасибо, однако вообще не понял как работает и как применить.
Вот так:
struct SymbolProperty { string sSymbolName; int aMinStop; string bTicket; string sTicket; } SymbolProperty arrstSymbolProperty[7]; for (i = 0; i < 7; ++i) if (PositionGetString(POSITION_SYMBOL) == arrstSymbolProperty[i].sSymbolName) { arrstSymbolProperty[i].aMinStop = msS0+i; arrstSymbolProperty[i].bTicket = S0 + i + BBOT; arrstSymbolProperty[i].sTicket = S0 + i + SBOT; }
Вот так:
Спасибо, так выглядет для меня читаемым. Буду пробовать применять.
Вот так:
Не интегрируется, ошибки. Вернусь к вопросу позже.
Вопрос актуален до сих пор.
Возможно ли такое?
CORE=3;
for(i=0; i<CORE; i++)
{
int iCORE0+1;
}
Вопрос актуален до сих пор.
Возможно ли такое?
CORE=3;
for(i=0; i<CORE; i++)
{
int iCORE0+1;
}
Нечто подобное я делал, когда программировал на языке Clipper
Вопрос актуален до сих пор.
Возможно ли такое?
CORE=3;
for(i=0; i<CORE; i++)
{
int iCORE0+1;
}
Нельзя так. Используйте динамический массив.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ArrayResize(ihS01,12);
ArrayResize(ihS02,12);
ArrayResize(ihS03,12);
ArrayResize(ihS04,12);
ArrayResize(ihS05,12);
ArrayResize(ihS06,12);
ArrayResize(ihS07,12);
Хотелось бы чтото вроде такого:
for(i=1; i<7; i++)
{ArrayResize(ihS0+i,12); }
Возможно ли что нибудь подобное. Если да, напишите пару примеров. Спасибо.