У вас не стоит Flash Player
Настройки
#36854 - Thu Feb 02 2012 08:27 AM Подскажите причины невыставления заявок
skon Offline
stranger

Registered: Fri Sep 23 2011
Записи: 6
Добрый день.

Помогите найти причину отсутствия заявок при работе скрипта (API).
Скрипт я максимально упростил. Я ожидаю, что после срабатывания скрипта будет выставлена условная заявка с ценой срабатывания равной цене закрытия последнего бара +250 пунктов.
После следующего бара должны быть выставлены две стоп заявки (как я понял, будет только одна, которая ближе к цене).

Но, никаких заявок вообще не выставляется, хотя в логе пишется об успешном исполнении скрипта.
В лаборатории тестирование проходит как положено.

Возможно каких-то настроек не хватает?

В лаборатории стоят галочки исполнять входы и выходы сразу.
Проскальзывание 0.
В скрипте - управление лимитом - "Управляется скриптом"

Запускал тест на 3-х минутном графике RIH2

Code:
using System; 
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;

namespace TSLab.Test
{
	public class System_Test : IExternalScript
	{

		public void Execute(IContext ctx, ISecurity securities)
		{
        	
        	#region основной цикл
        	int StartBar = 1;
        	int barsCount = securities.Bars.Count;
        	IPosition LastPos; // Текущая позиция
			
		ISecurity source;
			
		source = securities;
		for (int bar = StartBar; bar < barsCount; bar++)
		{
			LastPos = source.Positions.LastPositionActive;
			if (LastPos != null)
			{	// есть активная позиция, определим условия выхода
					
						LastPos.CloseAtStop( bar + 1, LastPos.EntryPrice*0.99,"stop loss");
						LastPos.CloseAtProfit( bar + 1, LastPos.EntryPrice*1.01,"take prophit");
			}
			else
			{	// определим условия входа						
						source.Positions.BuyIfGreater(bar+1,1, source.ClosePrices[bar]+250, "long");
						
			}
		}
		

        	#endregion основной цикл
			
			
		#region прорисовка графиков
		// Берем основную панель (Pane)

		Color clr;
		{
			clr = 0x702020; //aColor[i];
			// Создаем дополнительную панель для инструмента
			IPane Panes = ctx.CreatePane("Pane ", 50, false, false);
			Panes.UpdatePrecision(PaneSides.RIGHT,2);
			Panes.AddList(securities.Symbol, securities, CandleStyles.BAR_CANDLE, clr, PaneSides.RIGHT);
		}
		#endregion прорисовка графиков
			
	}
}
}

Наверх
#36880 - Thu Feb 02 2012 01:50 PM Re: Подскажите причины невыставления заявок [Re: skon]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
Откройте окно Менеджер команд, там будет отражена информация по сигналам, генерируемым скриптом.

Наверх
#36885 - Thu Feb 02 2012 03:01 PM Re: Подскажите причины невыставления заявок [Re: Nektodron]
skon Offline
stranger

Registered: Fri Sep 23 2011
Записи: 6
Да, именно там я и проверял. Нет заявок.

Критично ли для кода - как проверять последнюю активную позицию?
я в своем коде использовал Positions.LastPositionActive

а в других кодах я встречал Positions.GetLastActiveForSignal("long");

Наверх
#36887 - Thu Feb 02 2012 03:21 PM Re: Подскажите причины невыставления заявок [Re: skon]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
В вашем случае это равнозначно. А график скрипт рисует хоть какой-то?

Наверх
#36891 - Thu Feb 02 2012 03:51 PM Re: Подскажите причины невыставления заявок [Re: Nektodron]
skon Offline
stranger

Registered: Fri Sep 23 2011
Записи: 6
Да. график рисует и в скрипте и в лаборатории.
Причем в лаборатории и сделки на истории проходят нормально.

Сделал аналогичный алгоритм в визуальном редакторе - заявки появляются. буду разбираться с кодом, который сгенерил тслаб.

Наверх
#36925 - Fri Feb 03 2012 02:09 PM Re: Подскажите причины невыставления заявок [Re: Nektodron]
programmer Offline
stranger

Registered: Tue Dec 20 2011
Записи: 14
У меня похожая проблема.
Переворотный скрипт торгует в лаборатории, а в реале только первый вход срабатывает, а дальше переворот не делает(в менеджере команд ничего не появляется).

Переворот, по идее, производится при пересечении моего индикатора с ценой. Вот так:
Code:
...
            int barsCount = source.Bars.Count;
            for (int i = ctx.TradeFromBar + 1; i < barsCount; ++i)
            {
                IPosition le = source.Positions.GetLastActiveForSignal("LE");
                IPosition se = source.Positions.GetLastActiveForSignal("SE");

                if (le == null && my_indicator_result[i - 1] > source.ClosePrices[i - 1] && my_indicator_result[i] < source.ClosePrices[i])
                {
                    if (se != null)
                        se.CloseAtMarket(i + 1, "SX");
                    source.Positions.BuyAtMarket(i + 1, 1, "LE");
                }

                if (se == null && my_indicator_result[i - 1] < source.ClosePrices[i - 1] && my_indicator_result[i] > source.ClosePrices[i])
                {
                    if (le != null)
                        le.CloseAtMarket(i + 1, "LX");
                    source.Positions.SellAtMarket(i + 1, 1, "SE");
                }
            }
...

индикатор на графике в реале успешно рисуется и выглядит как надо.

Пробовал запускать другой переворотный скрипт "две скользящие средние" сделанный на кубиках - там всё прекрасно работает.

Как заставить скрипт нормально торговать?


Отредактировано programmer (Fri Feb 03 2012 02:50 PM)

Наверх
#38379 - Wed Mar 07 2012 10:17 PM Re: Подскажите причины невыставления заявок [Re: programmer]
Santiaga Offline
newbie

Registered: Sun Jun 05 2011
Записи: 49
Господа ТСлабовцы, может проясните ситуацию?
У меня аналогичная проблема, скрипт на C#, заявка генерится в момент сигнала. Дальше автооткрытие не работает, хотя все настройки включены - автооткрытие стоит. В скрипте прописан вход "по рынку".
_________________________
no pain no gain

Наверх


Moderator:  ViL, sar