Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
24.01.2025, 05:47:55
Начало Помощь Поиск Войти Регистрация
Новости: ООО «Скрин маркет системз», правообладатель программы «Система брокерского обслуживания «TRANSAQ» официально заявляет, что не ведет никакой деятельности в мессенджерах или социальных сетях. 
Подробности на нашем сайте  WWW.TRANSAQ.RU.

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Скрипт СТОПЛОСС « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Скрипт СТОПЛОСС  (Прочитано 4289 раз)
Russu_S
Newbie
*
Сообщений: 1


Просмотр профиля Email
« : 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);
}



Записан
micstura
Full Member
***
Сообщений: 104


Просмотр профиля Email
« Ответ #1 : 27.12.2016, 15:17:48 »

Рабочий скрипт поменяйте строчку function onATFOrderErr(var str) на   function onOrderErr(var str)
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Скрипт СТОПЛОСС « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!