Russu_S
Newbie
Сообщений: 1
|
|
« : 08.08.2016, 19:56:19 » |
|
Друзья помогите пожалуйста, нужен скрипт, к авто выставлению СТОПЛОСС заданному в скрипте в пунктах, нашел в интернете вот такое, не могу понять что он делает отсекает не пойми как, не могу понять, есть что-то более нормальное для ФЮЧЕРСОВ..
ВОТ ЧТО НАШЕЛ И НЕ МОГУ ПОНЯТЬ..
#line 0 solid blue
extern Stop=5; extern Take=5; extern "string" s="В market ставим 1, если торгуем акции, и 2, если фьючерсы"; extern market=1;
var DeleteActive =1;
static pos; var security; static predLast=0; static predPos=0; static enterPrice=0; static closeHalf=0;
function setBuyTrailing(var size,var price) { var stop = new_object("hash"); stop["operation"] = OP_BUY; stop["tp_activationprice"] = price; stop["tp_quantity"] = size; stop["tp_correction"] = "0%"; trade_action::transactMultiple(stop); } function setSellTrailing(var size,var price) { var stop = new_object("hash"); stop["operation"] = OP_SELL; stop["tp_activationprice"] = price; stop["tp_quantity"] = size; stop["tp_correction"] = "0%"; trade_action::transactMultiple(stop); }
function setBuyStop(var size,var price) { var stop = new_object("hash"); stop["operation"] = OP_BUY; stop["sl_activationprice"] = price; stop["sl_orderprice"]=price; stop["sl_quantity"] = size; stop["sl_correction"] = "0%"; stop["usecredit"] = true; trade_action::transactMultiple(stop); } function setSellStop(var size,var price) { var stop = new_object("hash"); stop["operation"] = OP_SELL; stop["sl_activationprice"] = price; stop["sl_orderprice"]=price; stop["sl_quantity"] = size; stop["sl_correction"] = "0%"; stop["usecredit"] = true; trade_action::transactMultiple(stop); }
function setBuyStopTrailing(var size, var offset,var price,var start,var stop,var slip) { var stopLevel= price+stop; var stopLevelOrder= price+stop+slip; var guardSpread=slip+0;
var stop = new_object("hash"); stop["operation"] = OP_BUY; stop["tp_activationprice"] =price-start; stop["tp_quantity"] = size; stop["tp_correction"] = offset; stop["tp_guardspread"]=guardSpread; stop["sl_activationprice"] = stopLevel; //stop["sl_orderprice"] = stopLevelOrder; stop["sl_quantity"] = size; stop["usecredit"] = true; trade_action::transactMultiple(stop); }
function setSellStopTrailing(var size, var offset,var price,var start,var stop,var slip) { var guardSpread=slip+0; var stopLevel= price-stop; var stopLevelOrder= price-stop-slip;
var stop = new_object("hash"); stop["operation"] = OP_SELL; stop["tp_activationprice"] = price+start; stop["tp_quantity"] = size; stop["tp_correction"] = offset; stop["tp_guardspread"]=guardSpread; stop["sl_activationprice"] = stopLevel; // stop["sl_orderprice"] = stopLevelOrder; stop["sl_quantity"] = size; trade_action::transactMultiple(stop); }
function Buy(var message, var orderSize) {
signal::alert(message); var order = new_object("hash"); order["quantity"] =orderSize; order["operation"] = OP_BUY; trade_action::transact(order); }
function Sell(var message,var orderSize) { signal::alert(message); var order = new_object("hash"); order["quantity"] =orderSize; order["operation"] = OP_SELL; trade_action::transact(order); }
function DeleteAllStopOrders() { signal::outputMultiple("Удаляем все стопы"); var arr= getActiveStopOrderIDs() ; if (arr.size()!=0) { var i=0; while (i < arr.size()) { trade_action::cancelStopOrder(arr); i=i+1; } } }
function init() { setTimer("f", 1000, TIMER_PERIODICALLY );
pos = new_object("hash"); security = new_object("hash"); var curPos=0; if (market==1) { curPos=getSecBalance(); } if (market==2) { requestFORTSPositions(getClient()); curPos=pos["totalnet"]; if (pos.size()==1) { curPos=0; } } predPos=curPos;
DeleteAllStopOrders();
}
function onEnvEvent(var eventname) { if (eventname == "CLIENT_HOLDINGS") { var info=getSecInfo(); pos = getFORTSPosition(getClient(), info["secid"]); } } function f() {
if (isHistoryCalculated()) { var curPos=0; if (market==1) { curPos=getSecBalance(); } if (market==2) { requestFORTSPositions(getClient()); curPos=pos["totalnet"]; if (pos.size()==1) { curPos=0; } } if (curPos==0&&predPos!=0) { signal::outputMultiple("Позиция закрыта. "); if (DeleteActive==1) { DeleteAllStopOrders(); } }
if (abs(curPos)!=abs(predPos)&&curPos!=0) { DeleteAllStopOrders(); signal::outputMultiple("Позиция открыта.Цена "+enterPrice); if (curPos>0&&enterPrice!=0) { signal::outputMultiple("Ставим стоп и тейк на продажу"); setSellStopTrailing(curPos,0,enterPrice,Take,Stop,0); } if (curPos<0&&enterPrice!=0) { signal::outputMultiple("Ставим стоп и тейк на покупку"); setBuyStopTrailing(-curPos,0,enterPrice,Take,Stop,0); }
}
predPos=curPos; } }
function onClientTrade(var id) {
var trade = getTrade(id); enterPrice=trade["price"]+0;
}
function onATFOrderErr(var str) { signal::outputMultiple(str); }
|