Блог им. krivozub

Робот для автоматического выставления стопа

В своё время активно пользовался. Робот для выставления стопа и тейк профита. 
Как только видит открытые позиции. Выставляет стоп. Может кому надо. Пользуйтесь

Нужно заполнить только
cAccount=«7600lll» ВАШ СЧЕТ
cClassName=«SPBFUT» ЧТО ТОРГУЕТЕ
cProfit=7500 ТЕЙК ПРОФИТ
cProfShift=100 ОТСТУП ОТ ЦЕНЫ

cProfSpr=500 СПРЕД
cStopLoss=400 ЗНАЧЕНИЕ СТОПА
cSLSpr=500 СПРЕД
Файл:

PORTFOLIO_EX VFAutoStop;
DESCRIPTION VFAutoStop;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;

PROGRAM

New_Global(«CurLogLine»,1)
New_Global(«gLastPos»,CREATE_MAP ()) 'коллекция крайних позиций

ClassesList = get_classes_list()

cAccount=«7600lll»
cClassName=«SPBFUT»
cProfit=7500
cProfShift=100
cProfSpr=500
cStopLoss=400
cSLSpr=500

cLogFile=«C:\VFAutoStop.log»

FUNC WriteLog (pTitle, pMessage)
writeln(cLogFile, get_value(GET_DATETIME(), «Datetime») & " " & pTitle & " > " & pMessage)
END FUNC

func SendTrans(pTransParams)
trans_result = SEND_TRANSACTION (30, pTransParams)
'LogData(pTransParams,trans_result)
if get_value (trans_result, «RESULT»)+0.0=0 then
' WriteLog(pTransParams,get_value (trans_result, «RESULT_EX») & "|" & get_value (trans_result, «DESCRIPTION»))
WriteLog(pTransParams,trans_result)
end if
end func

Func ActiveStopOrder(pSecCode)
nOrd=Get_number_of(«STOP_ORDERS»)
result=CREATE_MAP ()
for iOrd from 1 to nOrd
asoOrder = get_item(«STOP_ORDERS», iOrd)
if get_value(asoOrder, «STATUS»)=«ACTIVE» and get_value(asoOrder, «SECCODE»)=pSecCode
result = asoOrder
end if
end for
End Func

FUNC SendStopOrderTPSL (pSecCode, pClassCode, pOper, pProfPrice, pProfOffs, pProfSprm, pStopPrice,pPrice,pSize)
trans_params = ""
trans_params = set_value (trans_params, «TRANS_ID», 1)
trans_params = set_value (trans_params, «ACTION», «NEW_STOP_ORDER»)
trans_params = set_value (trans_params, «STOP_ORDER_KIND», «TAKE_PROFIT_AND_STOP_LIMIT_ORDER»)
trans_params = set_value (trans_params, «OFFSET_UNITS», «PRICE_UNITS»)
trans_params = set_value (trans_params, «SPREAD_UNITS», «PRICE_UNITS»)
trans_params = set_value (trans_params, «CLASSCODE», pClassCode)
trans_params = set_value (trans_params, «SECCODE», pSecCode)
trans_params = set_value (trans_params, «ACCOUNT», cAccount)
trans_params = set_value (trans_params, «OPERATION», pOper)
trans_params = set_value (trans_params, «STOPPRICE», pProfPrice)
trans_params = set_value (trans_params, «STOPPRICE2», pStopPrice)
trans_params = set_value (trans_params, «PRICE», pPrice)
trans_params = set_value (trans_params, «OFFSET», pProfOffs)
trans_params = set_value (trans_params, «SPREAD», pProfSprm)
trans_params = set_value (trans_params, «QUANTITY», pSize)
trans_params = set_value (trans_params, «EXPIRY_DATE», «GTC»)
SendTrans(trans_params)
end func

Func LogData(Prm1,Prm2)
output = CREATE_MAP ()
output = SET_VALUE (output, «Param0», GET_INFO_PARAM(«SERVERTIME»))
'GET_VALUE(GET_DATETIME(), «DATETIME»)
output = SET_VALUE (output, «Param1», Prm1)
output = SET_VALUE (output, «Param2», Prm2)
ADD_ITEM (CurLogLine, output)
CurLogLine=CurLogLine+1
End Func

nLimPos=GET_NUMBER_OF(«FUTURES_CLIENT_HOLDINGS»)

FOR iLP FROM 1 to nLimPos
LimPos= GET_ITEM («FUTURES_CLIENT_HOLDINGS», iLP)
nTotNet=GET_VALUE(LimPos,«TOTAL_NET»)+0
cSecCode=GET_VALUE(LimPos,«SECCODE»)
if nTotNet<>0 then ' есть открытые позиции
ASO=ActiveStopOrder(cSecCode)
cLastPrice=GET_PARAM(ClassesList, cSecCode, «LAST»)+0
if get_value(ASO, «STATUS»)<>«ACTIVE» ' есть стоп-заявки?
if get_value(gLastPos,cSecCode) & "!" <>nTotNet & "!"
nDir=nTotNet/abs(nTotNet)
if nDir>0
cOPer=«S»
else
cOper=«B»
end if
nProfit=cLastPrice+nDir*cProfit
nStop=cLastPrice-nDir*cStopLoss
SendStopOrderTPSL(cSecCode, cClassName, cOper, nProfit, cProfShift, cProfSpr, nStop, cLastPrice-nDir*(cStopLoss+cSLSpr), abs(nTotNet))
LogData(nTotNet,nProfit & "/" & nStop)
gLastPos=set_value(gLastPos,cSecCode,nTotNet)
end if
end if
else
gLastPos=set_value(gLastPos,cSecCode,nTotNet)
end if
end for

END_PROGRAM

PARAMETER Param0;
PARAMETER_TITLE Время;
PARAMETER_DESCRIPTION Время;
PARAMETER_TYPE STRING (200);
END

PARAMETER Param1;
PARAMETER_TITLE Кол-во;
PARAMETER_DESCRIPTION Кол-во;
PARAMETER_TYPE STRING (200);
END

PARAMETER Param2;
PARAMETER_TITLE Цена;
PARAMETER_DESCRIPTION Цена;
PARAMETER_TYPE STRING (200);
END

END_PORTFOLIO_EX





Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
| ★20
18 комментариев
kirilles, Это старый добрый QPILE.
avatar
Я добавлял QPile. 

 А еще если в квике РУКА нажата то можно двигать СТОП или Тейк профит вниз или вверх
надо же, моими скриптами до сих пор пользуюутся!
хоть бы кто 100 рублей задонатил :)
avatar
vfreeman, а по какому принципу выставляется стоп?
% от депо?
avatar
Да я его в лохматые годы нашел на смарт лабе. СПАСИБО тебе большое. Работал без сбоев
Иван Кривозуб,  величина стопа в пунктах?
как тогда выставит для Сишки и Ришки если у них совершенно разные величины в пунктах?
avatar
У ри свои пункты у Си свои. Нужно пробовать.
Там инструмент нельзя выбрать. робот выставляет стоп на любую открытую позицию, а настройки стопов и профитов одинаковые. То есть можно торговать только одним инструментом. А если откроете другой, а робот забудете выключить, то ждите сюрпризов
avatar
Иван Собакин, все верно за ним следить нужно.
Иван Кривозуб, хорошо бы допилить, что бы в % выставлял, тогда и следить не надо)
А автостопов на 1 инструмент куча по сети и на луа
avatar
Tema, Я раньше пользовался. Сейчас вообще торгую без стопов. Стопы для моего стиля торговли не подходят. 
kirilles, Ctrl-F11
avatar
Маркидоновой на почту скиньте
avatar
У kbrobot на сайте есть автостоп, отлаженный годами. Его достаточно.
avatar

Читайте на SMART-LAB:
Фото
Денис Баранов рассказал на ПМЭФ о роли ИИ в кибербезе и о технологическом лидерстве России
Все это — в интервью каналу «Россия 24». Смотрите его в прикрепленном видео (или на платформе « Смотрим », если скорость загрузки низкая) , а...
Полюс сохранит капзатраты выше $2 млрд
Полюс подтвердил план капитальных затрат на 2026 год на уровне $2,2–2,5 млрд. Для компании это не новая цифра, но важное подтверждение того, что...
Фото
ЦИАН. Отчет МСФО Q1 26г. Такой рентабельности никогда не было
Вышли финансовые результаты по МСФО за Q1 2026г. от компании ЦИАН: 👉Выручка — 3,90 млрд руб. (+17,9% г/г) 👉Операционные расходы — 2,72...
Фото
Ростелеком. Повлияла ли публикация новой стратегии до 2030г. на целевую цену и на рейтинг компании?
Ростелеком недавно презентовала стратегию развития компании в период с 26-30гг., но перед тем как её рассмотреть подробно, я хотел бы...

теги блога Иван Кривозуб

....все тэги



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