Ошибка при выставлении заявки и стоп-заявки

Страницы: 1
RSS
Ошибка при выставлении заявки и стоп-заявки
 
Функция ProfitControl Отклик транзакции =  Неправильно указана стоп-цена: "-50.0"CLASSCODE=SPBFUT; ACCOUNT=SPBFUT000a3; TRANS_ID=1234567; OFFSET=0; SPREAD=30.0; ACTION=NEW_STOP_ORDER; SECCODE=SiU0; STOPPRICE=-50.0; EXPIRY_DATE=TODAY; OFFSET_UNITS=PRICE_UNITS; QUANTITY=1; OPERATION=B; CLIENT_CODE=РОБОТ; STOP_ORDER_KIND=TAKE_PROFIT_STOP_ORDER; SPREAD_UNITS=PRICE_UNITS;

function ProfitControl(posNow,acc,emit,class,file)
  local function fn1(param1,param2,param3)
     if(param1==acc and param2==emit and param2==class)then
        return true
     else
        return false
     end
  end
  local step = tonumber(getParamEx(class,emit,"SEC_PRICE_STEP").param_value)
  local EnterPrice = RoundForStep(EnterPriceUni(posNow,emit,class,acc),step)
  local profitPrice = EnterPrice + SignFunc(posNow) * Profit * step
  local ProfCorrect = false                          --Нашли или нет нужный профит
  local count = 0
  local index = SearchItems("stop_orders",0,getNumberOf("stop_orders")-1, fn1, "account,sec_code,class_code")
  if(index~=nil)then
     for i=1,#index do
        local row = getItem("stop_orders",index[i])
        local flag = bit.band(row.flags,1)          --Активная заявка или нет
        if(flag>0)then
           if(row.stop_order_type~=6 or ProfCorrect==true)then
              local keyNumber = row.order_num
              DeleteProfitByNumber(emit,class,keyNumber,file)
              count = count + 1
           else
              local qtyX = row.qty
              local profitPriceX = row.condition_price  
              local buySellX = row.condition
              local signPosX = 0
              if(buySellX==4)then
                 signPosX = -1
              elseif(buySellX==5)then
                 signPosX = 1              
              end
              if(signPosX==Sign_func(posNow) and qtyX==math.abs(posNow) and profitPriceX==profitPrice)then
                 ProfCorrect = true
              else
                 local keyNumber = row.order_num
                 DeleteProfitByNumber(emit,class,keyNumber,file)
                 count = count + 1
              end
           end
        end
     end
  end
  if(ProfCorrect==false and posNow~=0)then
     local profitSpread = 30 * step
     if(posNow>0)then
        buySell = "S"
     else
        buySell = "B"
     end
     NewStopProfit(acc,emit,class,buySell,math.abs(posNow),profitPrice,0,profitSpread,file,"Функция ProfitControl ")
     count = count + 1
  end
  return count
end


Число не может содержать знак разделителя дробной части; Pos= -1; SECCODE=SiU0; QUANTITY=1; PRICE=71750.0; TYPE=L; OPERATION=B; CLIENT_CODE=РОБОТ; TRANS_ID=123456; ACCOUNT=SPBFUT000a3; CLASSCODE=SPBFUT; ACTION=NEW_ORDER;

function NewStopProfit(acc,emit,class,buySell,qty,stopPrice,profitOtstup,profitSpread,file,prevString)
  transaction = {["ACCOUNT"]=acc,["CLASSCODE"]=class,["SECCODE"]=emit,
  ["ACTION"]="NEW_STOP_ORDER",
  ["STOP_ORDER_KIND"]="TAKE_PROFIT_STOP_ORDER",
  ["TRANS_ID"]="1234567",
  ["CLIENT_CODE"]="РОБОТ",
  ["EXPIRY_DATE"]="TODAY",                          --"GTC" тип заявки до отмены, доступна только в основной версии квика
  ["OPERATION"]=buySell,
  ["QUANTITY"]=tostring(qty),
  ["STOPPRICE"]=tostring(stopPrice),
  ["OFFSET_UNITS"]="PRICE_UNITS",
  ["SPREAD_UNITS"]="PRICE_UNITS",
  ["OFFSET"]=tostring(profitOtstup),
  ["SPREAD"]=tostring(profitSpread)
                }
  local result = sendTransaction(transaction)
  local sDataString = ""
  if(file~=nil or file ~="")then
      sDataString = "Отклик транзакции = "..result
  end
  for key,val in pairs(transaction) do
     sDataString = sDataString..key.."="..val.."; "
  end
  if(prevString~=nil)then
     sDataString = prevString..sDataString
  end
  WriteToEndOfFile(file,sDataString)
  return 1
end

Помогите пожалуйста, не могу понять что ему не нравится, версия квика 8.7.1.3
 
Цитата
Михаил написал:
Число не может содержать знак разделителя дробной части
тут все написано: https://forum.quik.ru/forum10/topic5119/
 
Цитата
Sergey Gorokhov написал:
Цитата
Михаил написал:
Число не может содержать знак разделителя дробной части
тут все написано:  https://forum.quik.ru/forum10/topic5119/
Не нашел ничего по своим ошибкам
 
Цитата
Михаил написал:
Не нашел ничего по своим ошибкам

А это?,
 
Цитата
Sergey Gorokhov написал:
Цитата
Михаил написал:
Не нашел ничего по своим ошибкам

А это?,
(' expected near 'tostringEX' с этим кодом выдает такую ошибку
 
Михаил,
такой функции tostringEX не существует, значит Вы ее не добавили
Страницы: 1
Читают тему
Наверх