Стратегии и роботы > Робот по осциллятору

Обсуждение, описание стратегий и роботов, идеи для стратегий
State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Робот по осциллятору

Непрочитанное сообщение State » 08 окт 2018, 17:53

Доброго дня.

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

Задумка такая, что при пробитии снизу вверх значения индикатора открывается лонг со стопом/профитом.
Соответственно при пробитии вниз другого значения открывается шорт тоже с стоп/профит.



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

function Initialize()
{
   StrategyName = "MyMTS";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 0;
   ShortLimit = 0;
   AddChartIndicator("MY.SOH", new Dictionary <string, double>{{"nK", 5},{"nD", 3},{"nSignal", 3}});
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if ( (CrossAbove(MY.SOH(Input1, 5, 3, 3)["sD"], 20) == true) )
   {
      EnterLong();
      BreakingStop(0.5, 2.0, SignalPriceType.DeltaInPercentFromAveragePrice);
      Stop();
   }

   /// ПРАВИЛО 2
   if ( (CrossBelow(MY.SOH(Input1, 5, 3, 3)["sD"], 80) == true) )
   {
      EnterShort();
      BreakingStop(0.5, 2.0, SignalPriceType.DeltaInPercentFromAveragePrice);
      Stop();
   }

}

Аватара пользователя
evge
Администратор
Сообщения: 1652
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 303 раза
Контактная информация:

Re: Робот по осциллятору

Непрочитанное сообщение evge » 08 окт 2018, 18:17

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

function Initialize()
{
   StrategyName = "MyMTS";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 0;
   ShortLimit = 0;
   AddChartIndicator("MY.SOH", new Dictionary <string, double>{{"nK", 5},{"nD", 3},{"nSignal", 3}});
}

function OnUpdate()
{
   var I = Input1;
   var MSO = MY.SOH(I, 5, 3, 3)["sD"];

   /// ПРАВИЛО 1
   if ( MSO[1] <= 20 && MSO[0] > 20 )
   {
      EnterLong();
      BreakingStop(0.5, 2.0, SignalPriceType.DeltaInPercentFromAveragePrice);
   }

   /// ПРАВИЛО 2
   if ( MSO[1] >= 80 && MSO[0] < 80 )
   {
      EnterShort();
      BreakingStop(0.5, 2.0, SignalPriceType.DeltaInPercentFromAveragePrice);
   }

}
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1652
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 303 раза
Контактная информация:

Re: Робот по осциллятору

Непрочитанное сообщение evge » 08 окт 2018, 18:31

Stop() зачем нужен? Ведь остановится робот после открытия позиции, или так задумано?
никогда такого не было и вот опять

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: Робот по осциллятору

Непрочитанное сообщение State » 08 окт 2018, 18:48

Stop тут лишний. Ошибся. Спасибо за ответ! Проверю завтра)

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: Робот по осциллятору

Непрочитанное сообщение State » 09 окт 2018, 10:40

Еще возник вопрос.
Я установил, что торговля максимум 1 лотом (на фортс). Но на тестах робот торгует частями, то есть 0,59, 0.8 лота и тд. Разве такое возможно?

Аватара пользователя
Simonov
Сообщения: 89
Зарегистрирован: 20 сен 2017, 11:36
Благодарил (а): 83 раза
Поблагодарили: 20 раз

Re: Робот по осциллятору

Непрочитанное сообщение Simonov » 09 окт 2018, 10:44

Даже интересно стало. А скриншот можете приложить? В первый раз про такое слышу.

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: Робот по осциллятору

Непрочитанное сообщение State » 09 окт 2018, 11:00

Упс.....извиняюсь......не туда посмотрел. Новичок в этом деле..... :oops:

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: Робот по осциллятору

Непрочитанное сообщение State » 10 окт 2018, 12:45

Поправьте, пожалуйста.
Не компилируется код. Пишет, что ожидается ; в строке 23.... Но знак там есть. Не пойму в чем дело.

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

/**

Algorithm = ОСЦИЛЛЯТОР (трендовый);
**/

function Initialize()
{
   StrategyName = "St 10";
   AddParameter("SL", 0, "", 0.1);
   AddParameter("TP", 0, "", 0.1);
   AddParameter("K", 5, "", 1);
   AddParameter("D", 3, "", 1);
   AddParameter("Signal", 3, "", 1);
   AddInput("Input1", Inputs.Candle, 1, true, "");
   LongLimit = 1;
   ShortLimit = -1;
   AddChartIndicator("Stochastic Oscillator", new Dictionary <string, double>{{"Period %K", 5},{"Period %D", 3},{"Period Signal", 3}});
}

function OnUpdate()
{
   var I = Input1;
   var S = Stochastic Oscillator (I, 5, 3, 3)["D"];

   /// ПРАВИЛО 1
if ( S[1] <= 20 && S[0] > 20 )
   {
      EnterLong();
      BreakingStop(SL, TP, SignalPriceType.DeltaFromAveragePrice);
   }
   /// ПРАВИЛО 2
   if ( S[1] >= 80 && S[0] < 80 )
   {
      EnterShort();
      BreakingStop(SL, TP, SignalPriceType.DeltaFromAveragePrice);
   }
}

HMV
Сообщения: 18
Зарегистрирован: 04 фев 2016, 13:46

Re: Робот по осциллятору

Непрочитанное сообщение HMV » 10 окт 2018, 14:50

var S = SO(I, 5, 3, 3)["D"];

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: Робот по осциллятору

Непрочитанное сообщение State » 10 окт 2018, 14:57

Спасибо! Заработало!

Если не секрет, где в терминале смотреть такие обозначения индикаторов вшитых?


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей