Начать новую тему Ответить на тему |
Список форумов 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
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну, в принципе можно исполнить такой сигнал. Только имей ввиду, что они мало того, что появляются задним числом, так еще и могут пропадать. Т.е. робот у тебя сделку совершил, а потом бактэст ее не подтвердит. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Skornet
Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все
|
Добрый день Олег!
Извини пожалуйста, что не ответил сразу уже не было сил в такое позднее (или раннее) время.
Буду очень благодарен, если у тебя получиться сделать. Ещё если можно с кратким пояснениям (небольшой ликбез), чтобы в следующий раз знать куда копать.
А то, что она иногда перерисовывает сигналы меня это устраивает. Так то любая торговая система может ошибаться, как и человек. А сделаю фильтр этих ошибок будет меньше.
И Большущее Спасибо за то время которое, ты мне уделяешь. Буду очень благодарен если получиться решить. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Skornet
Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все
|
Добрый вечер Олег!
Вы про меня забыли или не решается? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В общем отослал. Только сразу говорю. Ничего хорошего из этого не получится.
Ну попробуй. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Skornet
Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все
|
Спасибо Вам Олег Большое ещё раз. Попробую завтра и отпишусь.
Я 5 минут назад увидел сообщение. Посмотрел Hold в хелпе, но так ни хрена и не понял сути, хотя хелп в переводе от i-ir по-моему.
Ещё спрошу напоследок. На форуме предлагали русификатор в "прочих", отправлял в личку автору сообщение два раза и оно зависает в исходящих. В чём может быть причина ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Значит он его не прочитал.
Сообщения в личку после отправки попадает в исходящие и лежит там до тех пор пока адресат не прочитает. После прочтения уходит в отправленные. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Зря конечно вы тут занимаетесь ковырянием системы с заглядыванием в будущее. Scornet, в реале она покажет только слив, так как реальная торговля не будет совпадать с бектестом, и обязательно в худшую сторону. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
BFG
Зарегистрирован: 17.03.2014
Сообщения: 17
|
Добрый день, уважаемый!
Благодарю за сей полезный ресурс и выложенного робота через апишку!
Прошу помочь в следующем:
нашел на бескрайних просторах инета системку, оттестил результаты порадовали. В робота внес параметры системы:
//===============system================
k = Optimize("K",Param("K",2,0.25,5,0.25),0.25,5,0.25);
Per= Optimize("atr",Param("atr",20,3,20,1),3,20,1);
HACLOSE=(O+H+L+C)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
HaHigh = Max( H, Max( HaClose, HaOpen ) );
HaLow = Min( L, Min( HaClose, HaOpen ) );
Plot(NW, "", IIf(Trend == 1, 27, 4), 4);
Buy=NW<HACLOSE;
Sell=NW>HACLOSE;
SellPrice=ValueWhen(Sell,C,1);
BuyPrice=ValueWhen(Buy,C,1);
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy );
Short=Sell;
Cover=Buy;
=========
Но заявки робот не ставит. Если добавить вот этот кусочек:
Buy = Ref(Buy, -1);
Sell = Ref(Sell, -1);
Short = Ref(Short, -1);
Cover = Ref(Cover, -1);
то ставит, но если систему с данным куском прогнать в бэктесте результаты становятся мягко говоря не очень.Проверял на тесте как ставятся заявки, визуально норм, но на бою както стремно
Вопрос: это нормальное положение дел или забыть о такой системе и ставить руками? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Привет.
В твоей системе есть 2 строки
SellPrice=ValueWhen(Sell,C,1);
BuyPrice=ValueWhen(Buy,C,1);
Это какая то бессмысленная фигня.
Кроме того я не понял что такое NW.
Про тестирование системы.
В робота необходимо добавлять
Buy = Ref(Buy, -1);
Sell = Ref(Sell, -1);
Short = Ref(Short, -1);
Cover = Ref(Cover, -1);
Можно и протестировать с таким дополнением, но тогда цены сделок должны быть по Open свечи. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
BFG
Зарегистрирован: 17.03.2014
Сообщения: 17
|
NW - это из индюка, который описан же в этой же системе.
В общем во вложении она целиком со всякимим приблудами. Из нее я и пытаюсь сделать робота. Если у тебя будут предложения как ее оптимизировать и т.д. буду признателен
То есть 2 строки:
SellPrice=ValueWhen(Sell,C,1);
BuyPrice=ValueWhen(Buy,C,1);
вообще можно убрать?
Ты писал: Можно и протестировать с таким дополнением, но тогда цены сделок должны быть по Open свечи. - то есть если в настройках бэк теста поставить цены сделок по 'Open', то результаты должны сойтись с эталонной системой? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Да. При условии, что в системе не будет строк
SellPrice=...;
BuyPrice=...; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
BFG
Зарегистрирован: 17.03.2014
Сообщения: 17
|
Опять нужна твоя помощь, есть код:
Код: |
SD = StochD(8, 3, 3);
MH = MACD(8, 21) - Signal(8, 21, 5);
trendup = IIf(MH > 0 OR (MH > 0 AND MH > Ref(MH, -1)) AND RSI(3) >50 AND SD < 80 AND SD > Ref(SD, -1) AND ValueWhen(C,O<C), colorBlue, colorWhite);
trendcolor = IIf(MH < 0 OR (MH < 0 AND MH < Ref(MH, -1)) AND RSI(3) <50 AND SD > 20 AND SD < Ref(SD, -1) AND ValueWhen(C,O>C), colorRed, trendup);
Plot( C, "Close", trendcolor, styleCandle | styleThick );
no = 1 ;//Optimize("Swing",Param("Swing", 5, 1, 55),1,55,1);//,2,0.25,5,0.25),0.25,5,0.25);
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(), colorBlue, styleStaircase);
//Buy = Cross(C,res) ;
//Sell = Cross(sup,C) ;
Buy=Cross(Close,tsl) ;
Sell=Cross(tsl,Close) ;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short = Sell;
Cover = Buy;
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);
Buy = Ref(Buy,-1);
Sell = Ref(Sell,-1);
Short = Ref(Short,1);
Cover = Ref(Cover,-1);
|
Вроде и стоит Exrem, но сигнал все равно "скачет", что нужно дописать чтобы заявка выставлялась на закрытии сигнальной свечи? |
Последний раз редактировалось: BFG (Пн Мар 24, 2014 10:33 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Жди недлю. Потом непомни. Ща со временем туго. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
BFG
Зарегистрирован: 17.03.2014
Сообщения: 17
|
Как я понял загвоздка в параметре tsl
Нашел в нете систему без перерисования и по аналогии с ней добавил перед сигналами следующее:
Код: |
tsl[0] = 0;
tsl[BarCount-1] = Null;
Buy = tsl<Close;
Sell = tsl>Close;
....... |
Сигнал перестал скакать, НО перестал работать функционал по постановке заявок То есть при запуске АА не пишет позу и на сигналы не реагирует
Need help |
|
|
Посмотреть профиль Отправить личное сообщение |
|
mtrader
Зарегистрирован: 23.02.2014
Сообщения: 23
|
Доброй ночи!
Олег, помогай)
Не хочет робот ставить заяки на открытии следующего бара.
Пробовал ставить и BuyPrice=ShortPrice=Open и вариант как у тебя в роботе, всё равно выставляет заявки с теми интервалами, что и в анализаторе в настройках. Как быть? Я торгую на 15 минутках, хочется чтобы заявки исполнялись на открытии следующего бара, то есть в 10:15:01, 10:30:01 итд.
Код:
Код: |
_SECTION_BEGIN("Quik_Robot3");
Filter = 1;
TimeFrame = 60*15;
Account ="000000000000";
Client_Code = "00000";
Quik = "C:\\Trader\\Info";
Tickers = "SBER";
/////////////Иструменты////////////////
if(Name() == "SBER") {
SecCode ="SBER";
Class = "TQBR";
Lots = 1;
Lots2 = 5;
TickS = 0.01;
Otstup = 0.10;
LimB = 6;
LimS = 6;
}
/////////////////Прорисовка///////////////////
_N(Title = StrFormat(Name()+" - "+Date()+" Open %g, Hi %g, Lo %g, Close %g (%.1f%%) Vol " +WriteVal( V, 1.0 ) +" {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 )) ));
Plot( C, "Close", ParamColor("Color", colorDarkGrey ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
//BuyPrice=SellPrice=CoverPrice=ShortPrice=Open;
per = 20;//Optimize( "Periods",10, 10, 200,10 );
per2 =20;//Optimize( "Periods2",10, 5, 100, 5);
kl = 1;//Optimize ("Koef ATR",4,1,10,1);
perATR = 6;//Optimize ("ATR",6,1,20,1);
rateOfSure=0;
////////////Прорисовка/////////////////////
Plot( LLV(C,per) , "Close", colorWhite ,styleLine);
Plot( HHV(C,per) , "Close", colorWhite ,styleLine);
Plot( LLV(C,per2) , "Close",colorOrange ,styleLine);
Plot( HHV(C,per2) , "Close",colorOrange ,styleLine);
////////////Начальные значения//////////////////////
SetBarsRequired(sbrAll, sbrAll);
ValATR = kl*ATR(perATR);
SellSignal = CoverSignal = BuySignal = ShortSignal = 0;
BuyPrice = SellPrice = ShortPrice = CoverPrice = Ref(Open,-1);
pos = BuyInSignal = ShortInSignal = dealPrice = 0;
//////////////////Сигналы/////////////////////////
Buy1 = условие....;
Sell1= условие....;
Short1 = условие....;
Cover1 = условие....;
Buy2 = условие....;
Short2 =условие....;
//"Покупка: "+BuySignal+" "+BuyInSignal+" "+SellSignal;
//"Продажа: "+ShortSignal+" "+ShortInSignal+" "+CoverSignal;
"АТR"+ValATR;
/////////////Конец системы///////////////////
Buy1 = Ref(Buy1, -1);
Sell1 = Ref(Sell1, -1);
Short1 = Ref(Short1, -1);
Cover1 = Ref(Cover1, -1);
Buy2 = Ref(Buy2, -1);
Short2 = Ref(Short2, -1);
////////////////////////////////////////////
text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + " " + Name();
pos = AS_READ_PARAM("Quik_Robot" , Name(), "pos");
SdID = AS_READ_PARAM("Quik_Robot", Name(), "BarID");
BarID = LastValue(Ref(DayOfWeek()*1000000 + TimeNum(), -1));
///////////// проверка наличия символа в списке для торговли ////////////////
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)
{
testStr =Account +" "+Client_Code+" "+Class+" "+SecCode+" "+bs+" "+ Lot +" "+pr;
AS_WRITE_FILE("C://Trader//transactions.log", testStr);
order = AS_QUIK_SEND_SYNC_NEWORDER( "123", // OrderID - Любые цифры
Account,
Client_Code,
"L", // Тип заявки M-рыночная, L-лимитированная
Class,
SecCode,
bs,
pr,
Lot);
}
if (pos != 0) {
dealPrice = pr;
}
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(), "BarID", 0);
}
else if(pos == 0 AND bs == "S") // шорт
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", 0);
AS_WRITE_PARAM("Quik_Robot",Name(),"entPr",pr);
}
else if(pos < 0 AND bs == "B") // закрытие шорта
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", 0);
}
else if(pos == 0 AND bs == "B") // лонг
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", 0);
AS_WRITE_PARAM("Quik_Robot",Name(),"entPr",pr);
}
else if(pos > 0 AND bs == "B") // доливка к покупке
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", pos + Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", BarID);
}
else if(pos < 0 AND bs == "S") // доливка к шорту
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", pos - Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", BarID);
}
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", C[BarCount-1] + Otstup, Lots);
AS_WRITE_FILE("C://Trader//transactions.log", str);
}
else if(Sell1[BarCount-1] AND pos > 0) {
str = str + " Sell";
sd = "Sell";
orders("S", C[BarCount-1] - Otstup, abs(pos));
AS_WRITE_FILE("C://Trader//transactions.log", str);
}
else if(Short1[BarCount-1] AND pos == 0) {
str = str + " Short";
sd = "Short";
orders("S", C[BarCount-1] - Otstup, Lots);
AS_WRITE_FILE("C://Trader//transactions.log", str);
}
else if(Cover1[BarCount-1] AND pos < 0) {
str = str + " Cover";
sd = "Cover";
orders("B", C[BarCount-1] + Otstup, abs(pos));
AS_WRITE_FILE("C://Trader//transactions.log", str);
}
else if(Buy2[BarCount-1] AND pos > 0 AND pos < LimB AND BarID != SdID) {
str = str + " Buy (доливка)";
sd = "BuyIn";
orders("B", C[BarCount-1] + Otstup,LimB-pos);
AS_WRITE_FILE("C://Trader//transactions.log", str);
}
else if(Short2[BarCount-1] AND pos < 0 AND abs(pos) < LimS AND BarID != SdID) {
str = str + " Short (доливка)";
sd = "ShortIn";
orders("S", C[BarCount-1] - Otstup, LimS - abs(pos));
AS_WRITE_FILE("C://Trader//transactions.log", 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, 120);
AddTextColumn(iz, "Исполнение заявки", 1.2, colorDefault, coloriz, 120 );
AddTextColumn(order, "Заявка", 1.2, colorDefault, IIf(StrToNum(order) > 100, colorGreen, colorRed), 90);
AddColumn( AS_READ_PARAM("Quik_Robot",Name(),"entPr"),"Entry price",1.2,colorDefault,colorDefault,60);
AddColumn(Short2, "short",1.0,colorDefault,colorDefault,60);
AddColumn(Buy2,"buy",1.0,colorDefault,colorDefault,40);
_SECTION_END(); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов 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 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|