Артем (Все сообщения пользователя)
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
Добрый вечер, прошу помочь разобраться. Возникает такая ошибка Transaction to QUIK: code-5 TRANS2QUIK_WRONG_SYNTAX ExtEC=0 EMsg=00000000000000000000000000000000000000000000000000 EMsgSz=50 ReplyCode=0 TransID=10 OrderNum=0 ResMsg=32211234224231224237237224255322422402242372312242342 462322553223923832243234224231224237237238236243322342352242 4124124332237229322372242330 ResMsgSz=50 не могу понять это ошибка в самом коде моего скрипта, или я не правильно пытаюсь создать соединение скрипта с терминалом, например некорректно указываю путь папки, где находится терминал.
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
попробую правильно расставить скобки, и все-таки прошу уточнить правильно ли я понимаю, что при коде CHETCHIKCIKLOV = CHETCHIKCIKLOV + 1 CHETCHIKCIKLOV должен в течении работы программы постоянно увеличиваться и после некоторого времени работы скрипта, он должен быть не равен 0, с учетом, того, что CHETCHIKCIKLOV глобальная переменная, и я должен буду увидеть это в отладчике
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
PORTFOLIO_EX client_value; DESCRIPTION клиентский объём; CLIENTS_LIST ALL_CLIENTS; FIRMS_LIST ALL_FIRMS; USE_CASE_SENSITIVE_CONSTANTS PROGRAM ' =========ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ============= INSTRUMENT="BRH8" ' код инструмента CLASSCODE="SPBFUT" ' код группы NUMBER=2 ' количество забираемых баров с графика INTERVAL=15 ' таймфрейм на открытом графике в минутах (0 < INTERVAL < 60) LOT=1 ' лот в сделке SEC=10 ' бумаг в лоте ACCOUNT="SPBFUT00494" ' здесь вводится номер Вашего счёта на ММВБ CLIENTCODE="" ' здесь вводится Ваш код клиента ' "SPBFUT007EQ"10222 ' ====================ПЕРЕМЕННЫЕ================== ACTION="" ' стираем тип транзакции HH = 0 ' обнуляем максимум за LL = 10000000 ' обнуляем минимум за ' ===============ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ=============== NEW_GLOBAL("LPRICEB",0) NEW_GLOBAL("LPRICEL",0) NEW_GLOBAL("LPRICE",0) ' последняя (текущая) цена NEW_GLOBAL("BARCOUNT",0) ' счётчик баров NEW_GLOBAL("ORDERCOUNT",0) ' счётчик используется для формирования ID заявок NEW_GLOBAL ("L_POSA",0) ' флаг наличия длинной позиции NEW_GLOBAL ("S_POSA",0) ' флаг наличия короткой позиции NEW_GLOBAL ("L_POSASTOP",0) ' флаг наличия длинной STOPпозиции NEW_GLOBAL ("S_POSASTOP",0) ' флаг наличия короткой STOPпозиции NEW_GLOBAL ("PRICESTOPORDER",0) 'Цена последней заявки –базовая цена для расчета стоп-ордера NEW_GLOBAL ("POSITION",0)' счетчик позиций NEW_GLOBAL ("FLAGSTOPORDER",0) ' Флаг стоп-ордера NEW_GLOBAL ("TRANS_ID",0) 'Идентификатор транзакции NEW_GLOBAL ("NEW_ORDER",0) 'СЧЕТЧИК ОРДЕРОВ NEW_GLOBAL ("NEW_ORDER",0) 'СЧЕТЧИК ОРДЕРОВ NEW_GLOBAL ("QUANTITY",0) NEW_GLOBAL ("STOPNUMBER",0) NEW_GLOBAL ("CHIST",0) NEW_GLOBAL ("KOLSTOP",0) NEW_GLOBAL ("STATUS",0) NEW_GLOBAL ("SECCODE",0) NEW_GLOBAL ("FLAGSDELMAP1",0) NEW_GLOBAL ("FLAGSDELMAP2",0) NEW_GLOBAL ("PREDFLAGSDELMAP1",0) NEW_GLOBAL ("PREDFLAGSDELMAP2",0) NEW_GLOBAL ("PREDFLAGSDEL",0) NEW_GLOBAL ("FLAGSDEL",0) NEW_GLOBAL ("FLAGSDELOBCH",0) ' NEW_GLOBAL ("TRID",0) NEW_GLOBAL ("CHETCHIKCIKLOV",0) NEW_GLOBAL ("CHETCHIKCIKLOVMAP",0) NEW_GLOBAL ("FLAGCDELOK",0) NEW_GLOBAL ("CHETCHIKCIKLOVMAP1",0) NEW_GLOBAL ("CHETCHIKCIKLOVMAP2",0) ' ===============СЕРВЕРНЫЕ ДАТА И ВРЕМЯ=============== SERVERDATE=GET_INFO_PARAM("TRADEDATE") ' дата сервера в формате DD.MM.YYYY SERVERTIME=GET_INFO_PARAM("SERVERTIME") ' время сервера в формате HH:MM:S DATETIME (SERVERDATE,SERVERTIME) ' вызов функции даты-времени ' ===============ФУНКЦИИ ТРАНЗАКЦИЙ=============== FOR NRRC FROM 0 TO GET_NUMBER_OF("ORDERS") TABC = GET_ITEM ("TRADES", NRRC) OPERDEL = GET_VALUE(GET_ITEM ("TRADES", NRRC), "OPERATION") PRICEDEL = GET_VALUE(GET_ITEM ("TRADES", NRRC), "PRICE") + 0 IF OPERDEL = "SELL" LPRICEL = PRICEDEL + 0.10 END IF IF OPERDEL = "BUY" LPRICEB = PRICEDEL - 0.10 END IF END FOR ' ФУНКЦИЯ ОТПРАВКИ ТРАНЗАКЦИЙ FUNC ORDER(PRICE,LOT,DIRECTION,TYPE,TRANS_ID) NEW_GLOBAL("TRANS_PARAMS", "") NEW_GLOBAL("TRANS_RESULT", "") TRANS_ID = TRANS_ID + 1 TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACCOUNT", ACCOUNT) ' наш счёт на ММВБ TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLIENT_CODE", CLIENTCODE) ' клиентский код TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT") ' код класса TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", INSTRUMENT) ' инструмент TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", ACTION) ' вид заявки (обычная, стоп, условная) TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "PRICE", LPRICE) ' цена TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "QUANTITY", LOT) ' лот TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "OPERATION", DIRECTION) ' направление TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TYPE", "M") ' тип заявки (лимитированная или "по рынку") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID", TRID) ' ID транзакции TRANS_RESULT = SEND_TRANSACTION (3000, TRANS_PARAMS) ' отправляем заявку в систему ORDERCOUNT=ORDERCOUNT+1 ' увеличили счётчик заявок на единицу END FUNC ' ФУНКЦИЯ ОТПРАВКИ СТОП ТРАНЗАКЦИЙ FUNC STOPORDERS(PRICE,STOPPRICE, LOT,DIRECTION,TYPE,TRANS_ID) NEW_GLOBAL("TRANS_PARAMS", "") NEW_GLOBAL("TRANS_RESULT", "") TRANS_ID = TRANS_ID + 1 TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACCOUNT", ACCOUNT) ' наш счёт на ММВБ TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLIENT_CODE", CLIENTCODE) ' клиентский код TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT") ' код класса TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", INSTRUMENT) ' инструмент TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", ACTION) ' вид заявки (обычная, стоп, условная) TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "STOPORDER_KIND", "SIMPLE_STOPORDER") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "EXPIRY_DATE", "GTC") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "STOPPRICE", LPRICEB) 'ЦЕНА УСЛОВИЯ ЗАЯВКИ TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "PRICE",LPRICEB ) ' цена ИСПОЛНЕНИЯ ЗАЯВКИ TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "QUANTITY", LOT) ' лот TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "OPERATION", DIRECTION) ' направление TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TYPE", "L") ' тип заявки (лимитированная или "по рынку") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID", TRID) ' ID транзакции TRANS_RESULT = SEND_TRANSACTION (30, TRANS_PARAMS) ' отправляем заявку в систему ORDERCOUNT=ORDERCOUNT+1 ' увеличили счётчик заявок на единицу END FUNC FUNC STOPORDERL(PRICE,STOPPRICE, LOT,DIRECTION,TYPE,TRANS_ID) NEW_GLOBAL("TRANS_PARAMS", "") NEW_GLOBAL("TRANS_RESULT", "") TRANS_ID = TRANS_ID + 1 TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACCOUNT", ACCOUNT) ' наш счёт на ММВБ TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLIENT_CODE", CLIENTCODE) ' клиентский код TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT") ' код класса TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", INSTRUMENT) ' инструмент TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", ACTION) ' вид заявки (обычная, стоп, условная) TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "STOPORDER_KIND", "SIMPLE_STOPORDER") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "EXPIRY_DATE", "GTC") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "STOPPRICE", LPRICEL) 'ЦЕНА УСЛОВИЯ ЗАЯВКИ TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "PRICE", LPRICEL ) ' цена ИСПОЛНЕНИЯ ЗАЯВКИ TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "QUANTITY", LOT) ' лот TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "OPERATION", DIRECTION) ' направление TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TYPE", "L") ' тип заявки (лимитированная или "по рынку") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID", TRID) ' ID транзакции TRANS_RESULT = SEND_TRANSACTION (30, TRANS_PARAMS) ' отправляем заявку в систему ORDERCOUNT=ORDERCOUNT+1 ' увеличили счётчик заявок на единицу END FUNC ' ФУНКЦИЯ СНЯТИЯ СТОП ТРАНЗАКЦИЙ FUNC KILL_STOPORDER(STOP_ORDER_KEY, CLASSCODE, SECCODE) TRANS_PARAMS = CREATE_MAP() TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID", TRID) TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", INSTRUMENT) TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", "KILL_STOP_ORDER") TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACCOUNT", ACCOUNT) TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "STOP_ORDER_KEY", STOPNUMBER) TRANS_RESULT = SEND_TRANSACTION (30, TRANS_PARAMS) END FUNC LOSs =CREATE_COLLECTION() ' ФУНКЦИЯ СТОП FUNC STOP_LOS("SPBFUT", INSTRUMENT) FOR P FROM 1 TO GET_NUMBER_OF("STOP_ORDERS") KOLSTOP = GET_VALUE (GET_ITEM ("STOP_ORDERS",P), QUANTITY) +0 IF KOLSTOP = 0 'STOPNUMBER = GET_VALUE (GET_ITEM ("STOP_ORDERS",P), NUMBER) +0 'STATUS=GET_VALUE(GET_ITEM("STOP_ORDERS",P), STATUS) MASSTATUS=GET_ITEM("STOP_ORDERS",P) STATUSS=GET_VALUE(MASSTATUS, "STATUS") STOPNUMBER=GET_VALUE(MASSTATUS, "NUMBER") +0 IF KOLSTOP = 0 AND STATUSS = "ACTIVE" SERVERDATE=GET_INFO_PARAM("TRADEDATE") SERVERTIME=GET_INFO_PARAM("SERVERTIME") DATETIME (SERVERDATE,SERVERTIME) TRID = CURTIME & ORDERCOUNT KILL_STOPORDER(STOPNUMBER, CLASSCODE, SECCODE) END IF END IF END FOR END FUNC ' ===============СЕРВЕРНЫЕ ДАТА И ВРЕМЯ=============== SERVERDATE=GET_INFO_PARAM("TRADEDATE") ' датасерверавформатеDD.MM.YYYY SERVERTIME=GET_INFO_PARAM("SERVERTIME") ' времясерверавформатеHH:MM:SS DATETIME (SERVERDATE,SERVERTIME) ' вызовфункциидаты-времени CURTIME=0+CURTIME ' перевод времени в число 'IF (CURTIME > 100001 AND CURTIME < 190000) OR (CURTIME > 191501 AND CURTIME < 235959) ' времявнутриТС OHLC(NUMBER) ' получаем коллекцию BARLIST с барами BARCOUNT=GET_COLLECTION_COUNT(BARLIST) 'считаемколичествобароввколлекцииBARLIST ' ===============ДАННЫЕВТАБЛИЦУ=============== DELETE_ALL_ITEMS() OUTPUT=CREATE_MAP() OUTPUT=SET_VALUE(OUTPUT,"SERVERDATE" , SERVERDATE) OUTPUT=SET_VALUE(OUTPUT,"SERVERTIME" , SERVERTIME) OUTPUT=SET_VALUE(OUTPUT,"INSTRUMENT" , INSTRUMENT) OUTPUT=SET_VALUE(OUTPUT,"BARCOUNT" , BARCOUNT) OUTPUT=SET_VALUE(OUTPUT,"BARLIST" , BARLIST) ADD_ITEM(1,OUTPUT) ' END IF ' ===============ФУНКЦИИ=============== ' ФУНКЦИЯ СЕРВЕРНЫХ ДАТЫ И ВРЕМЕНИ FUNC DATETIME(FSERVERDATE,FSERVERTIME) CURYEAR=SUBSTR(FSERVERDATE,6,4) ' текущийгодвтекстовомформате CURMONTH=SUBSTR(FSERVERDATE,3,2) ' текущий месяц в текстовом формате CURDAY=SUBSTR(FSERVERDATE,0,2) ' текущий день в текстовом формате CURDATE(CURYEAR,CURMONTH,CURDAY) ' вызов функции перевода даты в текстовой формат CURHOUR=SUBSTR(FSERVERTIME,0,2) ' текущие часы в текстовом формате CURMIN=SUBSTR(FSERVERTIME,3,2) ' текущие минуты в текстовом формате CURSEC=SUBSTR(FSERVERTIME,6,2) ' текущие секунды в текстовом формате CURTIME(CURHOUR,CURMIN,CURSEC) ' вызов функции перевода времени в текстовой формат END FUNC ' ФУНКЦИЯ ПЕРЕВОДА ДАТЫ В ТЕКСТОВОЙ ФОРМАТ FUNC CURDATE (FCURYEAR,FCURMONTH,FCURDAY) IF (LEN(FCURMONTH) < 2) CURMONTH = "0" & FCURMONTH END IF IF (LEN(FCURDAY) < 2) CURDAY = "0" & FCURDAY END IF CURDATE = CURYEAR & CURMONTH & CURDAY END FUNC ' ФУНКЦИЯ ПЕРЕВОДА ВРЕМЕНИ В ТЕКСТОВОЙ ФОРМАТ FUNC CURTIME(FCURHOUR,FCURMIN,FCURSEC) IF (LEN(FCURHOUR) < 2) CURHOUR = "0" & FCURHOUR END IF IF (LEN(FCURMIN) < 2) CURMIN = "0" & FCURMIN END IF CURTIME = CURHOUR & CURMIN & "00" END FUNC ' ФУНКЦИЯ OHLC (забора N последних баров) FUNC OHLC(NUMBER) IF INTERVAL<0 or INTERVAL>60 MESSAGE("INTERVAL вне допустимого диапазона",1) RETURN END IF SERVERDATE=GET_INFO_PARAM("TRADEDATE") ' датасерверавформатеDD.MM.YYYY SERVERTIME=GET_INFO_PARAM("SERVERTIME") ' времясерверавформатеHH:MM:SS DATETIME (SERVERDATE, SERVERTIME) ' вызовфункциидаты-времени CURMIN = INTERVAL*FLOOR(CURMIN/INTERVAL) ' округляемостатокдоINTERVAL`а PREDFLAGSDELMAP=CREATE_COLLECTION() FLAGSDELMAP=CREATE_COLLECTION() OPENMAP=CREATE_COLLECTION() CLOSEMAP=CREATE_COLLECTION() BARLIST=CREATE_COLLECTION() ' создаёмсписокбаровввидеMAP-массива FOR I FROM 0 TO NUMBER - 1 CURMIN=CURMIN-INTERVAL ' откатнаинтервалназад IF CURMIN<0 CURMIN=60+CURMIN CURHOUR=CURHOUR-1 IF CURHOUR<0 CURHOUR=23 CURDAY=CURDAY-1 IF CURDAY<1 CURMONTH=CURMONTH-1 IF CURMONTH=1 OR 3 OR 5 OR 7 OR 8 OR 10 OR CURDAY=31 END IF IF CURMONTH=4 OR 6 OR 9 OR 11 CURDAY=30 END IF IF CURMONTH=2 ' еслимесяц- февраль MOD(CURYEAR,4) ' вызов функции остатка от деления IF RESULT = 0 CURDAY=29 ' еслигодвисокосный ELSE CURDAY=28 ' если год не високосный END IF END IF IF CURMONTH<1 CURDAY=31 CURMONTH=12 CURYEAR=CURYEAR-1 IF CURYEAR<0 MESSAGE ("NO DATA",1) BREAK END IF END IF END IF END IF END IF CURDATE(CURYEAR,CURMONTH,CURDAY) ' переводдатывтекстовойформат CURTIME(CURHOUR,CURMIN,0) ' перевод времени в текстовой формат CANDLE=GET_CANDLE(CLASSCODE,INSTRUMENT, "", INTERVAL & "", "PRICE", CURDATE, CURTIME) ' получаемOHLC поCURDATE, CURTIME ' округление OPEN до второго знака после запятой и добавление в MAP-массив CANDLE OPEN=0+GET_VALUE (CANDLE, "OPEN") 'ROUND(OPEN,2) 'OPEN=0+RESULT CANDLE=SET_VALUE(CANDLE,"OPEN",OPEN) OPEN=0+OPEN OPENMAP=INSERT_COLLECTION_ITEM(OPENMAP,I , OPEN) IF 0+OPEN>0' свеча существует ' округление остальных цен до второго знака после запятой и добавление в MAP-массив CANDLE HIGH=0+GET_VALUE (CANDLE, "HIGH") 'ROUND(HIGH,2) 'HIGH=0+RESULT ' округлили HIGH до второго знака после запятой CANDLE=SET_VALUE(CANDLE,"HIGH",HIGH) ' добавилиHIGH вMAP-массив LOW=0+GET_VALUE (CANDLE, "LOW") 'ROUND(LOW,2) 'LOW=0+RESULT ' округлили LOW до второго знака после запятой CANDLE=SET_VALUE(CANDLE,"LOW",LOW) ' добавилиLOW вMAP-массив CLOSE=0+GET_VALUE (CANDLE, "CLOSE") 'ROUND(CLOSE,2) 'CLOSE=0+RESULT ' округлили CLOSE до второго знака после запятой CLOSE=0+CLOSE CANDLE=SET_VALUE(CANDLE,"CLOSE",CLOSE) ' добавилиCLOSE вMAP-массив CLOSEMAP=INSERT_COLLECTION_ITEM(CLOSEMAP,I , CLOSE) CANDLE=SET_VALUE(CANDLE,"FLAGSDEL",FLAGSDEL) CANDLE=SET_VALUE(CANDLE,"PREDFLAGSDEL",PREDFLAGSDEL) BARLIST=INSERT_COLLECTION_ITEM(BARLIST,0,CANDLE)' Поместилитекущийбарвколлекцию ELSE BREAK RETURN END IF END FOR PREDFLAGSDELTAB = GET_COLLECTION_COUNT (PREDFLAGSDELMAP) PREDFLAGSDELMAP1 = GET_COLLECTION_ITEM(PREDFLAGSDELMAP,0) +0 PREDFLAGSDELMAP2 = GET_COLLECTION_ITEM(PREDFLAGSDELMAP,1)+0 FLAGSDELTAB = GET_COLLECTION_COUNT (FLAGSDELMAP) FLAGSDELMAP1 = GET_COLLECTION_ITEM(FLAGSDELMAP,0) +0 FLAGSDELMAP2 = GET_COLLECTION_ITEM(FLAGSDELMAP,1)+0 CLOSEMAPTAB = GET_COLLECTION_COUNT (CLOSEMAP) CLOSEMAP1 = GET_COLLECTION_ITEM(CLOSEMAP,0) +0 CLOSEMAP2 = GET_COLLECTION_ITEM(CLOSEMAP,1)+0 OPENMAPTAB = GET_COLLECTION_COUNT (OPENMAP) OPENMAP1 = GET_COLLECTION_ITEM(OPENMAP,0) + 0 OPENMAP2 = GET_COLLECTION_ITEM(OPENMAP,1) + 0 GREENNOW = 0+0 IF CLOSEMAP1 > OPENMAP1 GREENNOW = 1+0 END IF GREENPRED = 0+0 IF CLOSEMAP2 > OPENMAP2 GREENPRED = 1+0 END IF REDNOW = 0+0 IF CLOSEMAP1 < OPENMAP1 REDNOW = 1+0 END IF REDPRED = 0+0 IF CLOSEMAP2 < OPENMAP2 REDPRED = 1+0 END IF USL1=0 IF GREENNOW = 1 AND GREENPRED = 1 USL1=1 END IF IF REDNOW = 1 AND REDPRED = 1 USL1=2 END IF IF REDNOW = 1 AND GREENPRED = 1 USL1=3 END IF IF GREENNOW = 1 AND REDPRED = 1 USL1=4 END IF 'PRICEB = 0 'PRICEL = 0 'LPRICEB = OPENMAP1 +0 'LPRICEL = OPENMAP1 +0 ' =============БЛОК УСЛОВИЯ ВЫСТАВЛЕНИЯ ЗАЯВОК========== FOR NR FROM 0 TO GET_NUMBER_OF("FUTURES_CLIENT_HOLDINGS") TAB = GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR) CHIST = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0 INST = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "SECCODE") SDEL= 0 IF ((CHIST = 0) AND ((INST = INSTRUMENT) OR (INST+0 = INSTRUMENT +0))) SDEL= 1 END IF END FOR LPRICE = GET_PARAM ("SPBFUT", INSTRUMENT, "LAST")+0 IF SDEL= 1 AND USL1=1 AND (FLAGCDELOK +0 ) = 0 ' если нет открытой длинной позиции ' выставление длинной заявки SERVERDATE=GET_INFO_PARAM("TRADEDATE") SERVERTIME=GET_INFO_PARAM("SERVERTIME") DATETIME (SERVERDATE,SERVERTIME) TRID = CURTIME & ORDERCOUNT ACTION="NEW_ORDER" ORDER(0, LOT, "B", "M", TRID) FLAGCDELOK = 1 PREDFLAGSDELMAP1 = PREDFLAGSDELMAP1 +1 ORDERCOUNT=ORDERCOUNT+1 END IF FOR NR FROM 0 TO GET_NUMBER_OF("FUTURES_CLIENT_HOLDINGS") TAB = GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR) CHIST = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0 IF CHIST > 0 SERVERDATE=GET_INFO_PARAM("TRADEDATE") SERVERTIME=GET_INFO_PARAM("SERVERTIME") DATETIME (SERVERDATE,SERVERTIME) TRID = CURTIME & ORDERCOUNT FOR NRR FROM 0 TO GET_NUMBER_OF("STOP_ORDERS") STATA = GET_VALUE(GET_ITEM ("STOP_ORDERS", NRR), "STATUS") END FOR IF STATA != "ACTIVE" ACTION="NEW_STOP_ORDER" STOPORDERS(LPRICE, LPRICEB, LOT, "S", "L", TRID) ELSE BREAK END IF END IF END FOR ' =============БЛОК УСЛОВИЯ ВЫСТАВЛЕНИЯ ЗАЯВОК========== IF SDEL= 1 AND USL1=2 AND (FLAGCDELOK +0) = 0' если нет открытой короткой позиции ' выставление короткой заявки SERVERDATE=GET_INFO_PARAM("TRADEDATE") SERVERTIME=GET_INFO_PARAM("SERVERTIME") DATETIME (SERVERDATE,SERVERTIME) TRID = CURTIME & ORDERCOUNT ACTION="NEW_ORDER" ORDER(0, LOT, "S", "M", TRID) FLAGCDELOK = 1 PREDFLAGSDELMAP1 = PREDFLAGSDELMAP1 +1 ORDERCOUNT=ORDERCOUNT+1 END IF FOR NR FROM 0 TO GET_NUMBER_OF("FUTURES_CLIENT_HOLDINGS") TAB = GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR) CHIST = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0 IF CHIST < 0 SERVERDATE=GET_INFO_PARAM("TRADEDATE") SERVERTIME=GET_INFO_PARAM("SERVERTIME") DATETIME (SERVERDATE,SERVERTIME) TRID = CURTIME & ORDERCOUNT FOR NRR FROM 0 TO GET_NUMBER_OF("STOP_ORDERS") STATA = GET_VALUE(GET_ITEM ("STOP_ORDERS", NRR), "STATUS") END FOR IF STATA != "ACTIVE" ACTION="NEW_STOP_ORDER" STOPORDERL(LPRICE, LPRICEL, LOT, "B", "L", TRID) ELSE BREAK END IF END IF END FOR END FUNC CURTIME=CURTIME+0 FOR NR FROM 0 TO GET_NUMBER_OF("FUTURES_CLIENT_HOLDINGS") TAB = GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR) CHIST = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0 IF GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0 != 0 IF (GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0) > 0 AND USL1 = 3 LOT = GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0 SERVERDATE=GET_INFO_PARAM("TRADEDATE") SERVERTIME=GET_INFO_PARAM("SERVERTIME") DATETIME (SERVERDATE,SERVERTIME) TRID = CURTIME & ORDERCOUNT ACTION="NEW_ORDER" ORDER(LPRICE, LOT, "S", "M", TRID) ACTION="KILL_STOP_ORDER" STOP_LOS("SPBFUT", INSTRUMENT) ORDERCOUNT=ORDERCOUNT+1 LOT=1 END IF IF (GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0) < 0 AND USL1 = 4 LOT = ABS (GET_VALUE(GET_ITEM ("FUTURES_CLIENT_HOLDINGS", NR), "TOTAL_NET") + 0) + 0 SERVERDATE=GET_INFO_PARAM("TRADEDATE") SERVERTIME=GET_INFO_PARAM("SERVERTIME") DATETIME (SERVERDATE,SERVERTIME) TRID = CURTIME & ORDERCOUNT ACTION="NEW_ORDER" ORDER(LPRICE, LOT, "B", "M", TRID) ACTION="KILL_STOP_ORDER" STOP_LOS("SPBFUT", INSTRUMENT) ORDERCOUNT=ORDERCOUNT+1 LOT=1 END IF BREAK ' прерываем цикл, т.к. все позиции уже закрыты END IF END FOR FUNC MOD (NUM,DEN) IF (0 + DEN = 0) RESULT = 0 ELSE CEL= FLOOR((NUM/DEN)) ' вычисляем частное без учёта остатка RESULT = NUM — (DEN*CEL)' вычисляем остаток END IF END FUNC FUNC ROUND (V,SCALE) RESULT=APPLY_SCALE(V,SCALE)' передаём в функцию число для округления и разрядность округления END FUNC CHETCHIKCIKLOV= CHETCHIKCIKLOV+0 IF CHETCHIKCIKLOV=0 CHETCHIKCIKLOVMAP=CREATE_COLLECTION() END IF CHETCHIKCIKLOVMAP=INSERT_COLLECTION_ITEM(CHETCHIKCIKLOVMAP,0 , OPENMAP1) CHETCHIKCIKLOVMAPTAB = GET_COLLECTION_COUNT (CHETCHIKCIKLOVMAP) CHETCHIKCIKLOVMAP1 = GET_COLLECTION_ITEM(CHETCHIKCIKLOVMAP,0) +0 CHETCHIKCIKLOVMAP2 = GET_COLLECTION_ITEM(CHETCHIKCIKLOVMAP,(0 +1))+0 IF CHETCHIKCIKLOVMAP1 != CHETCHIKCIKLOVMAP2 FLAGCDELOK = 0 END IF CHETCHIKCIKLOV = CHETCHIKCIKLOV + 1 END_PROGRAM PARAMETER SERVERDATE; PARAMETER_TITLE Дата; PARAMETER_DESCRIPTION Текущая дата; PARAMETER_TYPE STRING(10); END PARAMETER SERVERTIME; PARAMETER_TITLE Время; PARAMETER_DESCRIPTION Текущее время; PARAMETER_TYPE STRING(10); END PARAMETER INSTRUMENT; PARAMETER_TITLE Инструмент; PARAMETER_DESCRIPTION Торгуемый инструмент; PARAMETER_TYPE STRING(4); END
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
Добрый день,
Sergey . не совсем понял, что вы подразумеваете под полным кодом портфеля. Вы имеете в виду предоставить весь алгоритм скрипта?
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
Добрый день, прошу помочь разобраться в вопросе работы отладчика. В теме
https://forum.quik.ru/forum9/topic3269/ был поднят вопрос о том, как заставить алгоритм совершать только одну сделку на свечке и новую сделку совершать только при появлении новой свечи. Не уверен, что правильно понял вариант который был предложен в теме, но у меня получился примерно такой алгоритм
NEW_GLOBAL ("CHETCHIKCIKLOV",0)
NEW_GLOBAL ("FLAGCDELOK",0)
NEW_GLOBAL ("CHETCHIKCIKLOVMAP",0)
NEW_GLOBAL ("CHETCHIKCIKLOVMAP1",0)
NEW_GLOBAL ("CHETCHIKCIKLOVMAP2",0)
IF (USL1=1 AND (FLAGCDELOK +0 )= 0 AND CHETCHIKCIKLOV > 2)' USL1 принимает значение 1 когда имеются 2 подряд бычьи свечи
алгоритм входа в позицию
FLAGCDELOK = 1
END IF
IF CHETCHIKCIKLOV=0' цикл нужен для того, чтобы данные в CHETCHIKCIKLOVMAP не обнулялись при каждом проходе программы
CHETCHIKCIKLOVMAP=CREATE_COLLECTION()
END IF
CHETCHIKCIKLOVMAP=INSERT_COLLECTION_ITEM(CHETCHIKCIKLOVMAP,0 , OPENMAP1)' здесь OPENMAP1 это цена открытия предпоследней (последней завершенной) свечи
CHETCHIKCIKLOVMAPTAB = GET_COLLECTION_COUNT (CHETCHIKCIKLOVMAP)
CHETCHIKCIKLOVMAP1 = GET_COLLECTION_ITEM(CHETCHIKCIKLOVMAP,0) +0
CHETCHIKCIKLOVMAP2 = GET_COLLECTION_ITEM(CHETCHIKCIKLOVMAP,(0 +1))+0' здесь создается коллекция, куда по мере работы всего алгоритма записываются цены открытия последней завершенной свечи на момент времени исполнения данных команд, как правило алгоритм отрабатывается гораздо быстрее, чем время жизни одной 15-минутной свечки, и поэтому чаще всего будет, что CHETCHIKCIKLOVMAP1 =CHETCHIKCIKLOVMAP2. Но в момент появления новой свечи появляется новое значение OPENMAP1 и следовательно алгоритм может их сравнить и понять, что появилась новая свеча
IF CHETCHIKCIKLOVMAP1 != CHETCHIKCIKLOVMAP2
FLAGCDELOK = 0
END IF' собственно, здесь это проверятся, FLAGCDELOK = 0 давая возможность циклу IF совершать новую сделку
CHETCHIKCIKLOV = CHETCHIKCIKLOV + 1' увеличивается счетчик количества проходов всей программы в течении дня, условие CHETCHIKCIKLOV > 2 необходимо для того, чтобы в CHETCHIKCIKLOVMAP гарантировано попали минимум 2 значения для их сравнения
И вот в CHETCHIKCIKLOV проблема. Дело в том, что при ручном отрабатывание всей программы в режиме отладчика все идет хорошо, CHETCHIKCIKLOV, как ему и положено увеличивается с каждым проходом на 1, достигая 3 исполняется условие входа. Но работая в автономном режиме ничего не происходит, CHETCHIKCIKLOV = 0 даже после 20 минут работы программы, хотя должен быть равен, например 50, включая снова режим отладчика все глобальные переменные равны 0, при этом если убрать условие CHETCHIKCIKLOV > 2 все работает. Избавиться совсем от CHETCHIKCIKLOV не получиться, поскольку, если создавать CHETCHIKCIKLOVMAP=CREATE_COLLECTION() вне цикла IF CHETCHIKCIKLOV=0, при каждом проходе программы CHETCHIKCIKLOVMAP будет создаваться снова, удаляя свой пред. вариант, вместе с всего одним значением CHETCHIKCIKLOVMAP1, а CHETCHIKCIKLOVMAP2 вообще никогда не успеет заполняться, и, следовательно, IF CHETCHIKCIKLOVMAP1 != CHETCHIKCIKLOVMAP2 будет выполняться ВСЕГДА, в независимости от кол-во сделок на свече. Прошу помочь мне разобраться, почему так происходит, возможно я не правильно понимаю сам процессы отработки скрипта в qpile
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
Sergey Gorokhov , согласен, но как я уже сказал время прогонки всего алгоритма много меньше жизни одной свечи, например 15 минутки. Да, в первые секунды появления новой свечи, он ( алгоритм) увидит новый индекс, который логично не равен индекс -1, все, классно, если флага совершения сделки нет или равен 0, он ее совершит. Секунд через 45 он снова прогонит весь алгоритм, в который переменная флага совершения сделки, которая стоит в начале каждого шага цикла for, будет снова ровна 0 и новый индекс все также не равен индекс -1. Т.е. алгоритм не будет знать какую пар свечей он сравнивает: 2 раза пару (index-1;index) или по разу две пары (index-1;index) и (index;index+1), потому что разница между ними одно и тоже значение. Удобней здесь, на мой взгляд, сравнивать не индексы, а цены открытия свечи, т. е. open(index) - open(index-1) с большой долей вероятности будет отличаться от open(index+1) - open(index), и, соответсвенно, даже если 20 раз прогнать алгоритм по свечи со значением open(index) - open(index-1), а на 21 появляется pen(index+1) - open(index) мы будем знать, что именно сейчас появилась новая свеча. Но для этого мы должны знать, как хранить, именно, open(index) - open(index-1). Т. е. задача сводиться к тому чтобы задать некие 2 переменные: одна из которых будет отслеживать текущую разницу open, а вторая хранить контрольную и массив примет след. вид
прогонка 1 open(index) - open(index-1) ; open(index) - open(index-1)
прогонка 2 open(index) - open(index-1) ; open(index) - open(index-1)
прогонка 3 open(index) - open(index-1) ; pen(index+1) - open(index) именно здесь появляется новая свеча, и текущая разница не равна контрольной
прогонка 4 open(index+1) - open(index) ; pen(index+1) - open(index) до
прогонка n open(index+1) - open(index) ; pen(index+2) - open(index+1)
но вот как создать переменную с контрольной разницей не понятно , чтобы в момент появления свечи, алгоритм все еще ее помнил, но в тоже время, тупо не брал ее из предыдущих значений массива. Видимо контрольная переменная должна запаздывать на 1 шаг от текущий, но не в рамка цикла for, а в рамках одной прогонки всего алгоритма
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
Sergey Gorokhov , добрый вечер. Я совсем недавно в алгоритмизации на Quik'ке., поэтому могут задать глупый вопрос, но все-таки. То что вы предлагаете в целом понятно, однако не ясно как хранить пред. значение t.[index]. Т.е. допустим сейчас t.[index] равен некому n. Через несколько минут появляется новая свеча и t.[index] становится n+1. Не понятно где и как хранить предыдущее значение индекса n, чтобы их сравнивать и понять, что они отличаются? С другой стороны точно также текущий индекс n текущей свечи будет отличаться от свечи n-1, и следовательно при прогонке всего цикла сохранения свечей в коллекцию относительно пред. свечи текущая свеча будет обозначаться, как новая, (а ведь за время жизни свечи алгоритм может отработаться несколько раз и скорее всего алгоритм будет считать ее, как только что появившееся) и будет сбрасывать флаг совершения сделки по данной свечи снова в 0
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
Добрый день, друзья. У меня возникла проблема с количеством исполнения сделок на одну свечку. У меня есть алгоритм для сохранения свечей в коллекцию. Однако у него одна особенность, а именно он сохраняет коллекцию только завершенные свечи, т.е. в коллекцию идут предыдущая свеча и несколько перед ней, а текущая незавершенная не учитывается. Сигнал на вход 2 последовательные свечи одного цвета с неким коротким стопом. Однако если данный вход будет "ложным" и сделку выбьет по стопу, алгоритм тут же войдет снова по рыночной цене, причем стоп может стоять выше покупки, если эта сделка, например, на покупку, а текущая свеча медвежья и имеет более широкий диапазон, чем предыдущая бычья. Выходом может служить знание алгоритма, что на одну свечу можно открывать только одну сделку и если, сделка стопится, то ждать следующую свечу. И вот здесь я никак не могу сообразить. Можно все таки учитывать текущую незавершенную свечку в коллекции, как самую первую с номером 0 например и уже известной ценой open. И как только данной значение open переместится на след. позицию в коллекции с номером 1, то все можно совершать еще одну сделку. И вот как это реализовать не понятно, прошу помощи
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
не могу сообразить как вставить картинку с отладчиком, чтоб нагляднее было
Пользователь
Сообщений: 10
Регистрация: 21.07.2017
Добрый день, использую в своем алгоритме индикатор АО. Суть такова: создается переменная USL3 =7 далее получаю значения АО [img]data:image/png;base64,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H/DewPvnzKl7fIYHdUlgLQiEWGNiCjREPKHXTMsnxFxl7YXIh5jD4YfvXA47moZktekxbnp8Oh581ugQ84Idm33mg20yXvurd+XTnzwnH3/kROt4/uDP3pZfeOpMoXfh/L7oiwcJkEAzAt/+07+Vzz7zsWbClCKBNSUQYo3JxreiiT5EPBoM18xoupSOkEAlgTZrdIh5IaZ5Ltgm4xOPnpJv/8mP5MrNu3L7Ti6jdCT6q4X6kSh9+geOJJnl93YH8sCpE+UF0uiaXL/2thwOM/n+lUP5f2/dgQpTEiCBGgIPn9mTz3zytMjomty4XiPEYhLYAAKfePS09xoTEwaumTH1Bn0hgdUQaLtGb9o8F2yT8cDpU/KrP3/Ko5dmf4k9d07k6b/vYYqqJEACJEACG0cg1BoTAxiumTH0An0ggfgIbNI8F2ST8eXf/058vUSPSIAESIAESCBCAlwzI+wUukQCJBCcQLHJyGefYGrdwHP//LHWOlQgARIgARIggW0kwDVzG3udMZPAFhHQPcVkYxHvT6FuUX8wVBIgARIgARIgARIgARLYJALcZGxSbzIWEiABEiABEiABEiABEoiAADcZEXQCXSABEiABEiABEiABEiCBTSLATcYm9SZjIQESIAESIAESIAESIIEICHCTEUEn0AUSIAESIAESIAESIAES2CQC3GRsUm8yFhIgARIgARIgARIgARKIgAA3GRF0Al0gARIgARIgARIgARIggU0iwE3GJvUmYyEBEiABEiABEiABEiCBCAg03GR4/FpfBEHSBRIgARIgARI4HgKJJFwyjwc1WyEBEuiFQNM5rtEmQ429/eMrvQTCRkmABEiABEhgXQjoepkkO+viLv0kARIggVYE3rnyvog0+0tKo03G3z13TrIslbd//F4rRyhMAiRAAiRAAttC4J0r70me51wvt6XDGScJbBkBnePSdCi6L2hy7DYRUplHzp+Xt955V956552mKpQjARIgARIggS0hoB+Tyou1UgPmerkl3c4wSWBrCMzPcU3CbrzJUGOPnG+2c2nSMGVIgARIgARIYFMJcL3c1J5lXCRAAk0JNPq4VFNjlCMBEiABEiABEiABEiABEiABbjI4BkiABEiABEiABEiABEiABIISKDYZSR7UJo2RAAmQAAmQAAmQAAmQAAlsGwHdU0w2FryTsW2dz3hJgARI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[/img] в данном конкретном случаи АО2 = -4.92 АО3 = -5.18 АО4 = -5.07 далее создаются такие условия USL3 =7 IF AAO2 < AAO3 < AAO4 т.е сторого по возрастанию USL3 = 1 'ELSE 'USL3 = 3 END IF IF (AAO2 < AAO3 < AAO4) AND ((AO2 < 0) AND (AO3 < 0) AND (AO4 < 0)) строго по убыванию USL3 = 2 'ELSE 'USL3 = 3 END IF т.е. если условия не соблюдаются, то должно остаться USL3 =7, как видно условия не соблюдаются, но почему то USL3 =2. Почему так? Помогите понять в чем ошибка, а то уже глаз видимо замылился Интересно еще и то, что если убрать комментарий из 'ELSE 'USL3 = 3, то когда условие все-таки соблюдается, то через отладку видно, что сначала USL3 принимает значение исходя из условия, а на следующем шаге становиться USL3 =3, т. е. ELSE не пропускается, а исполняется. Вообщем мне совсем понятно, что происходит