Доработка ботов (советников, индикаторов) vol. 2

Surem

Почетный гражданин

oleg777

Местный знаток
Привет всем , если есть у кого то время довести до ума этого бота, работает по принципу теории вероятности, открывает сделки наугад, при проигрыше увеличивает лот по кф, есть стоп и тейк, при закрытии в плюс лот обновляется. Заранее благодарен тому кто исправит ошибки
// define initial lot size and lot increase coefficient
double initialLot = 0.01;
double lotIncreaseCoeff = 2.0;

// define stop loss and take profit levels
int stopLoss = 50;
int takeProfit = 100;

// initialize magic number for the first trade
int magicNumber = 1234;

// initialize lot size and trade direction
double lot = initialLot;
int tradeDirection;

// loop through the trading cycle
while (true) {
// randomly determine trade direction (buy or sell)
tradeDirection = MathRand() % 2;

// open new trade with random trade direction and lot size
OrderSend(Symbol(), tradeDirection, lot, Ask, 3, Bid - stopLoss * Point, Bid + takeProfit * Point, "My order", magicNumber, 0, Green);

// wait for trade to close
while (OrderSelect(0, SELECT_BY_MAGIC, MODE_TRADES) && OrderCloseTime() == 0) {
Sleep(1000);
}

// check if trade closed in profit
if (OrderProfit() > 0) {
// reset lot size to initial value
lot = initialLot;
} else {
// increase lot size by the given coefficient
lot *= lotIncreaseCoeff;
}

// increment magic number for the next trade
magicNumber++;

// wait for a short period before opening the next trade
Sleep(5000);
}
 

Surem

Почетный гражданин
Приветствую человеки! В моей последней просьбе оказывается был косяк и индюк декомпил, ну и ладно уж. А сейчас можно добавить строчки в настройках для всех тф, данные по текущему уже показывает автоматически.
 

Вложения

  • мтф2.JPG
    мтф2.JPG
    33,8 КБ · Просмотры: 62
  • mn MaDist.mq4
    mn MaDist.mq4
    7,1 КБ · Просмотры: 39

nayilz

Интересующийся
Уважаемые знатоки! Можно ограничить размер максимального лота для этого советника и вывести в настройки? Чтобы после достижения этого максимального лота советник дальше открывал только исходный размер лота. Посмотрите пожалуйста!
 

Вложения

Lord1

Прохожий
Добрый день, помогите пожалуйста реализовать пуш алерт на индикатор MACD, алерт должен срабатывать при пересечении быстрой скользящей уровня 0. Заранее спасибо.
 

Вложения

azmir

Местный житель
Уважаемые знатоки! Можно ограничить размер максимального лота для этого советника и вывести в настройки? Чтобы после достижения этого максимального лота советник дальше открывал только исходный размер лота. Посмотрите пожалуйста!
Проверьте
 

Вложения

olgert

Местный знаток
Привет! Для золота можешь сет подобрать настройки?
Там ничего сложного нет, если знаешь работу инструмента. Все индивидуально. И потом , оптимизировать продукт должен уметь каждый, кто пришел на фору не на один день.
 

Akvisto

Активный участник
Здравствуйте, не могли бы вы исправить код, пожалуйста? Большое спасибо

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}

//+------------------------------------------------------------------+
//| Expert start function |
//+------------------------------------------------------------------+
int start()
{
double ema50, ema100, price, stoch;
int tickets, slippage, total_orders, martingale_multiplier;
double lot, stop_loss, take_profit, order_open_price;
bool buy_signal, sell_signal, buy_order_open, sell_order_open, martingale_enabled;
total_orders = OrderTotal();
slippage = 3;
lot = 0.01;
stop_loss = 30;
take_profit = 80;
martingale_enabled = false;
martingale_multiplier = 2;

for (int i = total_orders - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber()) continue;

if (OrderType() == OP_BUY && OrderCloseTime() == 0)
{
buy_order_open = true;
order_open_price = OrderOpenPrice();
}
if (OrderType() == OP_SELL && OrderCloseTime() == 0)
{
sell_order_open = true;
order_open_price = OrderOpenPrice();
}
}
}

// Calculate EMA and Stochastic
ema50 = iMA(NULL, PERIOD_M1, 50, 0, MODE_EMA, PRICE_CLOSE, 0);
ema100 = iMA(NULL, PERIOD_M1, 100, 0, MODE_EMA, PRICE_CLOSE, 0);
price = Ask;
stoch = iStochastic(NULL, PERIOD_M1, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0);

// Check for buy signal
buy_signal = (ema50 > ema100) && (price < ema50) && (stoch > 20);

// Check for sell signal
sell_signal = (ema50 < ema100) && (price > ema50) && (stoch < 80);

if (buy_signal && !buy_order_open && !sell_order_open)
{
tickets = (int)MathCeil(AccountFreeMarginCheck(Symbol(), MODE_BUY, lot) / MarketInfo(Symbol(), MODE_MARGINREQUIRED) / lot);
if (martingale_enabled) {
double new_lot = NormalizeDouble(lot * MathPow(martingale_multiplier, tickets - 1), 2);
if (new_lot <= 0) {
new_lot = 0.01;
}
if (new_lot <= MarketInfo(Symbol(), MODE_MAXLOT))
{
lot = new_lot;
}
else
{
lot = MarketInfo(Symbol(), MODE_MAXLOT);
}
}
 

Veroniy

Местный житель
А можно сюда добавить rsi
 

Вложения

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

PolyVi

Новичок форума
Доброго Всем Дня, помогите пожалуйста - индикатор работает на валютах, а вот на нефти (BRN) и т.д. работает только на половину, то есть, нижние пики (зелёный) работают, а вот верхние пики (красный) просто тянется по низу с какой-то 0.1 % КПД, то есть, никак, от слова "совсем".
Поправьте пожалуйста, очень нужный фильтр.
Screenshot_4.jpg
 

Вложения

SlavaChvi

Интересующийся
Здравствуйте, уважаемые программисты, пожалуйста сделайте EmailAlerts или PushAlerts этому индикатору.
 

Вложения

Kasander

Местный знаток
Есть кто может прицепить индикатор AmKA к Force In?
 

Вложения

  • frc.zip
    frc.zip
    787 байт · Просмотры: 20
  • AMkA.mq4
    AMkA.mq4
    9 КБ · Просмотры: 24

Посмотрели (338) Посмотреть

Отслеживают (1806) Посмотреть

Верх