Страница 2 из 3

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 13:56
Den
Запущенный на М1 Выдает каждые 10 секунд сообщение "РАБОТАЕТ!!!" , графики останавливаются

Код: Выделить всё

function Initialize()
{
StrategyName = "Alfa_AO";
AddParameter("Pfast", 8, "", 1);
AddParameter("Pslow", 35, "", 1);
AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
LongLimit = 0;
ShortLimit = 0;
AddChartIndicator("AwesomeOscillator", new Dictionary <string, string>{{"Fast", "Pfast"},{"Slow", "Pslow"}});
}

function OnUpdate()
{
while( true)
{
ShowMessage("РАБОТАЕТ!!!");
/// ПРАВИЛО 1
if ( (AO(Input1, Pfast, Pslow) > AO(Input1, Pfast, Pslow)[1]) )
{
//   EnterLong();
}

/// ПРАВИЛО 2
if ( (AO(Input1, Pfast, Pslow) < AO(Input1, Pfast, Pslow)[1]) )
{
//EnterShort();
}
System.Threading.Thread.Sleep(10000);
}   

}

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:02
Arteshka
Странно у меня работает. А если другого робота запускаете, тоже тормозят или только с этим циклом?

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:13
Den
У вас робот проверяет каждые 10 секунд и подает торговые сигналы?

Другие естественно работают. Этот не тормозит - он запускается, после этого графики останавливаются, стаканы работают по-прежнему, а сам робот не подаёт заявок.

Он просто стоит запущенный.

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:19
Arteshka
Не подает заявки потому, что //EnterShort(); и //EnterLong(); выделены как комментарий, если убрать "// "то по идее должен отдавать приказы. Эти команды я специально скрыл комментариями, чтобы не совершал сделок. Это как пример того, чтобы роботу не ждать следующего тика. Если я что то не понял поясните.

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:20
Den
вы убрали вход в позицию, так заработал. Ща проверим как он подает

Код: Выделить всё

function Initialize()
{
StrategyName = "Alfa_AO";
AddParameter("Pfast", 8, "", 1);
AddParameter("Pslow", 35, "", 1);
AddInput("Input1", Inputs.Candle, 60, true, "SBER=МБ ЦК");
LongLimit = 0;
ShortLimit = 0;
AddChartIndicator("AwesomeOscillator", new Dictionary <string, string>{{"Fast", "Pfast"},{"Slow", "Pslow"}});
}

function OnUpdate()
{
while( true)
{
ShowMessage("РАБОТАЕТ!!!");
/// ПРАВИЛО 1
if ( (AO(Input1, Pfast, Pslow) > AO(Input1, Pfast, Pslow)[1]) )
{
EnterLong();
}

/// ПРАВИЛО 2
if ( (AO(Input1, Pfast, Pslow) < AO(Input1, Pfast, Pslow)[1]) )
{
EnterShort();
}
System.Threading.Thread.Sleep(10000);
}   

}

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:22
Arteshka
В тестере скорее всего тайминг не работает. Либо из-за Sleep будет тормозить.

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:26
Den
Мой тоже заработал ( на моих условиях), щас проверим.

Так у вас он запущенный на , скажем M30 , подает при появлении сигнала? Не дожидаясь окончания бара?

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:29
Arteshka
По задумке у него внутри бесконечный цикл while(true). Строкой System.Threading.Thread.Sleep(10000); вы задаете тайминг время остановки( робот ничего не делает). Робот может даже работать на не торгующем инструменте. По идее ;) Как то так.

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 14:43
Den
Евгений может прокомментирует.

проверить неудобно так как графики останавливаются при запуске робота (если он не запущен, графики двигаются, робот обновляет прибыль/убыток серыми цифрами), но можно

При появлении сигнала на М10 он не переворачивается, ждет окончания бара походу ;)

То есть сообщения-то он выдает, а вот торговые сигналы не посылает до закрытия бара на заданном ему при запуске ТФ

Re: Зациклить работу робота

Добавлено: 23 ноя 2017, 19:01
oxi
Так нельзя.
В таком варианте не будут обновляться данные и, как следствие, не будут выдаваться сигналы