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

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


Просмотр профиля Email
« Ответ #15 : 05.03.2014, 13:56:00 »

Попробую подробно писать что и как происходит с позициями на фортсе:
Это асинхронные методы,  и "обычный" подход получения позиций тут не прокатит
Допустим есть у нас такой код

static FORTSPos;

function onCalc()
{
       requestFORTSPositions(getClient());
       curPos=FORTSPos["totalnet"];
}

function onEnvEvent(var eventname)
{
   
        if (eventname == "CLIENT_HOLDINGS")
        {
         var info=getSecInfo();
         FORTSPos=  getFORTSPosition(getClient(), info["secid"]);
         }
   
}

Вот табличка того, что содержит переменная FORTSPos в различные моменты времени

Момент времени             Содержание переменной  FORTSPos

Первый вызов onCalc       ничего - переменная вообще еще не инициализирована, но отправлен запрос на сервер
Второй вызов onCalc       ничего - пока не пришел ответ от сервера - в этой переменной ничегошеньки нет
Третий....
Четвертый...
Пятый....
onEnvEvent                      Текущие позиции клиента - вот только сейчас пришел ответ от сервера от первого вызова в onCalc
onEnvEvent                      Текущие позиции клиента - второй вызов  onCalc
onEnvEvent                      Текущие позиции клиента - третий вызов  onCalc
onEnvEvent                      Текущие позиции клиента - четвертый вызов  onCalc
onEnvEvent                      Текущие позиции клиента - пятый вызов  onCalc
Шестой вызов onCalc       Текущие позиции клиента
Седьмой...
Восьмой...
Произошла сделка           Старые позиции клиента, без учета последней сделки
Девятый вызов onCalc       Старые позиции клиента, без учета последней сделки, но отправлен запрос на сервер
Десятый вызов onCalc       Старые позиции клиенты, пока не пришел ответ от сервера
Одиннадцатый...
Двенадцатый...
Тринадцатый...
Произошла еще сделка           Старые позиции клиента, без учета последних ДВУХ !!! сделок
onEnvEvent                      Старые позиции клиента, с учетом первой сделки, но без учета второй
Записан
Чеширский
Newbie
*
Сообщений: 29


Просмотр профиля Email
« Ответ #16 : 05.03.2014, 14:14:31 »

Теперь о том, что с этим цирком делать


static FORTSPos;
static IsAsynhRequest;
static EpmtyPosConst;


function getFortsPostion()
{
   if(IsAsynhRequest == true)
  {
     return EpmtyPosConst;
  }
  if(FORTSPos == EpmtyPosConst)
 {
     IsAsynhRequest = true;
     requestFORTSPositions(getClient());
      return EpmtyPosConst;
 }
 return FORTSPos["totalnet"];
}

function onCalc()
{
       curPos= getFortsPostion();
       if(curPos == EpmtyPosConst)
      {return;}
}

function onEnvEvent(var eventname)
{
   
        if (eventname == "CLIENT_HOLDINGS")
        {
         var info=getSecInfo();
         FORTSPos=  getFORTSPosition(getClient(), info["secid"]);
         IsAsynhRequest = false;
         }
   
}

function init()
{
     EpmtyPosConst = "НИЧЕГОШЕНЬКИ НЕТ";
    IsAsynhRequest = true;
     requestFORTSPositions(getClient());

}

function onTrade(var tradeID)
{
    IsAsynhRequest = true;
     requestFORTSPositions(getClient());

}
« Последнее редактирование: 05.03.2014, 14:17:44 от Чеширский » Записан
Чеширский
Newbie
*
Сообщений: 29


Просмотр профиля Email
« Ответ #17 : 05.03.2014, 14:16:17 »

Получается так. что пока мы не убедились, что у нас есть актуальные позиции - никакой обработки дальнейших действий, и то, если пройдут сразу несколько сделок, может оказаться так, что между ними onCalc проскочит, и в у нас будут не актуальные данные. Так что придется еще и тек заявки анализировать, что бы понять, все ли количество по заявке мы в сделках получили, или еще сделок ожидать
« Последнее редактирование: 05.03.2014, 14:20:38 от Чеширский » Записан
Чеширский
Newbie
*
Сообщений: 29


Просмотр профиля Email
« Ответ #18 : 05.03.2014, 14:40:49 »

А еще надо учитывать тот ужас, когда у нас связь пропадает, а потом снова восстанавливается.  Если за это время были сделки, а еще и стопы сработали, то с лавиной oncalc и onTrade замучаешься справляться
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #19 : 06.03.2014, 11:38:27 »

Как у вас определена переменная curPos ?
Записан
qpile
Newbie
*
Сообщений: 48


Просмотр профиля Email
« Ответ #20 : 06.03.2014, 18:59:49 »

Уже сделал ее как static , но все равно изменение происходит только к концу бара
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #21 : 06.03.2014, 19:53:41 »

В скрипте есть функция OnNewCandle()  ? Вызываете ли вы там :  requestFORTSPositions(getClient());  ?
Записан
Страниц: 1 [2] Печать 
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!