У вас не стоит Flash Player
Настройки
#71358 - Fri Jul 03 2015 04:52 PM Что за ошибка?
mikhasi Offline
stranger

Registered: Mon Jun 29 2015
Записи: 15
Есть открытая позиция и нет никаких условий для ее выхода, но при этом при каждом пересчете много подобных сообщений в логе:
Code:
16:47:05.05 100 Агент '1min': Попытка закрыть позицию на 16751 баре (03.07.2015 11:59:00), хотя бар входа равен 16871

По какой причине это возникает?
Спасибо.

Наверх
#71359 - Fri Jul 03 2015 05:00 PM Re: Что за ошибка? [Re: mikhasi]
Stan Offline
veteran

Registered: Wed Oct 02 2013
Записи: 1357
Это корявый скрипт!! Скорее всего скаченные где то на форуме. Там ошибка в коде! Где то это уже рассматривалось

Наверх
#71360 - Fri Jul 03 2015 05:02 PM Re: Что за ошибка? [Re: mikhasi]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8143
Обычно, когда скрипт заглядывает в будущее.
Но есть еще вариант, что на компьютере не установлен последний патч регионов/времени

Наверх
#71362 - Fri Jul 03 2015 05:04 PM Re: Что за ошибка? [Re: ViL]
mikhasi Offline
stranger

Registered: Mon Jun 29 2015
Записи: 15
Видимо второе, про патч впервые слышу.

Наверх
#71364 - Fri Jul 03 2015 05:16 PM Re: Что за ошибка? [Re: Stan]
mikhasi Offline
stranger

Registered: Mon Jun 29 2015
Записи: 15
Originally Posted By: Stan
Это корявый скрипт!! Скорее всего скаченные где то на форуме. Там ошибка в коде! Где то это уже рассматривалось


Я сам скрипт писал с нуля на C#. Сейчас идет отладка и в процессе возникают вопросы.

Скрипт без сигналов выглядит так
Code:
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;
using TSLab.DataSource;
using System;

public class HiLoSample : IExternalScript
{
    public virtual void Execute(IContext ctx, ISecurity source)
    {
        // Торговля.
        for (int i = ctx.TradeFromBar + 1; i < barsCount; i++)
        {

            IPosition LE = source.Positions.GetLastActiveForSignal("LE");
            IPosition She = source.Positions.GetLastActiveForSignal("ShE");
            if ()
            { }
            else
            {
                if (LE == null )
                {
                    if () source.Positions.BuyAtMarket(i+1, 1, "LE");
                    else if () source.Positions.BuyAtMarket(i+1 , 1, "LE");
                    else if () source.Positions.BuyAtMarket(i+1 , 1, "LE");
                    else if () source.Positions.BuyAtMarket(i+1 , 1, "LE");
                    else if () source.Positions.BuyAtMarket(i+1 , 1, "LE");
                }
                else if (LE != null)
                {
                    if () 
                    {
                        if () LE.CloseAtMarket(i+1 , "LX");
                        else if () LE.CloseAtMarket(i+1 , "LX");
                        else if () LE.CloseAtMarket(i+1 , "LX");
                        else if () LE.CloseAtMarket(i+1 , "LX");
                        else if () LE.CloseAtMarket(i+1 , "LX");
                    }
                    if () LE.CloseAtMarket(i+1 , "LX");
                    else if () LE.CloseAtMarket(i+1 , "LX");
                    else if () LE.CloseAtMarket(i+1 , "LX");
                }

                if (She == null)
                {
                    if () source.Positions.SellAtMarket(i+1 , 1, "ShE");
                    else if () source.Positions.SellAtMarket(i+1 , 1, "ShE");
                    else if () source.Positions.SellAtMarket(i+1 , 1, "ShE");
                    else if () source.Positions.SellAtMarket(i+1 , 1, "ShE");
                    else if () source.Positions.SellAtMarket(i+1 , 1, "ShE");
                }
                else if (She != null)
                {
                    if () 
                    {
                        if () She.CloseAtMarket(i+1 , "Shx");
                        else if () She.CloseAtMarket(i+1 , "Shx");
                        else if () She.CloseAtMarket(i+1 , "Shx");
                        else if () She.CloseAtMarket(i+1 , "Shx");
                        else if () She.CloseAtMarket(i+1 , "Shx");
                    }
                    if () She.CloseAtMarket(i+1 , "Shx");
                    else if () She.CloseAtMarket(i+1 , "Shx");
                    else if () She.CloseAtMarket(i+1 , "Shx");
                }
            }
        }
    }
}

Наверх
#71367 - Fri Jul 03 2015 05:48 PM Re: Что за ошибка? [Re: mikhasi]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
GetLastActiveForSignal("LE");

на эту тему было много слов сказано и даже статей написано на rusalgo.com и все равно используете этот метод.
Это метод древний. Даже тслаб вам должен кричать что он устарел и не стоит его применять. Из за него и выпадает ошибка потому что так вот происходит. Используйте методы с номером бара.


Отредактировано ra81 (Fri Jul 03 2015 05:49 PM)
_________________________
__


Наверх


Moderator:  ViL, sar