Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Робот одновременнно выдает противоположные сигналы Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Darkchemist



Зарегистрирован: 12.07.2011
Сообщения: 30

СообщениеДобавлено: Пн Авг 15, 2011 12:15 pm Ответить с цитатой Вернуться к началу

Такая проблема: робот одновременно выдает сигналы и на открытие и на закрытие позиции.
Система имеет следующий вид, где А,В,С - индикаторы
Код:
Buy =  (
      A>Ref(A,-1)
   AND
      B>Ref(B,-1)
   AND
      C>Ref(C,-1)
   );

Sell = (
      A<Ref(A,-1)
   OR
      B<Ref(B,-1)
   OR
      C<Ref(C,-1)

   );

Short = (
      A<Ref(A,-1)
   AND
      B<Ref(B,-1)
   AND
      C<Ref(C,-1)
   );

Cover = (
      A>Ref(A,-1)
   OR
      B>Ref(B,-1)
   OR
      C>Ref(C,-1)
   );


В чем косяк?
Робот тот что представлен на сайте Smile

Заранее спасибо )
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пн Авг 15, 2011 2:14 pm Ответить с цитатой Вернуться к началу

А что с бектестом? И что в три-файле?
Посмотреть профиль Отправить личное сообщение ICQ Number
Darkchemist



Зарегистрирован: 12.07.2011
Сообщения: 30

СообщениеДобавлено: Пн Авг 15, 2011 3:51 pm Ответить с цитатой Вернуться к началу

бектест системы дает хороший плюс, в трифайле также по 2 заявки, например:

Код:

TRANS_ID=011600001; PRICE=0.07446; QUANTITY=1; OPERATION=B; CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=VTB60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=011600002; PRICE=0.07154; QUANTITY=1; OPERATION=S; CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=VTB60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пн Авг 15, 2011 3:59 pm Ответить с цитатой Вернуться к началу

Гы, я имел в виду сделки по бектесту и то что шлет робот - совпадают? Very Happy
Поздравляю с хорошим плюсом! Cool
Посмотреть профиль Отправить личное сообщение ICQ Number
Darkchemist



Зарегистрирован: 12.07.2011
Сообщения: 30

СообщениеДобавлено: Пн Авг 15, 2011 7:23 pm Ответить с цитатой Вернуться к началу

Фишка в том, что с утра на первой свечке система дала сигнал на открытие, и потом весь день на каждом баре повторно выдавала сигнал на открытие позиции, а т.к. в роботе прописано что торговать 1 лотом, то очевидно сразу же выдавала сигнал на закрытие, чтобы поддерживать в портфеле 1 лот. осталось придумать, что с этим делать Smile
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пн Авг 15, 2011 9:08 pm Ответить с цитатой Вернуться к началу

Чет какая то странная система, я ничо не понимаю что робот делает не так Smile Он все делает по системе, а то что она постоянно выдает сигналы на откытие/закрытие так это вопросы больше к системе чем к роботу.
Посмотреть профиль Отправить личное сообщение ICQ Number
Darkchemist



Зарегистрирован: 12.07.2011
Сообщения: 30

СообщениеДобавлено: Пн Авг 15, 2011 9:50 pm Ответить с цитатой Вернуться к началу

чем она странная? Smile
допустим если торговать по МА. тогда системe можно представить в виде:
Код:

Buy =(
         MA(C,5)>MA(C,15)
         );
Sell =(
         МА(С,5)<МА(С,15)
         );

Т.е. если восходящий тренд был на протяжении допустим 100 баров, то система выдаст 100 сигналов на покупку. В то время как в роботе прописано торговать 1 лотом.
Получается для поддержания статус кво робот при каждом новом сигнале открывает новую длинную позицию и закрывает старую.
Или я что-то не так говорю? Question
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Авг 15, 2011 10:21 pm Ответить с цитатой Вернуться к началу

Darkchemist писал(а):
чем она странная? Smile
допустим если торговать по МА. тогда системe можно представить в виде:
Код:

Buy =(
         MA(C,5)>MA(C,15)
         );
Sell =(
         МА(С,5)<МА(С,15)
         );

Т.е. если восходящий тренд был на протяжении допустим 100 баров, то система выдаст 100 сигналов на покупку. В то время как в роботе прописано торговать 1 лотом.
Получается для поддержания статус кво робот при каждом новом сигнале открывает новую длинную позицию и закрывает старую.
Или я что-то не так говорю? Question

Да. Система выдает сигналы на покупку, но в роботе стоит функция Equity(), она удалит все "лишние" сигналы. Т.е. исполниться первый сигнал на покупку и пока не появиться сигнал на закрытие покупки все сигналы покупки будут удаляться.


А стопов функцией ApplyStop() в системе нет?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Darkchemist



Зарегистрирован: 12.07.2011
Сообщения: 30

СообщениеДобавлено: Пн Авг 15, 2011 10:30 pm Ответить с цитатой Вернуться к началу

Нет. Стопов в систему не ставил. Система вставленная в робот имеет тот вид что я описал в первом посте. ну вместо букв - индикаторы (встроенные в ами)
Посмотреть профиль Отправить личное сообщение
Darkchemist



Зарегистрирован: 12.07.2011
Сообщения: 30

СообщениеДобавлено: Ср Авг 17, 2011 10:45 pm Ответить с цитатой Вернуться к началу

попробовал заменить индикаторы в системе на простейшие МА. Текст робота вместе с системой:
Код:

///////// Установки ///////////

TimeFrame      = 3600;                  // таймфрейм в секундах.
Account         = "L01-00000F00";   // ваш аккаунт на бирже
Client         = "#####";            // код клиента
Lots            = 1;                     // сколько лотов желаете торговать
Otstup         = 2;                     // в процентах. Заявка будет выставлена хуже текущей цены на столько процентов
FileName      = "C:/trans.tri"; // слэши прямые!!! имя файла с транзакциями для квика
dir = 0;


////////// Правила системы ///////////////

Buy =  (
      MA(C,5)>Ref(MA(C,5),-1)
   AND
      MA(C,10)>Ref(MA(C,10),-1)
   );

Sell = (
      MA(C,5)<Ref(MA(C,5),-1)
   OR
      MA(C,10)<Ref(MA(C,10),-1)

   );

Short = (
      MA(C,5)<Ref(MA(C,5),-1)
   AND
      MA(C,10)<Ref(MA(C,10),-1)
   );

Cover = (
      MA(C,5)>Ref(MA(C,5),-1)
   OR
      MA(C,10)>Ref(MA(C,10),-1)
   );

//////////////////////////////////////////

Equity(1, 0);

Buy = LastValue(Ref(Buy, -1));
Sell = LastValue(Ref(Sell, -1));
Short = LastValue(Ref(Short, -1));
Cover = LastValue(Ref(Cover, -1));


//////////// Формируем транзакцию.//////////////
////////////////////////////////////////////////
//////// !!!!СЮДА РУКАМИ НЕ ЛАЗИТЬ!!!! /////////
////////////////////////////////////////////////

Classcode = GroupID(1);
if(TickSize == 0)
{
   PopupWindow( "Не задан размер тика значение TickSize", "ошибка", timeout = 5, left = -1, top = -1 );
}
else
{
   Otstup = round(LastValue(C)*Otstup/100/TickSize)*TickSize;
   form = (1 + 0.1 * abs(floor(IIf(log10(TickSize)>0, 0, log10(TickSize)))));
}

procedure savetrifile(stransid,sstr)
{
   f = fopen(FileName, "r");
   found = 0;
   if(f)
   {
      while(!feof(f))
      {
         s = fgets(f);
         if(StrFind( s, stransid) > 0) found = 1;
      }
      fclose(f);
   }
   if (NOT found)
      {
         f = fopen(FileName, "a");
            if(f)
            {
               fputs(sstr+"\n",f);
               fclose(f);
            }
      }
}


function makeandsave(sOper, sprice)
{
   CCS="";
   if (Client != "")  CCS="CLIENT_CODE="+Client+";";

   transid = "TRANS_ID="   +FullName()+LastValue(TimeNum())+dir+"; ";

   str = transid   +
   "PRICE="         +NumToStr(sprice, format = form, separator=False)+"; " +
   "QUANTITY="      +NumToStr(Lots, format = 1.0, separator=False)+"; "+
   "OPERATION="   +sOper+"; "+
   "CLASSCODE="   +Classcode+"; "+
   "ACTION="         +"NEW_ORDER; "+
   "TYPE="            +"L; "+
   "SECCODE="      +Name()+"; "+
   "ACCOUNT="      +Account+"; "+
   CCS;

   savetrifile(transid, str);
}

if (TimeFrame == Interval() & FullName() != "")
{
   if(Buy)
   {
      price = Close[BarCount-1] + Otstup;
      dir = "1";
      makeandsave("B", price);
   }
   if(Sell)
   {
      price = Close[BarCount-1] - Otstup;
      dir = "2";
      makeandsave("S", price);
   }
   if(Short)
   {
      price = Close[BarCount-1] - Otstup;
      dir = "3";
      makeandsave("S", price);
   }
   if(Cover)
   {
      price = Close[BarCount-1] + Otstup;
      dir = "4";
      makeandsave("B", price);
   }

}
else if (TimeFrame != Interval())
   PopupWindow( "Не соответствует временной интервал в настройках АА и в коде",
      "ошибка", timeout = 5, left = -1, top = -1 );
else
   PopupWindow( "Не задан двузначный номер в поле FullName", "ошибка", timeout = 15, left = -1, top = -1 );




//// mehanizator (c) 2004, http://www.russian-trader.ru
//// 000 (c) 2008, http://www.amisite.ru


В три файле следующие заявки:
Код:

TRANS_ID=031600004; PRICE=6780; QUANTITY=1; OPERATION=B; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=GMKN60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=021600001; PRICE=176.89; QUANTITY=1; OPERATION=B; CLASSCODE=EQNE; ACTION=NEW_ORDER; TYPE=L; SECCODE=GPR60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=021600002; PRICE=169.95; QUANTITY=1; OPERATION=S; CLASSCODE=EQNE; ACTION=NEW_ORDER; TYPE=L; SECCODE=GPR60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=051600001; PRICE=213.79; QUANTITY=1; OPERATION=B; CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=ROSN60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=051600002; PRICE=205.41; QUANTITY=1; OPERATION=S; CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=ROSN60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=071600002; PRICE=83.98; QUANTITY=1; OPERATION=S; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=ROSTP60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=091600001; PRICE=73.58; QUANTITY=1; OPERATION=B; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=SBERP60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=091600002; PRICE=70.70; QUANTITY=1; OPERATION=S; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=SBERP60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=081600001; PRICE=88.45; QUANTITY=1; OPERATION=B; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=SBR60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=101600001; PRICE=23.837; QUANTITY=1; OPERATION=B; CLASSCODE=EQNE; ACTION=NEW_ORDER; TYPE=L; SECCODE=SNGS60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=101600002; PRICE=22.903; QUANTITY=1; OPERATION=S; CLASSCODE=EQNE; ACTION=NEW_ORDER; TYPE=L; SECCODE=SNGS60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=111600001; PRICE=164.83; QUANTITY=1; OPERATION=B; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=TATN60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=111600002; PRICE=158.37; QUANTITY=1; OPERATION=S; CLASSCODE=EQBR; ACTION=NEW_ORDER; TYPE=L; SECCODE=TATN60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=011600001; PRICE=0.07319; QUANTITY=1; OPERATION=B; CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=VTB60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;
TRANS_ID=011600004; PRICE=0.07319; QUANTITY=1; OPERATION=B; CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=VTB60; ACCOUNT=L01-00000F00; CLIENT_CODE=#####;



может так возникнут идеи?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Авг 18, 2011 12:03 am Ответить с цитатой Вернуться к началу

Хм. Прогнал твоего робота на фьюче сбера. Вот результат.
Цитата:

TRANS_ID=011000002; PRICE=9625; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBRF; ACCOUNT=L01-00000F00; CLIENT_CODE=12345;
TRANS_ID=011100001; PRICE=10092; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBRF; ACCOUNT=L01-00000F00; CLIENT_CODE=12345;
TRANS_ID=011300002; PRICE=9665; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBRF; ACCOUNT=L01-00000F00; CLIENT_CODE=12345;
TRANS_ID=011400001; PRICE=10110; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBRF; ACCOUNT=L01-00000F00; CLIENT_CODE=12345;
TRANS_ID=011700002; PRICE=9653; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBRF; ACCOUNT=L01-00000F00; CLIENT_CODE=12345;
TRANS_ID=011900003; PRICE=9589; QUANTITY=1; OPERATION=S; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBRF; ACCOUNT=L01-00000F00; CLIENT_CODE=12345;
TRANS_ID=012300004; PRICE=10030; QUANTITY=1; OPERATION=B; CLASSCODE=Group 0; ACTION=NEW_ORDER; TYPE=L; SECCODE=SPFB.SBRF; ACCOUNT=L01-00000F00; CLIENT_CODE=12345;

Все хорошо... Sad

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Авг 18, 2011 8:01 am Ответить с цитатой Вернуться к началу

Вот что подумал.
У тебя в настройках АА наверное стопы включены
и неверняка стоит опция Activate stops immediatelly

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Darkchemist



Зарегистрирован: 12.07.2011
Сообщения: 30

СообщениеДобавлено: Чт Авг 18, 2011 9:55 am Ответить с цитатой Вернуться к началу

000 писал(а):
Вот что подумал.
У тебя в настройках АА наверное стопы включены
и неверняка стоит опция Activate stops immediatelly


подчеркнутое оказалось верным ))
причем тэйк-профит стоял на уровне 0% (привычка что "0" это выключено...)

Спасибо добрый, а главное умный человек ))
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen