У вас не стоит Flash Player
Настройки
#78008 - Mon May 16 2016 11:20 AM Ложные сигналы
smal Offline
stranger

Registered: Mon May 02 2016
Записи: 13
Уважаемые форумчане.
У меня скрипт полностью написан на C# - все воткнули как внешний источник. Все работает. Но вот незадача: ""В ходе торгов агент разумеется входит в позицию при возникновении сигнала. Через некоторое время, если посмотреть и проверить все с самого начала обнаруживается, что сигнала на вход в позицию не было. Если смотреть потом в лабе, то тоже сигнала по которому был вход в позицию нет, т.е. при анализе данных робот почему то выдает ЛОЖНЫЙ СИГНАЛ, который потом исчезает.""
Просмотрел все и не могу понять в чем дело и где. Я не программист.
Робот написан полностью на C#, кубиков нет. Подключен в Тслаб как внешний источник.
Также агент-скрипт что то грузит Тслаб аж на 16гб. Использую 64 разрядную версию Тслаб.

Вот часть кода отвечающего за определение сигнала:
------------------------------------
Code:
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.DataSource;
using TSLab.Script.Helpers;
using System;
using System.Diagnostics;

namespace signalru
{
    public class signalru : IContextUses, IDouble2DoubleHandler
    {
        [HandlerParameter]
        public bool Peak { get; set; }
        [HandlerParameter]
        public int Period_peak { get; set; }
        //[HandlerParameter]
        //public bool Hole { get; set; }
       // [HandlerParameter]
       // public int Period_hole { get; set; }

        [HandlerParameter]
        public bool UP_on { get; set; }
        [HandlerParameter]
        public double UP_level { get; set; }
        [HandlerParameter]
        public bool Down_on { get; set; }
        [HandlerParameter]
        public double Down_level { get; set; }

        public IList<double> Execute(IList<double> source)
        {
            IList<double> sig_p = new List<double>();
            IList<double> sig_h = new List<double>();
            for (int i = 0; i < source.Count - 1; i++)
            {
                sig_p.Add(0);
                sig_h.Add(0);
            }
            ////условие 1
            if (Peak == true)
            {
                sig_p = signalru_f(source, source.Count - 1, Period_peak);
            }
           // if (Hole == true)
           // {
              //  sig_h = signalru_f(source, source.Count - 1, Period_hole);
           // }

            IList<double> sig = new List<double>();
            for (int i = 0; i < source.Count - 1; i++)
            {
                sig.Add((sig_p[i] + sig_h[i]));
            }

            bool u1 = false;
            bool d1 = false;
            //условие 2
            if (UP_on == true && Down_on == false)
            {
                for (int i = 0; i < source.Count - 1; i++)
                {
                    if (source[i] > UP_level)
                    {
                        sig[i] = 0;
                    }
                    else if (Peak == false) 
                        //&& Hole == false)
                    {
                        sig[i] = 1;
                    }
                }
            }

            //Условие 3
            if (UP_on == false && Down_on == true)
            {
                for (int i = 0; i < source.Count - 1; i++)
                {
                    if (source[i] < Down_level)
                    {
                        sig[i] = 0;
                    }
                    else if (Peak == false) 
                        //&& Hole == false)
                    {
                        sig[i] = 1;

                    }

                }
            }

            if (UP_on == true && Down_on == true)
            {
                for (int i = 0; i < source.Count - 1; i++)
                {
                    if (source[i] < Down_level || source[i] > UP_level)
                    {
                        sig[i] = 0;
                    }
                    else if (Peak == false) 
                        //&& Hole == false)
                    {
                        sig[i] = 1;

                    }

                }
            }


            return sig;
        }

        public IContext Context { get; set; }

        double signalru_one(IList<double> Mas, int end_N, int period)
        {
            double Answer = 1;
            for (int i = end_N - period + 1; i <= end_N - 1; i++)
            {
                if (Mas[i] < Mas[i - 1])
                {
                    Answer = 0;
                }
            }
            if (Mas[end_N] >= Mas[end_N - 1])
            {
                Answer = 0;
            }
            return Answer;
        }
        ////---------------------------------------------

        IList<double> signalru_f(IList<double> Mas, int End_N, int Period)
        {
            IList<double> Answer = new List<double>();
            for (int j = 0; j < Period; j++)
            {
                Answer.Add(0);
            }

            for (int i = Period; i < End_N; i++)
            {
                Answer.Add(signalru_one(Mas, i, Period));
            }
            return Answer;
        }

        double signalru_one(IList<double> Mas, int end_N, int period)
        {
            double Answer = -1;
            for (int i = end_N - period + 1; i <= end_N - 1; i++)
            {
                if (Mas[i] > Mas[i - 1])
                {
                    Answer = 0;
                }
            }
            if (Mas[end_N] <= Mas[end_N - 1])
            {
                Answer = 0;
            }
            return Answer;
        }
        ////---------------------------------------------

        IList<double> signalru_f(IList<double> Mas, int End_N, int Period)
        {
            IList<double> Answer = new List<double>();
            for (int j = 0; j < Period; j++)
            {
                Answer.Add(0);
            }

            for (int i = Period; i < End_N; i++)
            {
                Answer.Add(signalru_one(Mas, i, Period));
            }
            return Answer;
        }

    }
}
------------------------------------


Помогите исправить ошибку.


Отредактировано ViL (Mon May 16 2016 12:47 PM)

Наверх
#78011 - Mon May 16 2016 12:20 PM Re: Ложные сигналы [Re: smal]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
уважаете себя, уважайте остальных. хотя бы форматирование кода сделайте. Смотреть такое будут только большие энтузиасты.
_________________________
__


Наверх
#78013 - Mon May 16 2016 01:12 PM Ложные сигналы [Re: ra81]
FNP Offline
stranger

Registered: Mon Sep 07 2015
Записи: 15
Loc: Russia
Интересная ситуация


Отредактировано FNP (Mon May 16 2016 01:14 PM)

Наверх
#78014 - Mon May 16 2016 01:16 PM Re: Ложные сигналы [Re: FNP]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
то что вы приложили это код кубика а не скрипта. приложите информацию по пересчета таймрфейму и так далее
_________________________
__


Наверх
#78015 - Mon May 16 2016 01:21 PM Re: Ложные сигналы [Re: ra81]
smal Offline
stranger

Registered: Mon May 02 2016
Записи: 13
Извините. Я не программист. И для меня что кубик, что скрипт, что робот - одно и тоже.
Я описал в самом верху, что в ходе торгов робот обсчитывает данные и выдается сигнал на вход в позицию, позиция открывается. Если по прошествии времени посмотреть, то можно увидеть, что сигнала то не было.
Скрин выложить??

Наверх
#78016 - Mon May 16 2016 01:28 PM Re: Ложные сигналы [Re: smal]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
приложите информацию которую я просил выше постом. скрины не нужны
_________________________
__


Наверх


Moderator:  ViL, sar