• Рады приветствовать Вас на Форуме Хорошего Сервиса!

    Если вы посетили наш форум впервые, то рекомендуем вам пройти регистрацию и ознакомиться с правилами и условиями на нашем портале!

робот для автоматической тарговли

bandit59

Новичок
#1
package jforex;import java.util.*;import com.dukascopy.api.*;import com.dukascopy.api.IEngine.OrderCommand;import com.dukascopy.api.IIndicators.*;import com.dukascopy.api.IOrder.State;import com.dukascopy.api.IMessage.Type;public class ExpContest implements IStrategy { private IContext context = null; private IEngine engine = null; private IHistory history = null; private IIndicators indicators = null; private IConsole console = null; private IAccount account = null; private double volume = 0.001; private double profitLimit = 0.0 ; private double lossLimit; private double bidPrice; private double askPrice; private long barTime; private double accountEquity; Period slPeriod = Period.ONE_HOUR; public boolean limHours = true; private String lastOrderLabel = null; private int counterBuy, counterSell, consecutiveBuy, consecutiveSell, consecutiveLoss = 0; private double totalTurnOver, initialBalance, maxEquity = 0; Set instSet = new HashSet(); private boolean isActive = false; @Override public void onStart(IContext context) throws JFException { this.engine = context.getEngine(); this.console = context.getConsole(); this.history = context.getHistory(); this.indicators = context.getIndicators(); this.account = context.getAccount(); Instrument selIns = Instrument.EURUSD; instSet.add(selIns); context.setSubscribedInstruments(instSet); console.getOut().println("Volume for 100 pip loss: " + getVolume(selIns,0.0100,0)); } public void onStop() throws JFException { return; } private void print(String s) { console.getOut().println(s); } public void onTick(Instrument instrument, ITick tick) throws JFException { return; } private double getVolume(Instrument instrument, double LossLimit, double LastPrice) throws JFException { double x = 0; x = (int) ( (account.getEquity() * 0.1) / ( LossLimit) * instrument.getPipValue()); //console.getOut().println(LastPrice + " , " + LossLimit + " , " + x/100); double retVal = Math.min(x/100,7); return (retVal); } private String getLabel(Instrument instrument) throws JFException { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); IBar curBar = history.getBar(instrument, Period.ONE_HOUR, OfferSide.BID, 0); calendar.setTimeInMillis(curBar.getTime()); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int min = calendar.get(Calendar.MINUTE); String label = instrument.name(); label = label.substring(0, 2) + label.substring(3, 5); label = label.toUpperCase() + month + "m" + day + "d" + hour + "h" + min; return label; } public void onBar(Instrument instrument, Period period, IBar askbar, IBar bidbar) throws JFException { boolean allow = false; if (instSet.contains(instrument) || engine.getType().equals(IEngine.Type.TEST)) allow = true; if (!allow) return; if(period == Period.ONE_HOUR ) { if (limHours) { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT 0")); calendar.setTimeInMillis(bidbar.getTime()+period.getInterval()); int hr = calendar.get(Calendar.HOUR_OF_DAY); if ((hr != 1) && (hr < 7 || hr > 18)) { if (isActive) console.getOut().println("Not Active " + hr); isActive = false; return; } if (!isActive) { console.getOut().println("Active " + hr); isActive = true; } } if (bidbar.getVolume() == 0) return; if ( engine.getOrders(instrument).size() < 1) { double openPrice = bidbar.getOpen(); double onePip = Math.pow(10, -instrument.getPipScale()); askPrice = askbar.getClose(); bidPrice = bidbar.getClose(); barTime = bidbar.getTime(); lossLimit = 50 * onePip; boolean alBuy = false; boolean alSell = false; double [] bands = this.indicators.bbands(instrument, period, OfferSide.BID, IIndicators.AppliedPrice.CLOSE, 30, 0.8, 0.8, IIndicators.MaType.DEMA, 0); // filter above/below weekly open if (bidPrice > history.getBar(instrument, Period.WEEKLY, OfferSide.BID, 0).getOpen()) alBuy = true; else alSell = true; if (bidPrice > bands[0] && openPrice < bands[0] && alBuy) { profitLimit = this.indicators.atr(instrument, Period.FOUR_HOURS, OfferSide.BID, 30, 0); lossLimit = Math.min(lossLimit, askPrice - history.getBar(instrument, slPeriod, OfferSide.BID, 1).getLow() + onePip*2); buy(instrument, engine, profitLimit, lossLimit, getVolume(instrument,lossLimit, bidPrice)); } else if (bidPrice < bands[2] && openPrice > bands[2] && alSell) { profitLimit = this.indicators.atr(instrument, Period.FOUR_HOURS, OfferSide.BID, 30, 0); lossLimit = Math.min(lossLimit, history.getBar(instrument, slPeriod, OfferSide.BID, 1).getHigh() - bidPrice + onePip*2); sell(instrument, engine, profitLimit, lossLimit, getVolume(instrument,lossLimit, bidPrice)); } } }} public void onMessage(IMessage message) throws JFException { // yoinked parts of this section from Barney to show closed orders if (message != null && message.getType() == IMessage.Type.ORDER_CLOSE_OK) { IOrder order = message.getOrder(); if (order.getProfitLossInUSD() != 0) { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT 0")); calendar.setTimeInMillis(order.getCreationTime()); int hr = calendar.get(Calendar.HOUR_OF_DAY); print("Order " + order.getLabel() + " closed, PL Pips: " + order.getProfitLossInPips() + ", PL USD:" + order.getProfitLossInUSD() + ", Account Equity: " + this.account.getEquity() + ", HR: " + hr); } } } public void onAccount(IAccount account) throws JFException { this.account = account; } private double roundPip(double value) { // rounding to nearest half, 0, 0.5, or 1 int pipsMultiplier = value
 

pexotincev

Пользователь
#2
кто пользуется роботами? отпишитесь, пожалуйста. интересен результат.
 

orcanavt

Местный
#3
Я пользуюсь, дома пыль Румба убирает, результат не фонтан, но приятнее чем самому с веником бегать. )))
Примерно то же и с форексом.
 

orcanavt

Местный
#5
У меня стойкое убеждение что там в рейтингах фейк сплошной.
 

boxter

Пользователь
#6
просто как я понимаю нужно и самому уметь хорошо торговать , чтоб правильно его настроить
 

orcanavt

Местный
#7
Умея хорошо торговать, костыли-советники уже не особо нужны.
 

boxter

Пользователь
#8
ну я согласен. в таком случее можно и без него обойтись. и так за торговлю переживаешь, а тут еще вторая головная боль
 

orcanavt

Местный
#9
Другое дело, если "добре люди" не только вам его дадут, но и верно настроят.
 

dik23

Местный
#10
Другое дело, если "добре люди" не только вам его дадут, но и верно настроят.
А зачем добрым людям это делать?)) Или они деньги тоже заберут?))

п.с. Что касается результатов то смотрим тут, сов много думаю отзывы реальные можно найти.
 

orcanavt

Местный
#11
Да у фрешей неплохая колекция, я себе уе поставил одну на демке, пусть покажет что сможет.
 

boxter

Пользователь
#12
представляю, что вам там покажет. как же, раздавали бы безплатно хорошие советники. другое дело , если бы вы сами себе его создали для своей тс. тогда я еще поверю, что будет какой-то результат
 

Jraser

Местный
#13
представляю, что вам там покажет. как же, раздавали бы безплатно хорошие советники. другое дело , если бы вы сами себе его создали для своей тс. тогда я еще поверю, что будет какой-то результат
А что тут такого в бесплатной раздаче советников?
Если ты сделал себе свой советник, то ты его улучшишь через время по любому и лучше будешь оптимизировать и нет никаких причин скрывать его от других.
Чем советник отличается от аналитики, которую публикуют бесплатно и которая не обязательно бывает плохая.
 

demin

Пользователь
#14
Конечно совсем необязательно покупать советник, когда их такое множество бесплатно предлагают. Главное его оптимизировать и правильно настроить. Пусть себе работает круглосуточно. прибыль приносит.
 

Nastj

Пользователь
#15
Конечно совсем необязательно покупать советник, когда их такое множество бесплатно предлагают. Главное его оптимизировать и правильно настроить. Пусть себе работает круглосуточно. прибыль приносит.
Хорошо, конечно, если робот прибыль приносит. Но ведь частенько совы сливают депозиты. Так что у меня к АТС отнлшение такое, что лучше без них обходиться.
 

Jraser

Местный
#16
Хорошо, конечно, если робот прибыль приносит. Но ведь частенько совы сливают депозиты. Так что у меня к АТС отнлшение такое, что лучше без них обходиться.
Так странно это слышать. Все говорят, что для успешного трейдинга нужна обязательно торговая система, а когда эта торговая система алгоритмизирована и ее безошибочно реализует автомат, то все-равно частенько происходит слив.
В чем подвох, не пойму.
 

bidsasha

Местный
#17
Так странно это слышать. Все говорят, что для успешного трейдинга нужна обязательно торговая система, а когда эта торговая система алгоритмизирована и ее безошибочно реализует автомат, то все-равно частенько происходит слив.
В чем подвох, не пойму.
Подвох в том, что алгоритм торгового робота не может быть универсален. Он рассчитан или на флет или на тренд. Опредлить общую ситуацию робот не может. Так думаю. В этом и причина сливов роботами.
 

Vitaliy

Новичок
#18
А я думаю просто никому не выгодно чтобы робот приносил доход, особенно речь о тех роботах, которые разрабатывает ДЦ...вот потому я как то и не пользуясь ими... Нет у меня доверия к ним)
 

Jraser

Местный
#19
Подвох в том, что алгоритм торгового робота не может быть универсален. Он рассчитан или на флет или на тренд. Опредлить общую ситуацию робот не может. Так думаю. В этом и причина сливов роботами.
Робот может определить все, что может человек определить, если он это делает осознанно и по определенному алгоритму.
Для примера по моей ТС я на дневки достаточно простым способом определяю направление торговли и есть вполне определенные критерии, когда определенного направления торговли нет и можно не торговать и по сути мне все-равно как там что на рынке называется, тренд или флет.
Тем более никто не мешает включать советник только при определенных ситуация, как например есть советники торгующие на низкой волатильности по ночам, вот их на ночь и ставят.
 

Рыжий

Местный
#20
Скорее робот может определить то, что додумался выписать ему в правила человек. Потому они и столь ограничены.