| / | Форум |
|
projectX
30.08.2006 09:46
Что еще интересно это то что он не работает на тестере стратегий
как надо это происходит изза того что тестер отрисовывает уже
сформировавшиеся бары. Вообщем идея такая если high[1]<high[0] &&
low[1]<low[0] то buy в этом случае стоп лос ставим на low[1] после формирования
очередного бара передвигаем его на новый уровени low. Меня интересуют
Ваши мнения что можно улучшить, так как используя такой метот
покупка и продажа происходит почти на каждом баре, нужен какой
то фильтр чтобы действия выплнялись на сильных движениях. Думаю
может както объемы сюда приписать. Но что то пока никаких свежых
идей.
extern double TakeProfit = 11; extern double Lots = 2; extern double TrailingStop = 1; extern double Delta = 3; //+----------------------------------------------------------------+ int start() { double buy, sell; int cnt, ticket, total; // initial data checks --------------------------------------------+ if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<2) { Print("TakeProfit less than 200"); return(0); // check TakeProfit } total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // 000000 00 00 00 00 00 // 00 00 00 00 00 00 0000 // 000000 00 00 0000 00000000 // 00 00 00 00 00 00 // 000000 000000 00 0000000000000000000000000000 if((Low[1]-Delta*Point)<Low[0] && (High[1]+Delta*Point)<High[0] ) { //Ask-TrailingStop*Point,Ask+TakeProfit*Point стоплос работает при =1000 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Low[1]-Delta*Point,Ask+TakeProfit*Point,"priceEX",16384,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); //MODE_TRADES } else Print("Error opening BUY order : ",GetLastError()); return(0); } // 0000000 0000000 00 00 0000000000000000000000000000 // 00 00 00 00 00 // 0000000 00000 00 00 00000000 // 00 00 00 00 0000 // 0000000 0000000 0000000 0000000 00 if((High[1]+Delta*Point)>High[0] && (Low[1]-Delta*Point)>Low[0] ) { //Bid+TrailingStop*Point,Bid-TakeProfit*Point ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,5,High[1]+Delta*Point,Bid-TakeProfit*Point,"priceEX",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); //,MODE_TRADES } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } // 00 // 00 // 0000000 00 000000 0000000 00000000 00 // 00 00 00 00 00 00 00 00 // 00 00 00 00 0000000 000000 00 000 // 00 00 00 00 00 00 000000 // 0000000 00000000 000000 0000000 00000000 0000 for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { if(Low[0]<(Low[1]-Delta*Point)) { OrderClose(OrderTicket(),OrderLots(),Bid,5,Violet); return(0); // exit } // check for trailing stop if(TrailingStop>0) { if(Low[1]>Low[2]) { if(1==1) { OrderModify(OrderTicket(),OrderOpenPrice(),Low[1]-Delta*Point,OrderTakeProfit(),0,Green); return(0); } } } } else // go to short position { if(High[0]>(High[1]+Delta*Point)) { OrderClose(OrderTicket(),OrderLots(),Ask,5,Violet); return(0); // exit } // check for trailing stop if(TrailingStop>0) { if(High[1]<High[2]) { if(1==1) { OrderModify(OrderTicket(),OrderOpenPrice(),High[1]+Delta*Point,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } // the end.
|
|
Интервью с Джимми Тиртавангса (fireflies) Gorez был прав, предсказав, что GBPJPY будет падать в течение многих недель. |
33780 |
Rosh
30.08.2006 10:19
Вот еще - МТС: пишем, тестируем, смотрим
|
|
Daemon
30.08.2006 12:08
Первым делом необходимо сузить территорию поиска. |
|
projectX
30.08.2006 13:00
Таймфрейм 4часа думаю стоп лос там установить можно. тейк профит не подбирал еще проблема в том что на истории этот советник не потестируешь! но если посмотреть на график 4часа usdjpy то мне кажется есть смысл в таком коде. Также может кто-то видит какието явные ошибки. Буду признателен есле мне на них укажут! |
|
Daemon
30.08.2006 14:40
Пробовали ли Вы воспроизвести механизм одного рабочего цикла
внутри четырёхчасового таймфрейма потиково, или по минутным
данным? |
|
projectX
30.08.2006 15:29
Да в данной системе необходимо именно потиковое формирование
бара, если я правильно Вас понял. Т.к. совершение сделки необходимо
именно при преодолении уровня high low. А как воспроизвести механизм
потиково внутри 4часов не имею понятия понятия, пока. Сейчас
поставил его на демо счет. Пока раз пять давал тейк профит.
Вот возможность объеденится, на мой взгляд. Т.к. пока у меня никаких
положительных идей нету. Возможно нужно как то соеденить систему
на которую дал ссылку Roch с этой но я пока не разбирался.
|
|
Daemon
30.08.2006 15:47
Если разобрать весь механизм действия, то по принципу торговли
советник можно назвать работающим "на пробой"? |
|
Vita
30.08.2006 17:36
Смотрю на визуализацию тестирования вашего советника и вижу, что тестер работает точно согласно запрограмированной логике и не отрисовывает сходу нулевой бар, а может моделировать его развитие согласно минутным графикам, например. Всё точно как заявлено разработчиками. Слава богу, ваш алгоритм открытия простой, поэтому наглядно легко определить правоту тестера. Попробуйте. |
|
Michel_S
03.09.2006 23:03
Может быть не совсем в тему, но хочу сказать, что если вы хотите,
чтобы ваш Советник работал на 4-х часовом таймфрейме в процессе
формирования нулевого бара, то Советник нужно приклеплять (и
тестировать) на более мелких таймфреймах, а данные по барам
4-х часового таймфрейма (high[0] && low[0]) брать, используя или
функции iHigh(), iLow(), или данные с текущего таймфрейма, согласовывая их со временем
4-х часовика (в 4-00, в 12-00 и т.п.).
|
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий