Блог им. drghest

квик сменил кодировку роботов на луа языке

MARKET               = «SPBFUT»
TICKER               = «SiH7»
ACCOUNT              = "----"
CLIENT_CODE          = "----"

TRANS_ID             = 0
STOP_FACTOR          = 30
SPREAD_FACTOR        = 30
LAST_ORDER           = 0
TRANS_REPLY          = nil
BALANCE = 0

BEZUBYTOK=STOP_FACTOR*5--0.0014--малый шаг

TP=STOP_FACTOR*30--STOP_FACTOR*1--0.015--в % внутри дня (тейк-профит).большой шаг

SREDNSHAG=STOP_FACTOR*10---0.007--средн.шаг(0.08* STOP_FACTOR /1000)

n=3-- кол-во кругов малого BEZUBYTOK>STOP_FACTOR*(n+1)--минимально

k=4--кол-во кругов  безубытка --SREDNSHAG>STOP_FACTOR*(k+1)--минимально

run = true
function main()
   while run do
      if LAST_ORDER == 0 then     
      
         BALANCE = GetTotalnet()
         if BALANCE ~= 0 then
            LAST_ORDER = NewStopOrder(BALANCE)
         end        
         
      else      
      
         BALANCE = GetTotalnet()
         for i = getNumberOf(«STOP_ORDERS») — 1, 0, -1  do
            local stop_order = getItem(«STOP_ORDERS», i)
            if stop_order.order_num == LAST_ORDER then
               if CheckBit(stop_order.flags, 0) then --«ACTIVE»
                  local HAVE_CHANGE = 0
                  local QUANTITY = stop_order.qty
                  if QUANTITY ~= math.abs(BALANCE) then
                      HAVE_CHANGE = 1
                  else
                     local PRICES = {}
                     PRICES = SetStopprice(PRICES, QUANTITY)
                     local SPRICE = PRICES[«STOPPRICE»]:gsub(',','.') + 0
                     local OPRICE = stop_order.condition_price
                     if not CheckBit(stop_order.flags, 2) then --«BUY»   


                        if SPRICE < OPRICE-SREDNSHAG then  — первый цикл средний круг
                           if SPRICE < OPRICE-TP   then            — тейк профит большой круг
                              HAVE_CHANGE =1                               
                           end             

                        else


                        if SPRICE < OPRICE-STOP_FACTOR then  — первый цикл малый круг
                           for i =  0, n  do
                              if i< n then
          --  message(«отодвигается!!! »..tostring(n)..")
                                  message(«отодвигается!!!», 3)--
                                HAVE_CHANGE =1                                
                              end

                           end

                          if SPRICE < OPRICE-BEZUBYTOK then  — первый цикл безубыток круг
                            for i =  0, k  do
                              if i<k   then
                                  message(«безубыток!!!», 3)--;
                                HAVE_CHANGE =1                                
                              end

                            end
                          end
                        end
                        end



                                   


                     else  — «SELL»    



                        if SPRICE > OPRICE+SREDNSHAG then  — первый цикл средний круг
                           if SPRICE > OPRICE+TP*OPRICE   then            — тейк профит большой круг
                              HAVE_CHANGE =1                               
                           end             

                        else


                        if SPRICE > OPRICE+STOP_FACTOR then  — первый цикл малый круг
                           for i =  0, n  do
                              if i> n  then
                                  message(«отодвигается!!!», 3)--;
                                HAVE_CHANGE =1                                
                              end

                           end

                          if SPRICE > OPRICE+BEZUBYTOK then  — первый цикл безубыток круг
                            for i =  0, k  do
                              if  i>k then
                                  message(«безубыток!!!», 3)--;
                                HAVE_CHANGE =1                               
                              end
 
                            end
                          end
                        end

                 
                     end
                  end
                  end
                  if HAVE_CHANGE == 1 then
                     KillStopOrder()
                     LAST_ORDER = 0
                     break
                  end
               else
                  LAST_ORDER = 0
               end
            end
         end
         
      end
      
      sleep(200)
   end
end

function OnStop()
   run = false
end

— Получает текущую чистую позицию по инструменту
GetTotalnet = function()
   for i = 0,getNumberOf('futures_client_holding') — 1 do
      local futures_client_holding = getItem('futures_client_holding',i)
      if futures_client_holding.sec_code == TICKER then
         return futures_client_holding.totalnet
      end
   end
   — Если позиция по инструменту в таблице не найдена, возвращает 0
   return 0
end

function NewStopOrder(size)
   T = {}
   TRANS_ID = TRANS_ID + 1
   T[«TRANS_ID»]    = tostring(TRANS_ID)
   T[«ACTION»]      = «NEW_STOP_ORDER»   
   T[«CLASSCODE»]   = MARKET
   T[«SECCODE»]     = TICKER
   T[«ACCOUNT»]     = ACCOUNT
   T[«CLIENT_CODE»] = CLIENT_CODE
   T = SetStopprice(T)
   if BALANCE > 0 then
      T[«OPERATION»] = «S»
   else
      T[«OPERATION»] = «B»
   end    
   T[«QUANTITY»] = tostring(math.abs(size))
   local trans_reply = SEND_TRANSACTION(30, T)
   if trans_reply ~= nil then
      if trans_reply.order_num ~= nil then
         return trans_reply.order_num
      else
         message(trans_reply.result_msg)
         return 0
      end
   else
      return 0
   end
end

function KillStopOrder()
   KILLING_STOP_ORDER = true
   T = {}
   TRANS_ID = TRANS_ID + 1
   T[«TRANS_ID»] = tostring(TRANS_ID)
   T[«ACTION»] = «KILL_STOP_ORDER»
   T[«STOP_ORDER_KEY»] = tostring(LAST_ORDER)    
   T[«CLASSCODE»] = MARKET
   T[«SECCODE»] = TICKER
   T[«ACCOUNT»] = ACCOUNT
   T[«CLIENT_CODE»] = CLIENT_CODE
   
   local trans_reply = SEND_TRANSACTION(30, T)
   if trans_reply ~= nil then
      — Ждет результата снятия стоп-заявки (3 — снята, 4 — не удалось снять)
      while TRANS_REPLY.status ~= 3 and TRANS_REPLY.status ~= 4 do
         sleep(10)
      end    
   end
end

function SetStopprice(T)
   local last = getParamEx(MARKET, TICKER, «LAST»).param_value + 0
   local price_step = getParamEx(MARKET, TICKER, «SEC_PRICE_STEP»).param_value + 0   
   local price = 0
   local stop_price = 0
   if BALANCE > 0 then
      stop_price = last — STOP_FACTOR
      price = stop_price — SPREAD_FACTOR
   else
      stop_price = last + STOP_FACTOR
      price = stop_price + SPREAD_FACTOR
   end
   T[«PRICE»] = tostring(price):gsub('[\.]', ',')   
   T[«STOPPRICE»] = tostring(stop_price):gsub('[\.]', ',')
   return T
end

function SEND_TRANSACTION(Timeout, T)
   TRANS_REPLY = nil
   local res = sendTransaction(T)
   if res ~= "" then
      message(res)
      return nil
   end
   
   local time_sec = os.time()
   while os.time() — time_sec < Timeout do
      if TRANS_REPLY ~= nil and TRANS_REPLY.trans_id == TRANS_ID then
         break
      end
   end
   return TRANS_REPLY
end
function OnTransReply(trans_reply)
   if trans_reply.trans_id == TRANS_ID then
      TRANS_REPLY = trans_reply
   end
end

— Функция проверяет установлен бит, или нет (возвращает true, или false)
CheckBit = function(flags, _bit)
   — Проверяет, что переданные аргументы являются числами
   if type(flags) ~= «number» then error(«Ошибка!!! Checkbit: 1-й аргумент не число!») end
   if type(_bit) ~= «number» then error(«Ошибка!!! Checkbit: 2-й аргумент не число!») end
 
   if _bit == 0 then _bit = 0x1
   elseif _bit == 1 then _bit = 0x2
   elseif _bit == 2 then _bit = 0x4
   elseif _bit == 3 then _bit  = 0x8
   elseif _bit == 4 then _bit = 0x10
   elseif _bit == 5 then _bit = 0x20
   elseif _bit == 6 then _bit = 0x40
   elseif _bit == 7 then _bit  = 0x80
   elseif _bit == 8 then _bit = 0x100
   elseif _bit == 9 then _bit = 0x200
   elseif _bit == 10 then _bit = 0x400
   elseif _bit == 11 then _bit = 0x800
   elseif _bit == 12 then _bit  = 0x1000
   elseif _bit == 13 then _bit = 0x2000
   elseif _bit == 14 then _bit  = 0x4000
   elseif _bit == 15 then _bit  = 0x8000
   elseif _bit == 16 then _bit = 0x10000
   elseif _bit == 17 then _bit = 0x20000
   elseif _bit == 18 then _bit = 0x40000
   elseif _bit == 19 then _bit = 0x80000
   elseif _bit == 20 then _bit = 0x100000
   end
 
   if bit.band(flags,_bit ) == _bit then return true
   else return false end
end

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



MARKET               = «TQBR»--«TQDE»
TICKER               = «FEES»--«GMKN»--«TAER» --«GMKN»
ACCOUNT              = «L01-00000F00»
CLIENT_CODE          = "---"

LIMIT_KIND           = 2
TRANS_ID             = 0
STOP_FACTOR          = 0.0006
STOP_FACTOR1          =  STOP_FACTOR*2 — 0.0003
SPREAD_FACTOR        = 0.001
LAST_ORDER           = 0
TRANS_REPLY          = nil
BALANCE = 0  --автостоп
BALANCE1=30  — постоянное кол-во
lot=1 — лот тикера

n=3-- кол-во кругов малого --BEZUBYTOK>STOP_FACTOR*(n+1)--минимально

k=4--кол-во кругов  безубытка --SREDNSHAG>BEZUBYTOK*(k+1)---STOP_FACTOR*(k+1)--минимально

BEZUBYTOK=STOP_FACTOR*3--0.0014--малый шаг

TP=STOP_FACTOR*10--STOP_FACTOR*1--0.015--в % внутри дня (тейк-профит).большой шаг

SREDNSHAG=STOP_FACTOR*5---0.007--средн.шаг(0.08* STOP_FACTOR /1000)

i=0
c=0





run = true
function main()
   while run do
      if LAST_ORDER == 0 then     
      
         BALANCE = GetBalance()
         if BALANCE ~= 0 then
            LAST_ORDER = NewStopOrder(BALANCE)
         end        
         
      else      
      
         BALANCE = GetBalance()
         for i = getNumberOf(«STOP_ORDERS») — 1, 0, -1  do
            local stop_order = getItem(«STOP_ORDERS», i)
            if stop_order.order_num == LAST_ORDER then
               if CheckBit(stop_order.flags, 0) then --«ACTIVE»
                  local HAVE_CHANGE = 0
                  local QUANTITY = stop_order.qty
                  if QUANTITY ~= math.abs(BALANCE/lot) then --обязательно делить на лот.иначе снимает
                      HAVE_CHANGE = 1
                  else
                     local PRICES = {}
                     PRICES = SetStopprice(PRICES, QUANTITY)
                     local SPRICE = PRICES[«STOPPRICE»]:gsub(',','.') + 0
                     local OPRICE = stop_order.condition_price
                     if not CheckBit(stop_order.flags, 2) then --«BUY»   






                        if SPRICE < OPRICE-SREDNSHAG then  — первый цикл средний круг
                           if SPRICE < OPRICE-TP   then            — тейк профит большой круг
                              HAVE_CHANGE =1                               
                           end             

                        else
------------------------------------------------------------------------------------------------------------------------

                        if SPRICE < OPRICE-BEZUBYTOK then  — первый цикл малый круг
                           --for i =  0, k  do
                              if i <k then
                                  message(«безубыток!!!», 3)--;
                                  message(«i = »..i)  --message('i = '..i)
                                 STOP_FACTOR=STOP_FACTOR1 --отдаление шага
                               HAVE_CHANGE =1
                                 i =i+1
                              end
                        else
                          if SPRICE < OPRICE-STOP_FACTOR then  — первый цикл безубыток круг
                            --for c =  0, n  do
                              if c <n then
                                  message(«отодвигается!!!», 3)--;
                                  message(«c = »..c)  --message('c = '..c)                   
                               HAVE_CHANGE =1
                                 c=c+1
                              end

                          end
                        end --
                        end
—  


                     else  — «SELL»    



                        if SPRICE > OPRICE+SREDNSHAG then  — первый цикл средний круг
                           if SPRICE > OPRICE+TP   then            — тейк профит большой круг
                              HAVE_CHANGE =1                               
                           end             

                        else
------------------------------------------------------------------------------------------------------------------------

                        if SPRICE > OPRICE+BEZUBYTOK then  — первый цикл малый круг
                           --for i =  0, k  do
                              if i <k then
                                  message(«безубыток!!!», 3)--;
                                  message(«i = »..i)  --message('i = '..i)
                                 STOP_FACTOR=STOP_FACTOR1 --отдаление шага
                               HAVE_CHANGE =1
                                 i =i+1
                              end
                        else
                          if SPRICE > OPRICE+STOP_FACTOR then  — первый цикл безубыток круг
                            --for c =  0, n  do
                              if c <n then
                                  message(«отодвигается!!!», 3)--;
                                  message(«c = »..c)  --message('c = '..c)                    
                               HAVE_CHANGE =1
                                 c=c+1
                              end

                        end
                           end --
--------------------------------------------------------------------------------------------------------------------------                 
                     end
                  end
                  end





                  if HAVE_CHANGE == 1 then
                     KillStopOrder()
                     LAST_ORDER = 0
                     break
                  end
               else
                  LAST_ORDER = 0
               end
            end
         end
         
      end
      
      sleep(10)
   end
end

function OnStop()
   run = false
end

function GetBalance()
   for i = 0, getNumberOf(«DEPO_LIMITS») — 1 do
      local depo_limit = getItem(«DEPO_LIMITS», i)
      if depo_limit.sec_code == TICKER
      and depo_limit.trdaccid == ACCOUNT
      and depo_limit.limit_kind == LIMIT_KIND then
          — return BALANCE1--depo_limit.currentbal   — прыгает баланс--прозвон баланса--BALANCE1--перекос продажи и если условие if то докупщик и продажник
         return depo_limit.currentbal
      end
   end
   return 0
end

function NewStopOrder(size)
   T = {}
   TRANS_ID = TRANS_ID + 1
   T[«TRANS_ID»]    = tostring(TRANS_ID)
   T[«ACTION»]      = «NEW_STOP_ORDER»   
   T[«CLASSCODE»]   = MARKET
   T[«SECCODE»]     = TICKER
   T[«ACCOUNT»]     = ACCOUNT
   T[«CLIENT_CODE»] = CLIENT_CODE
   T = SetStopprice(T)
   if BALANCE > 0 then
      T[«OPERATION»] = «S»
   else
      T[«OPERATION»] = «B»
   end    
   T[«QUANTITY»] = tostring(math.abs(size/lot))
   local trans_reply = SEND_TRANSACTION(30, T)
   if trans_reply ~= nil then
      if trans_reply.order_num ~= nil then
         return trans_reply.order_num
      else
         message(trans_reply.result_msg)
         return 0
      end
   else
      return 0
   end
end

function KillStopOrder()
   KILLING_STOP_ORDER = true
   T = {}
   TRANS_ID = TRANS_ID + 1
   T[«TRANS_ID»] = tostring(TRANS_ID)
   T[«ACTION»] = «KILL_STOP_ORDER»
   T[«STOP_ORDER_KEY»] = tostring(LAST_ORDER)    
   T[«CLASSCODE»] = MARKET
   T[«SECCODE»] = TICKER
   T[«ACCOUNT»] = ACCOUNT
   T[«CLIENT_CODE»] = CLIENT_CODE
   
   local trans_reply = SEND_TRANSACTION(30, T)
   if trans_reply ~= nil then
      — Ждет результата снятия стоп-заявки (3 — снята, 4 — не удалось снять)
      while TRANS_REPLY.status ~= 3 and TRANS_REPLY.status ~= 4 do
         sleep(10)
      end    
   end
end

function SetStopprice(T)
   local last = getParamEx(MARKET, TICKER, «LAST»).param_value + 0
   local price_step = getParamEx(MARKET, TICKER, «SEC_PRICE_STEP»).param_value + 0   
   local price = 0
   local stop_price = 0
   if BALANCE > 0 then
      stop_price = last — STOP_FACTOR
      price = stop_price — SPREAD_FACTOR
   else
      stop_price = last + STOP_FACTOR
      price = stop_price + SPREAD_FACTOR
   end
   T[«PRICE»] = tostring(price):gsub('[\.]', ',')   
   T[«STOPPRICE»] = tostring(stop_price):gsub('[\.]', ',')
   return T
end

function SEND_TRANSACTION(Timeout, T)
   TRANS_REPLY = nil
   local res = sendTransaction(T)
   if res ~= "" then
      message(res)
      return nil
   end
   
   local time_sec = os.time()
   while os.time() — time_sec < Timeout do
      if TRANS_REPLY ~= nil and TRANS_REPLY.trans_id == TRANS_ID then
         break
      end
   end
   return TRANS_REPLY
end
function OnTransReply(trans_reply)
   if trans_reply.trans_id == TRANS_ID then
      TRANS_REPLY = trans_reply
   end
end

— Функция проверяет установлен бит, или нет (возвращает true, или false)
CheckBit = function(flags, _bit)
   — Проверяет, что переданные аргументы являются числами
   if type(flags) ~= «number» then error(«Ошибка!!! Checkbit: 1-й аргумент не число!») end
   if type(_bit) ~= «number» then error(«Ошибка!!! Checkbit: 2-й аргумент не число!») end
 
   if _bit == 0 then _bit = 0x1
   elseif _bit == 1 then _bit = 0x2
   elseif _bit == 2 then _bit = 0x4
   elseif _bit == 3 then _bit  = 0x8
   elseif _bit == 4 then _bit = 0x10
   elseif _bit == 5 then _bit = 0x20
   elseif _bit == 6 then _bit = 0x40
   elseif _bit == 7 then _bit  = 0x80
   elseif _bit == 8 then _bit = 0x100
   elseif _bit == 9 then _bit = 0x200
   elseif _bit == 10 then _bit = 0x400
   elseif _bit == 11 then _bit = 0x800
   elseif _bit == 12 then _bit  = 0x1000
   elseif _bit == 13 then _bit = 0x2000
   elseif _bit == 14 then _bit  = 0x4000
   elseif _bit == 15 then _bit  = 0x8000
   elseif _bit == 16 then _bit = 0x10000
   elseif _bit == 17 then _bit = 0x20000
   elseif _bit == 18 then _bit = 0x40000
   elseif _bit == 19 then _bit = 0x80000
   elseif _bit == 20 then _bit = 0x100000
   end
 
   if bit.band(flags,_bit ) == _bit then return true
   else return false end
end


--Параметры:
p_classcode=«SPBFUT» --Код класса
p_seccode=«RIZ5» --Код инструмента
p_account="---" --Код счета
p_clientcode="---" --Клиенткий код
p_count=1 --Размер позиции
p_spread=200 --Проскальзывание
p_sell_level_zigzag=500 --уровень RSI, при котором продаем
p_buy_level_zigzag=500 --уровень RSI, при котором покупаем

is_run = true
count = 0


function main()
    while is_run do
        sleep(100)
        robot()
    end
end

function robot()
    local N1=getNumCandles(«RIZ5-zig-zag»)
    --local N2=getNumCandles(«RSI-15-BRJ5»)
    local N=getNumCandles(«RIZ5-zig-zag-price»)

— message(«RIZ5-zig-zag-price: »..RIZ5-zig-zag-price),1)

    t1,n1,i1=getCandlesByIndex(«RIZ5-zig-zag», 0, N1-2, 2)--(«RSI-1», 0, N1-3, 2)

 message(«RIZ5-zig-zag: »..t1[1].close,1)-- message(«MA1-RIH5: »..t1[0].close,1)

    --t2,n2,i2=getCandlesByIndex(«RSI-15-BRJ5», 0, N2-3, 3)--(«RSI-2», 0, N2-3, 2)
    t,n,i=getCandlesByIndex(«RIZ5-zig-zag-price», 0, N-1, 1)

 message(«RIZ5-zig-zag-price: »..t[0].close,1)

        --сигнал на продажу (первый мувинг пересекает втрой RSI-15-BRJ5 сверху вниз
    if t[0].close<t1[1].close and t1[1].close>t[0].close+p_sell_level_zigzag  then--фильтр уровня
    --if t1[0].close>t2[0].close and t1[1].close<t2[1].close then
        --if t1[0].close>t2[0].close and t1[1].close<t2[1].close then
            --if t1[1].close>p_sell_level_RSI --фильтр уровня
        Trade(«S»,count+p_count,t[0].close-p_spread)
    --end
    end
    
    --сигнал на покупку (первый мувинг RSI-5-BRJ5 пересекает второй снизу вверх
    if t[0].close>t1[1].close and t1[1].close<t[0].close-p_buy_level_zigzag  then--фильтр уровня
        --if t1[0].close>t2[0].close and t1[1].close<t2[1].close then
            --if t1[1].close<p_buy_level_RSI --фильтр уровня
        Trade(«B»,p_count-count,t[0].close+p_spread)
    --end
    end
end

function Trade(a_oper,a_count,a_price)
    if a_count>0 then
        t = {
                [«CLASSCODE»]=p_classcode,
                [«SECCODE»]=p_seccode,
                [«ACTION»]=«NEW_ORDER»,
                [«ACCOUNT»]=p_account,
                [«CLIENT_CODE»]=p_clientcode,
                [«TYPE»]=«L»,
                [«OPERATION»]=a_oper,
                [«QUANTITY»]=tostring(a_count),
                [«PRICE»]=tostring(a_price),
                [«EXPIRY_DATE»]=«TODAY»,
                [«TRANS_ID»]=«1»
            }
        res=sendTransaction(t)
        message(«Количество до »..tostring(count).."  количество сделки "..tostring(a_count).."  тип операции"..a_oper,1)
        if a_oper==«B» then
            count=count+a_count
        else
            count=count-a_count
        end
        message(«Количество после »..tostring(count),1)
    end
end

function OnStop(stop_flag)
    is_run=false
    stop_flag=1
end

это все сейчас не работает на 16 битовой

сканер гэпов не работает
--Параметры:
p_classcode=«TQBR»--«SPBFUT» --Код класса
MARKET               = «TQBR»
TICKER               = «SBER»
ACCOUNT              = "---"
CLIENT_CODE          = "---"
p_seccode=«SBER» --Код инструмента
p_account=«L01-00----»--"---" --Код счета
p_clientcode="----" --Клиенткий код
--p_count=2 --Размер позиции
--p_spread=170 --Проскальзывание
p_day=3000-- дней

n_day=1000-- не мнеьше 2х.последние свечи

is_run = true
count = 0


function main()
    while is_run do
        sleep(100)
        robot()
    end
end

— два варианта -перебор от последней минус заданное или до заданного.

function robot()
    local N1=getNumCandles(«SBER_low»)
    local N2=getNumCandles(«SBER_high»)
        local N=getNumCandles(«SBER»)
    --t,n,i=getCandlesByIndex(«SBER», 0, N-2, 2)


        if n_day <p_day then

        t1,n1,i1=getCandlesByIndex(«SBER_low», 0, N1-n_day, 2)--

    t2,n2,i2=getCandlesByIndex(«SBER_high», 0, N2-(n_day-1), 2) --
 

          if t1[0].low>t2[0].high  then



         message(«t2[0].high = »..t2[0].high)
         message(«t1[0].low  = »..t1[0].low )
         message(«n_day = »..n_day)

         message(«гэп нижний!», 3)--;
          end
         
         — end


        n_day =n_day+1

        end
    
end


function OnStop(stop_flag)
    is_run=false
    stop_flag=1
end








  • обсудить на форуме:
  • Quik Lua
★5
15 комментариев
Квик сменил версию Луа с 5.1 на 5.3, и старые проги могут не работать, и.к. версии частично несовместимы.
avatar
3Qu, https://arqatech.com/ru/support/files/quik-workstation/

Ставьте самый новый 8.11 и потом переделывайте скрипты
не ну какого хера они меняют фундаменты
можно только добавлять
помню чудаки даже формат времени сменили идиоты с например «7» часов на «07» часов, или наоборот.
нахрена это делать то, кому это свербило, так и тут тоже
avatar
Виталий, биржа увеличила «длину» номеров заявок-сделок, из-за этого пришлось поменять и луа. Там изменений минимум, я с++ библиотеку за полчаса поправил (причём весной ещё), скрипты должно быть ещё проще.
avatar
Денис Г., поправь эти
avatar
френк, если вы не можете нагуглить решение этой простой проблемы (фикс неоднократно был и тут, и на форуме квика, арка сама выкладывала вроде что и где сломается), то проще всего нанять программиста.
avatar
О какие прекрасные примеры, спасибочки
avatar
the Rolling Stones, треллинг стоп с 3 мя кругами хороший и даже луа немного тормозит.
avatar
френк, а там же проблема с компилирование, если открытый код то все должно так и работать как раньше,? У вас открытый же тут. Копируй да запускай раз работало нормально
avatar
the Rolling Stones, проверю потом.
не интересно пока
avatar
френк, да я вот программировал программировал, стою перед фактом как пользу то извлечь, итак хаос, а со скриптом он разве что нагляднее. Даже и не знаю что собственно программировать(
avatar
the Rolling Stones, этот стоп три круга да ещо на луа берущий!
встаёшь в аналитику андреева или кого главное стоп не сорвало первый и к вечеру если 3% в день в канале он не задевает куороткий стоп и переходит ещо дальше.
может так все на насдаке или уол стрит работают.
qpile здесь уже не работает!
скорости не хватает!
avatar
френк, а есть бесплатная аналитика?
avatar
the Rolling Stones, откуда
avatar
Я уж понадеялся, что они с ср1251 на юникод перешли :)
avatar

теги блога френк

....все тэги



UPDONW