Прошу хороших людей помочь

  • Автор темы Talisman
  • Дата начала

Juveman

New member
Re: только пришел

кстати ошибки в чем? в коде омеги? или квик не принимает сгенерированные строчки?

Там получается что все сделки записываются поочериде.
То есть на графике было 50 сделок, вот все и х и записывает в этом случае. А нужно то по одной чтобы поочереди шли (удаляя прошлые перед тем, как появляются новые)
я этого не делал, решив что это будет неудобно. В моей системе осталось все работать именно так, как ты говоришь. Завявки добавляются в файл по мере появления сигналов.

Однако, сделать так, как ты хочешь довольно просто. Я уже написал об это выше. Достаточно просто перед кодом записи в файл поместить строчку с командой очищения этого файла. Конкретно этого я не делал, по причине отсутствия необходимости, но с точки зрения здравого смысла все должно работать так как ты хочешь.
 

Talisman

New member
Re: только пришел

Вписал этот код в стратегию:


buy next bar at highest(h,10) Stop;

FileAppend("C:\omega\orders\quik.txt", "ACCOUNT=L01-00000F00"+";CLIENT_CODE="+NumToStr(557,0)+";TYPE=L;"+"TRANS_ID="+NumToStr(EntryTime/100,0)+
NumToStr(EntryDate(1),0)+";CLASSCODE=EQBR;"+"SECCODE="+GetSymbolName+ ";ACTION=NEW_STOP_ORDER;"+"OPERATION=B;"+"PRICE="+NumToStr(EntryPrice,3)+
";QUANTITY="+NumToStr(1,0));

sell next bar at lowest(l,10) Stop;

FileAppend("C:\omega\orders\quik.txt", "ACCOUNT=L01-00000F00"+";CLIENT_CODE="+NumToStr(557,0)+";TYPE=L;"+"TRANS_ID="+NumToStr(EntryTime/100,0)+
NumToStr(EntryDate(1),0)+";CLASSCODE=EQBR;"+"SECCODE="+GetSymbolName+ ";ACTION=NEW_STOP_ORDER;"+"OPERATION=S;"+"PRICE="+NumToStr(EntryPrice,3)+
";QUANTITY="+NumToStr(1,0));


после чего в текстовом файле вывода появились такие строчки:


ACCOUNT=L01-00000F00;CLIENT_CODE=557;TYPE=L;TRANS_ID=151071030;CLASSCODE=EQBR;SECCODE=EESR;ACTION=NEW_ORDER;OPERATION=S;PRICE=29.985;QUANTITY=5ACCOUNT=L01-00000F00;CLIENT_CODE=557;TYPE=L;TRANS_ID=00;CLASSCODE=EQBR;SECCODE=EESR;ACTION=NEW_STOP_ORDER;OPERATION=B;PRICE=0.000;QUANTITY=1ACCOUNT=L01-00000F00;CLIENT_CODE=557;TYPE=L;TRANS_ID=00;CLASSCODE=EQBR;SECCODE=EESR;ACTION=NEW_STOP_ORDER;OPERATION=S;PRICE=0.000;QUANTITY=1ACCOUNT=L01-00000F00;CLIENT_CODE=557;TYPE=L;TRANS_ID=150;CLASSCODE=EQBR;SECCODE=EESR;ACTION=NEW_STOP_ORDER;OPERATION=B;PRICE=30.690;QUANTITY=1ACCOUNT=L01-00000F00;CLIENT_CODE=557;TYPE=L;TRANS_ID=150;CLASSCODE=EQBR;SECCODE=EESR;ACTION=NEW_STOP_ORDER;OPERATION=S;PRICE=30.690;QUANTITY=1ACCOUNT=L01-00000F00;CLIENT_CODE=557;TYPE=L;TRANS_ID=150;CLASSCODE=EQBR;SECCODE=EESR;ACTION=NEW_STOP_ORDER;OPERATION=B;PRICE=30.690;QUANTITY=1


и т.д.

Но есть ошибки - это неправильные цены, вместо цен есть нули (0,000) как видите выше и не в ту сторону совершена сделка посл. на графике вверх а у меня вниз ?


Вот с чем борюсь собственно.
 

Juveman

New member
прав в чем?
извини конечно, но твои вопросы возникают от элементарного нежелания разобраться в Easy language. Хоть немного сам попробуй разобраться.

неправильные цены и нули вместо цен возникают от использования зарезервированного слова Entryprice.
Ты хотя бы посмотри, что оно означает. Тогда перестанешь удивляться, что цены неправильные.
Цену вычисляй как highest(h,10) и lowest(l,10) соответственно и все будет отлично.
 

Talisman

New member
спасибо

но я ведь и попросил вас написать правильно хотя бы в одну сторону, как нужно, (я пока не силен в языке, опыта в программировании 0) поэтому,и пытаюсь сообща с вами, в надежде, что вы подскажете правильно, как поступить.

Я спросил Вас как сделать:
Вы подсказали, я попробовал, оно не пошло,
я вас просил написать как правильно, (написали бы - я бы не спрашивал)
Поэтому я снова просил детальнее сказать, т.к. оно не работало,
а вы снова пишите, разберись с языком, так если бы я его знал и понимал в сути, я бы сюда вообще не писал.

Я так вижу ситуацию.

Больше можете мне ничего не писать,
судя по вашим ответам придется самостоятельно разибраться. Спасибо.
 

Juveman

New member
если вы хотите чего-то добиться, то разбираться в любом случае предется самостоятельно.

То "как нужно", сильно зависит от того, какая задача поставлена.
А детальнее написано в хелпе омеги и в русских описаниях омеги. Я не буду здесь пересказывать синтаксис и зарезервированные слова омеги только потому что вам лень потратить пол часа на то, чтобы залезть в эти справочники, уж извините.
 

cvimf

New member
Жаль, что вопрос с исполнением приказов внутри бара до конца так и не решён.
Понятно, что buy stop и sell stop можно отпрвлять заранее и они могут исполнитья внутри бара, но потом придется контролировать их исполнение и снимать неисполненные приказы. Для этого, если работать через Квик, то нужно выводить в Эксель таблицу приказов и макросом снимать приказы, которые были выставлены, но не исполннены из-за того, что цена до них не дошла. Если в NetInvestir, то снимать надо через функции API. Т.к Омега на следующий бар выставит новые stop сигналы.
Кроме того, при выставлении заявок заранее, возможна ситуация, когда у лонговой стратегии (только лонг) сработает первым не buy stop, а sell stop и система окажется в шорте, хотя и не должно была.
В этом случае, возможно buy stop выставлять без MarketPosition, а sell stop
при MarketPosition=1. Т.е. покупка будет внутри бара, а выход возможен не ранее, чем бар закроется.
Кстати, а если заменить MarketPosition на CurrentContracts, то запаздывание изменения значения останется?
В общем, вывод один, если программа предназначена для тестирования, а не для создания автомата, то работать будет криво.
 

Juveman

New member
я не очень понял суть вопроса.
Замена MarketPosition на CurrentContracts ничего не даст.
Насчет выводов - не понял. Если цель - тестирование стратегии, то всего этого вообще не нужно. И все там нормально тестируется..
А если цель - создание автомата, то тоже все нормально отрабатывается, но действительно нужен некий посредник между омегой и квиком (эксель или любая другая прога - не важно).
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху