Блог им. Yarillo

Кто вяжет на С# - Хелл!!

Форумчане, Хелл!
засел проверить одну идейку в велсе, и вот не могу раздуплить как заставить производить перебор последовательно в каждом из 4х Массивов (4 тикета в торговле)foreach  — как я понимаю перебирает только 1 масив.

Может каждый тикет в отдельный цикл
If (Титек = Нефть)
{
foreach  ()
.....
}
кто писал ТС с торговлей в несколько тикетов?
Чего нехватает (ну кроме серого вещества в черепной коробке аФФтора))? 
ЗЫ: зню что на Смарте достаточно много технически подкованных участников, поэтому надеюсь прольете свет. как решить задачку=/
Кто вяжет на С# - Хелл!!

Собственно коДД

for (int bar = 20; bar < Bars.Count; bar++)
{
bool Long = Bars.Close[bar] > HiBars_Period[bar — 1];
if (!IsLastPositionActive)
{
if (Long)
{
foreach (string TickerName in DataSetSymbols)
{
SetContext(«Gold», true);
RiskStopLevel = LowBars_Period[bar — 1];
BuyAtMarket(bar + 1, «kjyu»);
orderStopLoss = LowBars_Period[bar — 1];
RestoreContext();
}
}
else
{ //Шортов_Нет)
}
}
else
{
if (LastActivePosition.PositionType == PositionType.Long) // Для длинной позиции
{
foreach (string TickerName in DataSetSymbols)
{
SetContext(«Gold», true);
if (Bars.Close[bar] < LowBars_Period[bar — 1])
{
SellAtMarket(bar + 1, LastActivePosition, «Sell»);
RestoreContext();
}
}
}
}
}
11 комментариев
Press, вопрос именно как норм сплести эту корзину))) по отдельности уже гонял) хочется теперь комплексно на всю картину посмотреть)))

avatar
по идее нужно последовательно запускать 4 цикла foreach, или что то не так понял?(
avatar
Awesome_Trade, 
тогда проще уж так:

var tickersArr = new [] {«RTS», «BR», «SI»}

foreach(var ticker in tickersArr )
{
     foreach(var TickerName ib DataSetSymbols)
     {
           SetContext(ticker, true);
              if (Bars.Close[bar] < LowBars_Period[bar — 1])
              {
                     SellAtMarket(bar + 1, LastActivePosition, «Sell»);
                     RestoreContext();
              }
              //Прочие участки Грааля
      }
}
Бобровский Дмитрий, Спасибо! сейчас попробую)
т.е. 4 массива мы элегантно превращаем в один и делаем перебов в цикле, я правильно понял?

avatar
Awesome_Trade, ну, фактически просто можно в SetContext загонять элементы массива и не заморачиваться. Просто обратите внимание, что в участке кода: 
foreach (string TickerName in DataSetSymbols)
{
SetContext(«Gold», true);
RiskStopLevel = LowBars_Period[bar — 1];
BuyAtMarket(bar + 1, «kjyu»);
orderStopLoss = LowBars_Period[bar — 1];
RestoreContext();
}

Нигде этот самый «TickerName» не используется. Я уже давненько не юзал Велс — использую S# + собственный код.
Просто обратите внимание, что скорее всего у Вас просто тавталогия идёт, т.к. если я правильно понимаю, DataSetSymbols как раз и содержит необходимые «Si», «BR» и т.п.
Вероятно, что простая замена SetContext(«Gold», true); на SetContext(TickerName, true); в исходном коде даст то же самое и без 2-х вложенных циклов.
Вообще, если нужно, чтобы по N активам одновременно считалось — код оставляем как есть (в плане сначала идёт цикл for по свечкам, потом foreach по DataSetSymbols). Если хотим последовательно — меняем местами циклы foreach и for. Наверное, как-то так.
а зачем тебе итератор, если ты не используешь элементы массива?
avatar

теги блога Awesome_Trade

....все тэги



UPDONW
Новый дизайн