Автор |
Сообщение |
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Такая проблема: робот одновременно выдает сигналы и на открытие и на закрытие позиции.
Система имеет следующий вид, где А,В,С - индикаторы
Код: |
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)
);
|
В чем косяк?
Робот тот что представлен на сайте
Заранее спасибо ) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
А что с бектестом? И что в три-файле? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
бектест системы дает хороший плюс, в трифайле также по 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
|
Гы, я имел в виду сделки по бектесту и то что шлет робот - совпадают?
Поздравляю с хорошим плюсом! |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Фишка в том, что с утра на первой свечке система дала сигнал на открытие, и потом весь день на каждом баре повторно выдавала сигнал на открытие позиции, а т.к. в роботе прописано что торговать 1 лотом, то очевидно сразу же выдавала сигнал на закрытие, чтобы поддерживать в портфеле 1 лот. осталось придумать, что с этим делать |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Чет какая то странная система, я ничо не понимаю что робот делает не так Он все делает по системе, а то что она постоянно выдает сигналы на откытие/закрытие так это вопросы больше к системе чем к роботу. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
чем она странная?
допустим если торговать по МА. тогда системe можно представить в виде:
Код: |
Buy =(
MA(C,5)>MA(C,15)
);
Sell =(
МА(С,5)<МА(С,15)
);
|
Т.е. если восходящий тренд был на протяжении допустим 100 баров, то система выдаст 100 сигналов на покупку. В то время как в роботе прописано торговать 1 лотом.
Получается для поддержания статус кво робот при каждом новом сигнале открывает новую длинную позицию и закрывает старую.
Или я что-то не так говорю? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Darkchemist писал(а): |
чем она странная?
допустим если торговать по МА. тогда системe можно представить в виде:
Код: |
Buy =(
MA(C,5)>MA(C,15)
);
Sell =(
МА(С,5)<МА(С,15)
);
|
Т.е. если восходящий тренд был на протяжении допустим 100 баров, то система выдаст 100 сигналов на покупку. В то время как в роботе прописано торговать 1 лотом.
Получается для поддержания статус кво робот при каждом новом сигнале открывает новую длинную позицию и закрывает старую.
Или я что-то не так говорю? |
Да. Система выдает сигналы на покупку, но в роботе стоит функция Equity(), она удалит все "лишние" сигналы. Т.е. исполниться первый сигнал на покупку и пока не появиться сигнал на закрытие покупки все сигналы покупки будут удаляться.
А стопов функцией ApplyStop() в системе нет? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
Нет. Стопов в систему не ставил. Система вставленная в робот имеет тот вид что я описал в первом посте. ну вместо букв - индикаторы (встроенные в ами) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
попробовал заменить индикаторы в системе на простейшие МА. Текст робота вместе с системой:
Код: |
///////// Установки ///////////
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
|
Хм. Прогнал твоего робота на фьюче сбера. Вот результат.
Цитата: |
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;
|
Все хорошо... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот что подумал.
У тебя в настройках АА наверное стопы включены
и неверняка стоит опция Activate stops immediatelly |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Darkchemist
Зарегистрирован: 12.07.2011
Сообщения: 30
|
подчеркнутое оказалось верным ))
причем тэйк-профит стоял на уровне 0% (привычка что "0" это выключено...)
Спасибо добрый, а главное умный человек )) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|