Сеточный советник (своя сетка)

 

Доброе время, друзья! 

Есть код сетки:

extern double range=100;

if(total()>0 && total()<level)
{
  int type; double ops, last_lot; 
  for(i=0; i<OrdersTotal(); i++)
  {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
    type=OrderType();
    ops=OrderOpenPrice();
    last_lot=OrderLots();
  }
    if(type==0 && Ask<=ops-(range)*ptr) 
      {target_01=ops;
        {target_03=Ask;
        if(use_lot_multiplier) ticket=OrderSend(Symbol(),0,NormalizeDouble(last_lot*multiplier,pres),Ask,3,0,0,"",magic,0,Blue);
        else                   ticket=OrderSend(Symbol(),0,NormalizeDouble(last_lot+increament,pres),Ask,3,0,0,"",magic,0,Blue);
        }
      }
      if(type==1 && Bid>=ops+(range)*ptr) 
      {target_01=ops;
        {target_03=Bid;
        if(use_lot_multiplier) ticket=OrderSend(Symbol(),1,NormalizeDouble(last_lot*multiplier,pres),Bid,3,0,0,"",magic,0,Red);
        else                   ticket=OrderSend(Symbol(),1,NormalizeDouble(last_lot+increament,pres),Bid,3,0,0,"",magic,0,Red);
        }   
      }
  target_04=((target_01-target_03)*10000);
  rage_order=(range);
}

Подскажите, как реализовать свою сетку ордеров по примеру:

range="100,200,35,450";
 
Никто не знает? ;(
 

Здравствуйте.

Вам нужно для этого строку range, содержащую теперь запись нескольких чисел через запятую, разбить на части по запятым с помощью StringSplit():

string result[];                 // массив для получения строк 
StringSplit(range, ',' ,result);

Затем в цикле, где вы раньше использовали одинаковое число range, надо теперь брать очередной элемент из массива result и преобразовывать его в число с помощью StringToInteger():

...
if(type==0 && Ask<=ops-(StringToInteger(result[i]))*ptr)
...

Надо учесть, что количество итераций в цикле должно точно совпадать с количеством чисел, получаемых при разбиении строки range. Или надо добавить проверки и какие-то действия в случае несовпадения, чтобы не было ошибки выхода индекса массива за пределы диапазона.

 
psihodelit #:
Никто не знает? ;(

это хоть и не сложная, но заморочка, писать сокращенно, там так же будет много вопросов. Тут обычно помогают в правильную сторону пойти, если нет опыта тут, то

такое лучше оформить в сервисе

или использовать примеры, опять же надо научиться искать.

Причина обращения: