Блог им. bitAndrey

на память стоп

Запускаем, будет окошко. Нажимаем куда надо. Не мучаемся больше с F2 и F6.

TurboStop (автостоп)



Выставил лотность удвоением от 1 до 32. Можно маргингейлить, можно усреднять, можно пирамидить, можно входить частями — это уж как вам надо. Расписал до 32 контрактов — это по ришке, кажется, лям — для почти всех достаточно.

ВНИМАНИЕ!!!
Для запуска нужно зайти в график торгуемого инструмента, и в цене, на вкладке «Дополнительно», проставить идентификатор «MYSTOP_PRICE».

TurboStop (автостоп)


В начале скрипта параметры. Комментарии там добавил, хитростей нет.

Всё бесплатно. Качайте, правьте, используйте целиком или частями для своих скриптов.

Ну, не совсем бесплатно. Интереса ради проведем эксперимент: если у кого возникнет жгучее желание оплатить столь скромную работу, пишите в ЛС, дам номер карты. Самому интересно, поделится ли кто-нибудь хоть стольником за, как мне кажется, полезный скрипт. Об этом потом тоже напишу. Собранные деньги на благотворительность не пойдут, а будут пропиты :)

Ставьте стопы и не сливайте! Курсов не веду, телеграфа нет, в ДУ не беру, всё пофигу.

is_run = true
CLIENT_CODE = "СЮДА СВОЁ"
SEC_CODE="RIU0"
CLASS_CODE="SPBFUT"
ACCOUNT_CODE="СЮДА СВОЁ"
Otstup=20 -- отступ для выставления лимитки
StopLoss=150 -- размер стоплосс

function OnInit()
	t_id = AllocTable();
	AddColumn(t_id, 0, "BUY", true, QTABLE_STRING_TYPE, 12);
	AddColumn(t_id, 1, "SELL", true, QTABLE_STRING_TYPE, 12);
    t = CreateWindow(t_id);
	SetWindowCaption(t_id, "Turbo Stop");
	SetWindowPos(t_id, 400, 300, 220, 160);

	InsertRow(t_id,1)
	InsertRow(t_id,2)
	InsertRow(t_id,3)
	InsertRow(t_id,4)
	InsertRow(t_id,5)
	InsertRow(t_id,6)
	
	SetCell(t_id,1,0,'Buy 1')
	SetCell(t_id,1,1,'Sell 1')
	SetCell(t_id,2,0,'Buy 2')
	SetCell(t_id,2,1,'Sell 2')
	SetCell(t_id,3,0,'Buy 4')
	SetCell(t_id,3,1,'Sell 4')
	SetCell(t_id,4,0,'Buy 8')
	SetCell(t_id,4,1,'Sell 8')
	SetCell(t_id,5,0,'Buy 16')
	SetCell(t_id,5,1,'Sell 16')
	SetCell(t_id,6,0,'Buy 32')
	SetCell(t_id,6,1,'Sell 32')
	
	SetTableNotificationCallback(t_id, OnTableEvent)
end

-- Функция обрабатывает события в таблице
function OnTableEvent(t_id, msg, par1, par2)
    -- Если был клик левой кнопкой
	if msg == QTABLE_LBUTTONDBLCLK then
		if par1 == 1 and par2 == 0 then DoFire(true,1) end
		if par1 == 1 and par2 == 1 then DoFire(false,1) end
		if par1 == 2 and par2 == 0 then DoFire(true,2) end
		if par1 == 2 and par2 == 1 then DoFire(false,2) end
		if par1 == 3 and par2 == 0 then DoFire(true,4) end
		if par1 == 3 and par2 == 1 then DoFire(false,4) end
		if par1 == 4 and par2 == 0 then DoFire(true,8) end
		if par1 == 4 and par2 == 1 then DoFire(false,8) end
		if par1 == 5 and par2 == 0 then DoFire(true,16) end
		if par1 == 5 and par2 == 1 then DoFire(false,16) end
		if par1 == 6 and par2 == 0 then DoFire(true,32) end
		if par1 == 6 and par2 == 1 then DoFire(false,32) end
	end
end

function GetLastPrice(TickerName)
	local NL=getNumCandles("MYSTOP_PRICE")
	tL, nL, lL = getCandlesByIndex ("MYSTOP_PRICE", 0, NL-1, 1) -- last свеча
	local aCurrentPrice=tL[0].close -- получили текущую цену (ЦПС)
	return aCurrentPrice
end

function DoFire(BuyFlag, LotSize)
	if BuyFlag then
		Operat="B"
		StopOperat="S"
		Condi=4
		Revers=1
	else
		Operat="S"
		StopOperat="B"
		Condi=5
		Revers=-1
	end
	
	t = {
			["CLASSCODE"]=CLASS_CODE,
			["SECCODE"]=SEC_CODE,
			["ACTION"]="NEW_ORDER", -- новая сделка.
			["ACCOUNT"]=ACCOUNT_CODE,
			["CLIENT_CODE"]=CLIENT_CODE,
			["TYPE"]="L",
			["OPERATION"]=Operat, -- направление сделки, "B" или "S"
			["QUANTITY"]=tostring(LotSize), -- объем, (акции - в лотах, а не штуках).
			["PRICE"]=string.format("%i", GetLastPrice(SEC_CODE)-Otstup*Revers), -- цену лимитки ставим для мгновенного исполнения.
			["TRANS_ID"]=tostring(LotSize)
		}
	res1 = sendTransaction(t) -- ... передаем сделку по рынку.
	message("ZAYAVKA="..res1)
	if res1=="" then
		message("OK. Need STOP")
		t2 = {
                       ['ACTION'] = "NEW_STOP_ORDER", 
                       ['PRICE'] = string.format("%i", GetLastPrice(SEC_CODE)-(Otstup+StopLoss+100)*Revers), 
                       ['EXPIRY_DATE'] = "TODAY",
                       ['STOPPRICE'] = string.format("%i", GetLastPrice(SEC_CODE)-(Otstup+StopLoss)*Revers),
                       ['STOP_ORDER_KIND'] = "SIMPLE_STOP_ORDER",
                       ['TRANS_ID'] = "11",
                       ['CLASSCODE'] = CLASS_CODE,
                       ['SECCODE'] = SEC_CODE,
                       ['ACCOUNT'] = ACCOUNT_CODE,
                       ['CLIENT_CODE'] = CLIENT_CODE,
                       ['TYPE'] = "L",
                       ['OPERATION'] = StopOperat,
                       ['CONDITION'] = Condi, -- Направленность стоп-цены. Возможные значения: «4» - меньше или равно, «5» – больше или равно
                       ['QUANTITY'] = tostring(LotSize)
        }
		res2 = sendTransaction(t2)
		message("STOP="..res2)
	end
end

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

function OnStop()
	DestroyTable(t_id)
	is_run = false
	return 1000
end
569 | ★4
3 комментария
второй аккаунт  Turbo Pascal ?
avatar
Vadim S, мания преследования? Какая вам разница?
Полезно — используй, не нужно — пройди мимо.
Есть критика или пожелания — выкладывай.
Ни то, ни другое, ни третье — иди… Не скажу куда.

Да, этот коммент с третьего акка Турбопаскаля. )))
avatar

VladMih,  потому что это плагиат. 

smart-lab.ru/blog/640630.php

avatar

Читайте на SMART-LAB:
Фото
Долгосрочное инвестирование умерло. В этот раз - без "но". Хороших новостей не будет
Увеличение капитала посредством инвестирования в доли компаний всегда основывалось на двух тезисах (1) компания сможет на длительном...
Фото
Как на самом деле используют ИИ в алготрейдинге
Если первая часть моего репортажа по конференции алготрейдеров в Москве была об инфраструктуре, то вторая часть будет про искусственный...
«Профи» из группы Займер окупил первый приобретенный портфель
Делимся новостями коллекторского агентства из группы Займер. КА «Профи» вышло на точку окупаемости по первому приобретенному портфелю. ⚡️ Для...
Фото
Ростелеком. МСФО за Q4 2025г. Всё неплохо… но всё равно печально…
Компания Ростелеком опубликовала финансовые результаты за 4 квартал 2025г.: 👉Выручка — 270,5 млрд руб. (+15,6% г/г) 👉Операционные...

теги блога Андрей

....все тэги



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