Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
Автор |
Сообщение |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
VAE писал(а): |
000 писал(а): |
Ошибка не в этих строках. Вероятно раньше. |
Подскажите как найти ошибку? |
Хм. Не знаю. Кидай сюда свой код. Посмотрю. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
000 писал(а): |
VAE писал(а): |
000 писал(а): |
Ошибка не в этих строках. Вероятно раньше. |
Подскажите как найти ошибку? |
Хм. Не знаю. Кидай сюда свой код. Посмотрю. |
Торговля только фьючерсом РТС RIM2.
Filter = 1;
TimeFrame = 60*5; // таймфрейм в секундах.
Account = "SPBFUTXXXXX"; // номер счета.
Client_Code = "SPBFUTXXXXX"; // код клиента.
Quik = "C:\Quik5"; // Путь к квику.
Tickers = "RIM20"; // Символ как он называется в ами
if(Name() == "RIM20") { //Символ как он называется в ами
SecCode = "RIM2";
Class = "SPBFUT";
Lots = 1; // Число торгуемых лотов символа RIM2
TickS = 5; // Минимальный шаг цены контракта
Otstup = 100; // Заявка будет выставлена хуже текущей цены на Otstup пунктов
}
Cond1= Ref(HHV(H,6),-2)-Ref(LLV(L,6),-2)<200; // Пусть, консолидация - это состояния при котором цена была в диапазоне +/- 100 пунктов последние 30 мин.
DayEnd = Ref(Day(),1) != Ref(Day(), 2) OR Day() != Ref(Day(), 1); //Последний бар дня
Buy = Cross( Close, EMA(Close, 157));// Покупка выше скользящей средней
Sell=DayEnd;
SellPrice=C;
Short=Sell = Cross( EMA(Close, 157), Close); // Продажа ниже скользящей средней
ShortPrice=O;
Cover=DayEnd;
CoverPrice=C;
ApplyStop(stopTypeLoss, stopModePercent, 0.2,0.2, True );
ApplyStop(stopTypeProfit, stopModePercent, 1.6,1.6, True );
////////////////////////////////////
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_SYNCNE_WORDER (007)"; // 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(Buy[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(Sell[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(Short[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(Cover[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
|
В общем у тебя в системе полно косяков.
Код: |
Cond1= Ref(HHV(H,6),-2)-Ref(LLV(L,6),-2)<200; // Пусть, консолидация - это состояния при котором цена была в диапазоне +/- 100 пунктов последние 30 мин.
DayEnd = Ref(Day(),1) != Ref(Day(), 2) OR Day() != Ref(Day(), 1); //Последний бар дня
Buy = Cross( Close, EMA(Close, 157));// Покупка выше скользящей средней
Sell=DayEnd;
SellPrice=C;
Short=Sell = Cross( EMA(Close, 157), Close); // Продажа ниже скользящей средней
ShortPrice=O;
Cover=DayEnd;
CoverPrice=C;
ApplyStop(stopTypeLoss, stopModePercent, 0.2,0.2, True );
ApplyStop(stopTypeProfit, stopModePercent, 1.6,1.6, True );
|
Первая строка. Зачем она? у тебя в дальнейшем Cond1 нигде не используется.
Вторая.
Вот такую конструкцию в роботе использовать нельзя
Код: |
DayEnd = Ref(Day(),1) != Ref(Day(), 2) OR Day() != Ref(Day(), 1); //Последний бар дня
|
Робот имеет дело с последним баром и никакого следующего завтрашнего не видит.... Поэтому Ref(Day(), 1) запрещено....
Если надо выход в конце дня, то можно типа
Код: |
DayEnd = NimeNum() >= 234500; |
Тогда конец дня будет считаться в начале 5 минутной свечи которая начинается в 23:45 Это конечно не совсем конец дня...
Можно так же воспользоваться функцией Now()
Код: |
DayEnd = Now(format = 4) > 234700; |
Тогда надо следить, чтобы время на компе было правильное.
Код: |
SellPrice=C;
ShortPrice=O;
CoverPrice=C; |
В роботе вообще не надо.
Зря совсем убрал смещение сигналов при входе по скользящим. Оно необходимо.
Код: |
Buy = Ref(Cross( Close, EMA(Close, 157)), -1);
Short = Sell = Ref(Cross( EMA(Close, 157), Close), -1); |
И если используешь стопы ApplyStop(), то надо не забывать их активировать.
Для этого напиши в конце Equity(1);
В итоге. Робот и у него вместо
Код: |
//////////////Система///////////////
Buy1 = Cross(C, MA(C, 40)) AND C > MA(C, 20);
Sell1 = Cross(MA(C, 20), C);
Short1 = Cross(MA(C, 40), C) AND C < MA(C, 20);
Cover1 = Cross(C, MA(C, 20));
///////////Конец Системы////////////
Buy1 = Ref(Buy1, -1);
Sell1 = Ref(Sell1, -1);
Short1 = Ref(Short1, -1);
Cover1 = Ref(Cover1, -1);
////////////////////////////////////
|
Вставляшь
Код: |
//////////////Система///////////////
DayEnd = NimeNum() >= 234500; //Последний бар дня
Buy = Ref(Cross( Close, EMA(Close, 157)), -1); // Покупка выше скользящей средней
Short = Sell = Cross( EMA(Close, 157), Close); // Продажа ниже скользящей средней
Sell = Sell OR DayEnd;
Cover = DayEnd;
ApplyStop(stopTypeLoss, stopModePercent, 0.2,0.2, True );
ApplyStop(stopTypeProfit, stopModePercent, 1.6,1.6, True );
Equity(1);
////////////////////////////////////
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
Спасибо большое я твой должник |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
Люди подскажите. При проверке выдает ошибку error 30 в этой строке
Tickers == "RIM" ; // Символ как он называется в ами |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну.
Как у тебя в базе Ами символ называется?
Однако даже если у тебя в базе символа RIM нет, ошибку Ами показывать не будет. Вероятно в предыдущей строке косяк.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
000 писал(а): |
Ну.
Как у тебя в базе Ами символ называется?
Однако даже если у тебя в базе символа RIM нет, ошибку Ами показывать не будет. Вероятно в предыдущей строке косяк.... |
В ами он так и называется.
Filter = 1;
TimeFrame = 300; // таймфрейм в секундах.
Account = "SPBFUT00"; // номер счета.
Client_Code = "SPBFUT00"; // код клиента.
Quik = "C:\Quik5\";// Путь к квику.
Путь к квику вроде бы верный, номер счета тоже, код клиента беру из в меню "торговля"/"настройка счетов" и нажмите кнопку "добавить все". Торговый счет будет выбираться сам, код клиента нужно выбрать из выпадающего списка. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
Вот только он почему то сам автоматом не выбирается, там четыре варианта, перепробовал все, но и это не помогает, одна и та же ошибка |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Путь как раз не верный. В пути надо использовать двойноые бакслеши "C:\\Quik5" |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
000 писал(а): |
Путь как раз не верный. В пути надо использовать двойноые бакслеши "C:\\Quik5" |
Quik = "C:\\Quik5\";// Путь к квику. Олег пишет тоже самое |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Тфу, блин. А какого у тебя в этой строке
бвойное = ??? Тут должно быть одно....
И путь снова неправильный.
Я же написал. Надо так "C:\\Quik5" |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
000 писал(а): |
Тфу, блин. А какого у тебя в этой строке
бвойное = ??? Тут должно быть одно....
И путь снова неправильный.
Я же написал. Надо так "C:\\Quik5" |
Он тогда целую кучу ошибок выдает. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот так надо
Код: |
Filter = 1;
TimeFrame = 300; // таймфрейм в секундах.
Account = "SPBFUT00"; // Номер счета
Client_Code = "SPBFUT00"; // Код Клиента
Quik = "C:\\Quik5"; // путь к Квику
Tickers = "RIM";
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
000 писал(а): |
Вот так надо
Код: |
Filter = 1;
TimeFrame = 300; // таймфрейм в секундах.
Account = "SPBFUT00"; // Номер счета
Client_Code = "SPBFUT00"; // Код Клиента
Quik = "C:\\Quik5"; // путь к Квику
Tickers = "RIM";
|
|
Ладно буду разбираться. Спасибо большое |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
VAE
Зарегистрирован: 04.06.2012
Сообщения: 17
|
Олежок я понял в чем дело Quik_coonect, он не видит сам quik Вот только почему делаю, все точно как ты сказал?? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|