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

    Присоединяйтесь к сообществу трейдеров прямо сейчас

    • Научитесь зарабатывать и приумножать свои финансы
    • Поделитесь опытом торговли Forex с начинающими трейдерами
    • Имеются вопросы ? Не стесняйтесь ! Пройдите регистрацию задайте вопрос и получите ответ
    • Общайтесь и заводите новые знакомства

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

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<Instrument> instSet = new HashSet<Instrument>();
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 <= 20 ? 10000 : 100;
int rounded = (int) (value * pipsMultiplier * 10 + 0.5);
rounded *= 2;
rounded = (int) ((rounded) / 10d + 0.5d);
value = (rounded) / 2d;
value /= pipsMultiplier;
return value;
}

// limit orders that expire, paying the spread is for suckers.

public void sell(Instrument instrument, IEngine engine, double takeProfitPipLevel, double endLossPipLevel, double volumeParam) throws JFException {
engine.submitOrder(getLabel(instrument), instrument, IEngine.OrderCommand.PLACE_OFFER, volumeParam, roundPip(askPrice), 3, roundPip(bidPrice
+ endLossPipLevel), roundPip(bidPrice - takeProfitPipLevel), barTime + 3600000*3);
}

public void buy(Instrument instrument, IEngine engine, double takeProfitPipLevel, double endLossPipLevel, double volumeParam) throws JFException {
engine.submitOrder(getLabel(instrument), instrument, IEngine.OrderCommand.PLACE_BID, volumeParam, roundPip(bidPrice), 3, roundPip(askPrice
- endLossPipLevel), roundPip(askPrice + takeProfitPipLevel), barTime + 3600000*3);
}
}

---------- Добавлено в 10:09 ---------- Предыдущее сообщение было размещено в 10:01 ----------

это мой робот он агресивный платформа ява

---------- Добавлено в 10:12 ---------- Предыдущее сообщение было размещено в 10:09 ----------

реклама
 
Последнее редактирование модератором:

bandit59

Новичок
#2
перепешите робота откройте демо счет в дюкасу занесите его в стратегию я его тестировал за1 год с1000 1500000$
 

WUNNER

Местный
#5
демо счет это виртуалный счет так что ты не чего не теряеш
Для меня демо счёт это игрушка и не более. У меня есть роботы, которыми я на демо свободно делаю сто процентов прибыли за день или два, постоянно и без просадок. И эти роботы не приносят мне прибыли на реале, причём у брокеров не русских. Или блокируют сову или на реале мешают так, что нет никакой прибыли. Причём брокеры нормальные, не отстойные.
..............
не чего не теряеш
Теряю! Время! Оно дороже! И причём бездарно, впустую(на демо).
 

bandit59

Новичок
#6
у меня есть новый робот приносит прибыль 200% в месяц а за который ты пишеш это бред и почему для тебя демо счет игрушка чем он отличается от реала

---------- Добавлено в 06:51 ---------- Предыдущее сообщение было размещено в 06:41 ----------

ты просто раскачеваеш тему если для тебя время деньги что тогда ты на форуме делаеш:fudge:
 

maverick666

Местный
#7
Для меня демо счёт это игрушка и не более. У меня есть роботы, которыми я на демо свободно делаю сто процентов прибыли за день или два, постоянно и без просадок. И эти роботы не приносят мне прибыли на реале, причём у брокеров не русских. Или блокируют сову или на реале мешают так, что нет никакой прибыли. Причём брокеры нормальные, не отстойные.
..............

Теряю! Время! Оно дороже! И причём бездарно, впустую(на демо).
Может закинешь на форум ботов которыми тебе на реале не дают работать,а на демо косят они, все равно же без дела валяются?;)
 

WUNNER

Местный
#9
Может закинешь на форум ботов которыми тебе на реале не дают работать,а на демо косят они, все равно же без дела валяются?;)
Поверь мне. Ты нигде не сможешь заработать арбитражником-скальпером. НИГДЕ. Я потратил много времени на прогон на реалах у разных брокеров. Потратил несколько месяцев. Тебе нечего делать и хочется просто поиграться? Поставь WOC в тестер и балдей, эффект тот же.
 

bandit59

Новичок
#10
что можеш сказать за саксо банк и за дюкас

---------- Добавлено в 07:23 ---------- Предыдущее сообщение было размещено в 07:17 ----------

что можеш сказать за дюкас и саксо банк

---------- Добавлено в 07:25 ---------- Предыдущее сообщение было размещено в 07:23 ----------

что можеш сказать за дюкас и саксо банк