[quote="LEXAR"][quote="KOToK"]На просторах интернета есть код для вставки в любой советник для возможности в настройках включить ЛОК, ну и соответственно чтоб велась торговля с локированием. Но нет нигде как сделать из обычного советника, мультисоветник. Вот и хотелось бы узнать у ГУРУ какой самый простой (универсальный) способ переделки советника торгующего на одной паре под торговлю на нескольких парах.[/quote]
Я не гуру, но один сов мультивалютник уже написал. Как раз сейчас его на демке гоняю. Просто в функциях надо перебирать торговые инструменты и подставлять к ним нужные данные...[code]
for(int i = 0; i < ArraySize(Symbols); i++)
SEARCH_TO_SYMBOL(Symbols[i]);[/code][/quote]
В этом как раз и проблемка, постоянно возникают сомнения как правильно, и если это одно и то же какой вариант меньше занимает памяти и обработка информации происходит быстрее. Для примера возьмем из советника индикатор iMACD:
вариант1
[code]int bb_luk(int num, int shift){
double MACDMainCurr=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_MAIN,Shift);
double MACDSigCurr=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_SIGNAL,Shift);
double MACDMainPre=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_MAIN,Shift+1);
double MACDSigPre=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_SIGNAL,Shift+1);
double SellRange=TradingRange*Point;
double BuyRange=(TradingRange-(TradingRange*2))*Point;
if(MACDMainCurr>MACDSigCurr && MACDMainPre<MACDSigPre && MACDSigPre<BuyRange && MACDMainCurr<0 ) return(1);
if(MACDMainCurr<MACDSigCurr && MACDMainPre>MACDSigPre && MACDSigPre>SellRange && MACDMainCurr>0 ) return(-1);
return(0);}[/code]
вариант2
[code]int bb_luk(){
for(int num=0; num<кол-во пар; num++)
{
int shift
double MACDMainCurr=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_MAIN,Shift);
double MACDSigCurr=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_SIGNAL,Shift);
double MACDMainPre=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_MAIN,Shift+1);
double MACDSigPre=iMACD(Symbols[num],0,Fast_EMA,Slow_EMA,Signal_SMA,PRICE_CLOSE,MODE_SIGNAL,Shift+1);
double SellRange=TradingRange*Point;
double BuyRange=(TradingRange-(TradingRange*2))*Point;
if(MACDMainCurr>MACDSigCurr && MACDMainPre<MACDSigPre && MACDSigPre<BuyRange && MACDMainCurr<0 ) return(1);
if(MACDMainCurr<MACDSigCurr && MACDMainPre>MACDSigPre && MACDSigPre>SellRange && MACDMainCurr>0 ) return(-1);
}
return(0);}[/code]