Врач-бондиатОр
Врач-бондиатОр личный блог
23 июля 2020, 18:48

Вопрос по Луа 3 - работа циклов


Зарегистрировался для развития на форуме Арки и в разделе по программированию на Луа нашел код (https://forum.quik.ru/forum10/topic5664/)
Смысл в том, что автор хочет продавать актив поштучно пока в портфеле не останется какое-то количество бумаг.
На мой взгляд полезная вещь.
Когда я его попробовал на демо квике, то начались бесконечные продажи (как и у автора).
Судя по записям, проблема не решена.
Может кто подскажет как решить вопрос?

<code class="rainbow" data-language="lua">   while stopped == false do

      Quotes_1 = getQuoteLevel2("SPBFUT", "SRU0")

      Bid_Count_1 = tonumber(Quotes_1.bid_count)

      if Bid_Count_1>1 then
         aa= tonumber(Quotes_1.bid[Bid_Count_1].quantity)
         SetCell(Table, 1, 1, tostring(aa))
      end

      local asset = getFuturesHolding("SPBFUT", "SPBFUT****","SRU0",0).totalnet

      repeat

            if aa>1 and asset>0 then

               local ID_B_Order=10
               local OrderSell = {
                     ["ACTION"]="NEW_ORDER",
                     ["ACCOUNT"]= "SPBFUT****",
                            ["OPERATION"] = "S",
                     ["CLASSCODE"]="SPBFUT",
                            ["SECCODE"] = "SRU0",
                            ["PRICE"] = "0",
                     ["QUANTITY"] = tostring(1),
                     ["TRANS_ID"] = tostring(ID_B_Order),
                     ["TYPE"] = "M",
                     }
               local Err_Order = sendTransaction(OrderSell)
               message(Err_Order)
            end

            asset=asset-1

            sleep(1000)

      until asset==5<br />end</code>
16 Комментариев
  • Андрей К
    23 июля 2020, 19:11
    там же на форуме уже разжевали почему так. Зациклился while, которого у вас нет в вашем примере
  • Chalyj7
    23 июля 2020, 19:12

    Алгоритм примерно такой:

    1. Отправляем заявку на продажу. Скрипт запоминает trans_id этой заявки.

    2. Через колбек OnOrder получаем информацию о всех заявках. Смотрим, когда у заявки с запомненным trans_id статус поменяется на «исполнена».

    3. Как только заявка с запомненным trans_id исполнена, отправляем новую заявку

     
  • Perl
    23 июля 2020, 21:11
    Цикл счётчик поставь
  • Винни Пух
    23 июля 2020, 21:13
    Просто каждый раз запрашивайте кол-во бумаг заново. Все.
    На случай крайний поменяйте логику условия.
          repeat
              local asset = getFuturesHolding("SPBFUT", "SPBFUT****","SRU0",0).totalnet
              ****
          until asset==5

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн