Автор |
Сообщение |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Здравствуйте помогите забраться. Не исполняются заявки.
Ошибки 29 и 5
Код: |
Tickers = "BR8"; // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами
/////////////
///////////////
// задаем размер лотов, коды и отступ для разных символов
/////////////
if(Name() == "Br8") { //Символ как он называется в Ами
SecCode = "BRQ6";
Class = "SPBFUT";
Lots = 1;
TickS = 0.01; // Минимальный шаг цены торгуемой бумаги
Otstup = 0.01; // Заявка будет выставлена хуже текущей цены на Otstup рублей
}
//////////////Система///////////////
no=Param( "Swing", 5, 1, 55 );
res=HHV(H,no);
sup=LLV(L,no);
tsl=IIf(ValueWhen(IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0))!=0,IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0)),1)==1,sup,res);
Plot(tsl, _DEFAULT_NAME(), colorBlack, styleStaircase);
Buy1 = Cross(C,res) ;
Sell1 = Cross(sup,C) ;
a=C;
g=(EMA(Close,3) * (2 / 4 - 1)-EMA(Close,5) * (2 / 6 - 1)) / (2 /4- 2 /6);
e=Ref(tsl,-1);
Buy1 = Cross(C,tsl) ;
Sell1 = Cross(tsl,C) ;
SellPrice=ValueWhen(Sell1,e,1);
BuyPrice=ValueWhen(Buy1,e,1);
Long=Flip(Buy1,Sell1);
Short1=Flip(Sell1,Buy1 );
Filter=Buy1 OR Sell1;
Buy1 = Cross(C,tsl) ;
Sell1 = Cross(tsl,C) ;
Short1 = Sell1;
Cover1 = Buy1;
///////////Конец Системы////////////
////////////////////////////////////
text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + " " + Name();
pos = AS_READ_PARAM("Quik_Robot", Name(), "pos");
///////////// проверка наличия символа в списке для торговли ////////////////
k = 0;
Permit_Ticker = False;
do {
Tick = StrExtract(Tickers, k);
k++;
if(Name() == Tick)
Permit_Ticker = True;
} while(Tick != "");
/////////// Функции ////////////
procedure orders(bs, pr, Lot)
{
connection = 0;
QC = AS_QUIK_CONNECT(Quik);
if (QC == 1)
{
connection = 1;
text = "Есть соединение с сервером";
Color = colorGreen;
}
else if (QC == -1)
{
text = "нет соединения с квиком";
Color = colorRed;
}
else if (QC == -2)
{
text = "нет соединения с сервером";
Color = colorRed;
}
else
{
text = "фигня какая то";
Color = colorRed;
}
if(connection == 1)
{
order = AS_QUIK_SEND_SYNC_NEWORDER( "123", // OrderID - Любые цифры
Account,
Client_Code,
"L", // Тип заявки M-рыночная, L-лимитированная
Class,
SecCode,
bs,
pr,
Lot);
}
if(StrToNum(order) > 100)
{
iz = "исполнена";
coloriz = colorGreen;
str = str + " заяка исполнена" + " ответ сервера=" + order;
if(pos > 0 AND bs == "S") // закрытие лонга
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
else if(pos == 0 AND bs == "S") // шорт
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot);
else if(pos < 0 AND bs == "B") // закрытие шорта
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
else if(pos == 0 AND bs == "B") // лонг
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot);
str = str + " позиция на момент исполнения " + pos;
}
else {
iz = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
}
////////// конец Функций //////////
if (TimeFrame == Interval() AND Permit_Ticker)
{
if(Buy1[BarCount-1] AND pos == 0) {
str = str + " Buy";
sd = "Buy";
orders("B", round(C[BarCount-1]) + Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
else if(Sell1[BarCount-1] AND pos > 0) {
str = str + " Sell";
sd = "Sell";
orders("S", round(C[BarCount-1]) - Otstup, abs(pos));
AS_WRITE_FILE("log.quik", str);
}
else if(Short1[BarCount-1] AND pos == 0) {
str = str + " Short";
sd = "Short";
orders("S", round(C[BarCount-1]) - Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
else if(Cover1[BarCount-1] AND pos < 0) {
str = str + " Cover";
sd = "Cover";
orders("B", round(C[BarCount-1]) + Otstup, abs(pos));
AS_WRITE_FILE("log.quik", str);
}
}
else if(TimeFrame != Interval()) {
PopupWindow( "Не соответствует временной интервал в настройках АА и в коде",
"ошибка", timeout = 5, left = -1, top = -1 );
}
SetOption( "NoDefaultColumns", 1 );
AddTextColumn(Name(), "Символ", 1.0, colorDefault, colorDefault, 60);
AddColumn( C[BarCount-1], "Последняя цена", 1.2, colorDefault, colorDefault, 100 );
AddColumn( AS_READ_PARAM("Quik_Robot", Name(), "pos"), "Позиция", 1.0, colorDefault,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") > 0, colorGreen,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") < 0, colorRed, colorDefault)), 60);
AddTextColumn(sd, "Сигнал", 1.0, colorDefault, colorDefault, 60);
AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);
AddTextColumn(iz, "Исполнение заявки", 1.2, colorDefault, coloriz, 120 );
|
Заранее благодарен. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Есть видео, но куда выложить? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
[/code]
01.07.2016 11:31:15 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 11:31:35 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 11:34:10 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 11:34:16 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 11:34:21 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 11:36:16 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 12:02:31 BR8 Buy заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 12:03:02 BR8 Buy заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 12:14:39 BR8 Buy заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 15:29:05 BR8 Buy заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 15:29:35 BR8 Buy заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 15:29:43 BR8 Buy заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 15:29:50 BR8 Buy заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 15:46:55 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
01.07.2016 15:47:59 BR8 Short заяка НЕ исполнена ответ сервера={EMPTY}
[code]
лог |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Берешь вот такой код
Код: |
QC = AS_QUIK_CONNECT(Quik);
if(QC == 1)
{
order = AS_QUIK_SEND_SYNC_NEWORDER( "123", // OrderID - Любые цифры
Account,
Client_Code,
"L", // Тип заявки M-рыночная, L-лимитированная
Class,
SecCode,
bs,
pr,
1);
}
AddTextColumn(order, "order"); |
Пишешь в него свои данные акаунта, кода клиента и т.п.
И пытаешься отправить заявку. Вроде у тебя SecCode не правильный. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Спасибо.
Наверно это из за системы корявой.
Переделал и все запустилось.
Спасибо за робота. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
олучилось запустить Робота с сайта , которая без стопов.
Но не получается запустить робота со стопом, система реверсивная на 30м.
Выдает ошибку см. код.
Можно ли сделать стоп, например 0,5 или 0,3 %
Как бороться с сигналами которые пропадают.
и можно ли прикрутить тейк- профит к роботу со стопом.
Код: |
Tickers = "Br8,SBER"; // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами
/////////////
///////////////
// задаем размер лотов, коды и отступ для разных символов
/////////////
if(Name() == "Br8") { //Символ как он называется в Ами
SecCode = "BRQ8";
Class = "SPBFUT";
Lots = 4;
TickS = 0.01; // Минимальный шаг цены торгуемой бумаги
Stop = 1; // стоп в %
Otstup = 0.05; // Заявка будет выставлена хуже текущей цены на Otstup рублей
}
else if(Name() == "SBER") { //Символ как он называется в Ами
SecCode = "SBER03";
Class = "EQBR";
Lots = 0;
TickS = 0.01; // Минимальный шаг цены торгуемой бумаги
Stop = 2; // стоп в %
Otstup = 1; // Заявка будет выставлена хуже текущей цены на Otstup рублей
}
////////////////////////////////////
text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + " " + Name();
pos = AS_READ_PARAM("Quik_Robot", Name(), "pos");
//////////////Система///////////////
// Buy adjustments
bs=Param("BUY Sensitivity",3,2,20,1);
bf=Param("BUY Finetune",2,0.1,20,0.1);
// Sell Adjustments
ss=Param("SELL Sensitivity",3,2,20,1);
sf=Param("SELL Finetune",1,0.1,20,0.1);
// common
fast = 2/(2+1);
slow = 2/(30+1);
//BUY part
dirb=abs(Close-Ref(Close,-bs));
volb=Sum(abs(Close-Ref(Close,-1)),bs);
ERb=dirb/volb;
scb =( ERb*(fast-slow)+slow)^2;
xb = AMA( C, scb );
flb=bf*StDev(xb-Ref(xb,-1),20);
j=xb-Ref(xb,-3);
//SELL part
dirs=abs(Close-Ref(Close,-ss));
vols=Sum(abs(Close-Ref(Close,-1)),ss);
ERs=dirs/vols;
scs =( ERs*(fast-slow)+slow)^2;
xs = AMA( C, scs );
fls=sf*StDev(xs-Ref(xs,-1),20);
k=Ref(Xs,-3)-Xs;
Buy=Cross(j,flb);
Sell=Cross(k,fls);
mycolor=IIf(C>xb,colorGreen,colorRed);
Plot( C, "Close", mycolor,styleNoTitle | styleCandle|styleThick );
Plot(xb,"BUY",colorBlue,1);
Plot(xs,"SELL",colorBlue,1);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;
Sell=Cross(k,fls);
mycolor=IIf(C>xb,colorGreen,colorRed);
Plot( C, "Close", mycolor,styleNoTitle | styleCandle|styleThick );
Plot(xb,"BUY",colorBlue,1);
Plot(xs,"SELL",colorBlue,1);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
// Buy adjustments
bs=Param("BUY Sensitivity",3,2,20,1);
bf=Param("BUY Finetune",2,0.1,20,0.1);
// Sell Adjustments
ss=Param("SELL Sensitivity",3,2,20,1);
sf=Param("SELL Finetune",1,0.1,20,0.1);
// common
fast = 2/(2+1);
slow = 2/(30+1);
//BUY part
dirb=abs(Close-Ref(Close,-bs));
volb=Sum(abs(Close-Ref(Close,-1)),bs);
ERb=dirb/volb;
scb =( ERb*(fast-slow)+slow)^2;
xb = AMA( C, scb );
flb=bf*StDev(xb-Ref(xb,-1),20);
j=xb-Ref(xb,-3);
//SELL part
dirs=abs(Close-Ref(Close,-ss));
vols=Sum(abs(Close-Ref(Close,-1)),ss);
ERs=dirs/vols;
scs =( ERs*(fast-slow)+slow)^2;
xs = AMA( C, scs );
fls=sf*StDev(xs-Ref(xs,-1),20);
k=Ref(Xs,-3)-Xs;
Buy=Cross(j,flb);
Sell=Cross(k,fls);
mycolor=IIf(C>xb,colorGreen,colorRed);
Plot( C, "Close", mycolor,styleNoTitle | styleCandle|styleThick );
Plot(xb,"BUY",colorBlue,1);
Plot(xs,"SELL",colorBlue,1);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;
///////////Конец Системы////////////
Buy1 = Buy1[BarCount - 2] AND L[BarCount - 1] > C[BarCount - 2]*(1 - Stop/100);//Buy1[BarCount - 2] AND L[BarCount - 1] > C[BarCount - 2]*(1 - Stop/100);
Sell1 = Sell1[BarCount - 2];
Short1 = Short1[BarCount - 2] AND H[BarCount - 1] < C[BarCount - 2]*(1 + Stop/100);
Cover1 = Cover1[BarCount - 2];
/// стопы ///
if(pos > 0 AND L[BarCount-1] < AS_READ_PARAM("Quik_Robot", Name(), "price")*(1 - Stop/100))
{
Sell1 = 1;
str = str + " сработал стоп при лонге";
}
else if(pos < 0 AND H[BarCount-1] > AS_READ_PARAM("Quik_Robot", Name(), "price")*(1 + Stop/100))
{
Cover1 = 1;
str = str + " сработал стоп при шорте";
}
///////////// проверка наличия символа в списке для торговли ////////////////
k = 0;
Permit_Ticker = False;
do {
Tick = StrExtract(Tickers, k);
k++;
if(Name() == Tick)
Permit_Ticker = True;
} while(Tick != "");
/////////// Функции ////////////
procedure orders(bs, pr, Lot)
{
connection = 0;
QC = AS_QUIK_CONNECT(Quik);
if (QC == 1)
{
connection = 1;
text = "Есть соединение с сервером";
Color = colorGreen;
}
else if (QC == -1)
{
text = "нет соединения с квиком";
Color = colorRed;
}
else if (QC == -2)
{
text = "нет соединения с сервером";
Color = colorRed;
}
else
{
text = "фигня какая то";
Color = colorRed;
}
if(connection == 1)
{
order = AS_QUIK_SEND_SYNC_NEWORDER( "123", // OrderID - Любые цифры
Account,
Client_Code,
"L", // Тип заявки M-рыночная, L-лимитированная
Class,
SecCode,
bs,
pr,
Lot);
}
if(StrToNum(order) > 100)
{
iz = "исполнена";
coloriz = colorGreen;
str = str + " заяка исполнена" + " ответ сервера=" + order;
if(pos > 0 AND bs == "S") // закрытие лонга
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
AS_WRITE_PARAM("Quik_Robot", Name(), "price", 0);
}
else if(pos == 0 AND bs == "S") // шорт
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "price", Close[BarCount - 2]);
}
else if(pos < 0 AND bs == "B") // закрытие шорта
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
AS_WRITE_PARAM("Quik_Robot", Name(), "price", 0);
}
else if(pos == 0 AND bs == "B") // лонг
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "price", Close[BarCount - 2]);
}
str = str + " позиция на момент исполнения " + pos;
}
else {
iz = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
}
////////// конец Функций //////////
if (TimeFrame == Interval() AND Permit_Ticker)
{
if(Buy1[BarCount-1] AND pos == 0) {
str = str + " Buy";
sd = "Buy";
orders("B", round(C[BarCount-1]) + Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
if(Sell1[BarCount-1] AND pos > 0) {
str = str + " Sell";
sd = "Sell";
orders("S", round(C[BarCount-1]) - Otstup, abs(pos));
AS_WRITE_FILE("log.quik", str);
}
if(Short1[BarCount-1] AND pos == 0) {
str = str + " Short";
sd = "Short";
orders("S", round(C[BarCount-1]) - Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
if(Cover1[BarCount-1] AND pos < 0) {
str = str + " Cover";
sd = "Cover";
orders("B", round(C[BarCount-1]) + Otstup, abs(pos));
AS_WRITE_FILE("log.quik", str);
}
}
else if(TimeFrame != Interval()) {
PopupWindow( "Не соответствует временной интервал в настройках АА и в коде",
"ошибка", timeout = 5, left = -1, top = -1 );
}
SetOption( "NoDefaultColumns", 1 );
AddTextColumn(Name(), "Символ", 1.0, colorDefault, colorDefault, 60);
AddColumn( C[BarCount-1], "Последняя цена", 1.2, colorDefault, colorDefault, 100 );
AddColumn( AS_READ_PARAM("Quik_Robot", Name(), "pos"), "Позиция", 1.0, colorDefault,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") > 0, colorGreen,
IIf(AS_READ_PARAM("Quik_Robot", Name(), "pos") < 0, colorRed, colorDefault)), 60);
AddTextColumn(sd, "Сигнал", 1.0, colorDefault, colorDefault, 60);
AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);
AddTextColumn(iz, "Исполнение заявки", 1.2, colorDefault, coloriz, 120 );
AddTextColumn(order, "Заявка", 1.2, colorDefault, IIf(StrToNum(order) > 100, colorGreen, colorRed), 90);
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А зачем в системе ты по несколько раз переписываешь одно и то-же?
Может оно и не мешает работе кода, но пониманию что у тебя там и какие косяки мешает точно. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Два раза скопировал наверно.
Разобрался с кодом, надо было писать Buy1 Sell1 и т.д |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Подскажите по системе, робот со стопом.
Как сработает стоп 1%, на какой свече, в вашем роботе.
Как сделать чтобы заявки исполнялись по рынку, система реверсивная.
Как сделать чтобы сигналы не пропадали, вход на следующей свече не подходит так как тайм фрейм 30 мин. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В роботе который на сайте
как только текущая цена достигнет уровня стопа так сразу он и исполнится.
Заявки и так отправляются по рынку. Т.е. они лимит, но цена хуже текущей поэтому исполняются по рынку.
На счет не пропадали я не понял. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Таймфрейм 30 минут пока свеча формируется сигнал то появляется то исчезает. А заявка срабатывает по первому появившимся сигналу .
Можно как то сделать что бы он не пропадал. или заявка не отправлялась какое то время.
А по поводу стопов, 0,5 % можно выставлять? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Код: |
Buy1 = Buy1[BarCount - 2] AND L[BarCount - 1] > C[BarCount - 2]*(1 - Stop/100);//Buy1[BarCount - 2] AND L[BarCount - 1] > C[BarCount - 2]*(1 - Stop/100);
Sell1 = Sell1[BarCount - 2];
Short1 = Short1[BarCount - 2] AND H[BarCount - 1] < C[BarCount - 2]*(1 + Stop/100);
Cover1 = Cover1[BarCount - 2];
|
Вот это код открывает позицию на следующей свече? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
AlexLan73
Зарегистрирован: 25.06.2012
Сообщения: 87
|
Сделай
Buy = Ref(Buy1, -1); |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
IzBu
Зарегистрирован: 28.06.2016
Сообщения: 83
|
Мне надо исполнение по рынку, а не наследующей свече. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
AlexLan73
Зарегистрирован: 25.06.2012
Сообщения: 87
|
"Можно как то сделать что бы он не пропадал. или заявка не отправлялась какое то время. "
- Не будет пропадать
- "или заявка не отправлялась какое то время" можно написать фитр по времени, как будешь тестировать? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|