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

Статус
Закрыто для дальнейших ответов.

lg.ghost

Прохожий
Доброго времени суток уважаемые. пожалуйста сделайте чтоб советник работал по времени
 

Вложения

TvikN

Активный участник
Господа программисты,очень Вас прошу немного переделать индикатор.Нужно вместо обычных вееров сделать только одну линию 85,4 или,хотя бы просто добавить ее к существующим и вынести в настройки тип и цвет ВСЕХ линий.Заранее огромное спасибо.
 

Вложения

venamax

= ##$$$## =
Уважаемые, помогите пожалуйста, добавить в советник функцию максимально разрешенного к открытию лота для торговли, чтобы в настройках можно было также задавать этот параметр - к примеру MaxLots=100;
 

Вложения

vadimkz

Активный участник
Помогите с кодом!

Доброго времени суток!
Помогите разобраться, где ошибка!:question:
if(OrderSell>1)
{
for(cnt=0;cnt<OrdersTotal();cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderType()==OP_SELL && OrderProfit()<-Spred && OP>MA33 && CL<MA33)
{
for(q=0;q<1;q++)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Bid-TP*Point,Red);
OrderSend(Symbol(), OP_SELL, Lots*5, Bid, Slip, Bid+SL*Point, Bid-TP*Point, "Ордер SELL",Red);
}
}
}
}
if(OrderBuy>1)
{
for(cnt=0;cnt<OrdersTotal();cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderType()==OP_BUY && OrderProfit()<-Spred && OP<MA33 && CL>MA33)
{
for(q=0;q<1;q++)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+TP*Point,Red);
OrderSend(Symbol(), OP_BUY, Lots*5, Ask, Slip, Ask-SL*Point, Ask+TP*Point, "Ордер BUY",Green);
}
}
}
}

Вот по этому коду открывает много ордеров, вместо одного, и модификация тоже каждого ордера не нужна с каждым тиком.
получается, что цикл for(q=0;q<1;q++) не работает.
Что ему ещё нужно?
Зраранее благодарю за помощь!:question:
 

infoalex0004

Прохожий
Ребята помогите доработать советника

Это простой советник, пересечении трех машек.
Сейчас в советнике присутствую следующие параметры:

lots - объем торговой операции
fast_ma_period - период быстрой скользящей средней (Moving Average)
medium_ma_period - период средней линии скользящей средней (Moving Average)
slow_ma_period - период медленной скользящей средней (Moving Average)
ma_method - Метод усреднения индикатора MA. (0 - Простое скользящее среднее; 1 - Экспоненциальное скользящее среднее; 2 - Сглаженное скользящее среднее; 3 - Линейно-взвешенное)
applied_price - Используемая цена индикатора. (0 - Цена закрытия; 1 - Цена открытия; 2 - Максимальная цена; 3 - Минимальная цена; 4 - Средняя цена, (high+low)/2; 5 - Типичная цена, (high+low+close)/3; 6 - Взвешенная цена закрытия, (high+low+close+close)/4)
close_variant - Вариант закрытия позиций(0 - любое пересечение; 1 - закрываем при пересечении быстрой и медленной линии МА; 2 - закрываем при пересечении быстрого и среднего индикаторов)
take_profit - значение уровня прибыльности (take profit) для открываемого ордера (0 - не использовать take profit).
stop_loss - значение уровня убыточности (stop loss) для открываемого ордера (0 - не использовать stop loss).

Что бы хотелось:

1. Возможность выстаыления время работы советника
2. Возможность выставления трала , а так же его отключения.

Зарание огромное СПАСИБО, кто поможет.

Сам код советника:

//+------------------------------------------------------------------+
//| 3MA_.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "3MA"


#define magic 2342002

//---- input parameters
extern double lots=0.1;
extern int fast_ma_period=10;
extern int medium_ma_period=25;
extern int slow_ma_period=50;
extern int ma_method=0;
extern int applied_price=0;
extern int close_variant = 2;
extern int take_profit=0;
extern int stop_loss=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
bool can_buy = false, can_sell = false;
int init()
{
//----

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

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double fma_prev=double iMA( Symbol(), 0, fast_ma_period, 0, ma_method, applied_price, 2);
double fma_next=double iMA( Symbol(), 0, fast_ma_period, 0, ma_method, applied_price, 1);

double mma_prev=double iMA( Symbol(), 0, medium_ma_period, 0, ma_method, applied_price, 2);
double mma_next=double iMA( Symbol(), 0, medium_ma_period, 0, ma_method, applied_price, 1);

double sma_prev=double iMA( Symbol(), 0, slow_ma_period, 0, ma_method, applied_price, 2);
double sma_next=double iMA( Symbol(), 0, slow_ma_period, 0, ma_method, applied_price, 1);

//----
int i;
int err;

//закрываем при пересечени быстрой и медленной
if (close_variant == 1 || close_variant == 0)
{
//закрываем SELL orders
if (fma_prev<=sma_prev && fma_next>sma_next && ChekForOrders(OP_SELL) > 0)
{
for(i=0;i<OrdersTotal();i++)
{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if ( OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic)
if (OrderClose(OrderTicket(),OrderLots(),Ask,0,Red)==false)
{
//если не получилось закрыть
err=GetLastError();
Print("OrderSend failed with error #",err);
}
}
}
//закрываем BUY orders
if (fma_prev>=sma_prev && fma_next<sma_next && fma_next<mma_next && ChekForOrders(OP_SELL)==0)
{
for(i=0;i<OrdersTotal();i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if ( OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic)
if (OrderClose(OrderTicket(),OrderLots(),Bid,0,Red)==false)
{
//если не получилось закрыть
err=GetLastError();
Print("OrderSend failed with error #",err);
}
}
}
}

//закрываем при пересечени быстрой и средней
if (close_variant == 2 || close_variant == 0)
{
//закрываем SELL orders
if (fma_prev<=mma_prev && fma_next>mma_next && ChekForOrders(OP_SELL) > 0)
{
for(i=0;i<OrdersTotal();i++)
{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if ( OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==magic)
if (OrderClose(OrderTicket(),OrderLots(),Ask,0,Red)==false)
{
//если не получилось закрыть
err=GetLastError();
Print("OrderSend failed with error #",err);
}
}
}
//закрываем BUY orders
if (fma_prev>=mma_prev && fma_next<mma_next && ChekForOrders(OP_SELL)==0)
{
for(i=0;i<OrdersTotal();i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if ( OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==magic)
if (OrderClose(OrderTicket(),OrderLots(),Bid,0,Red)==false)
{
//если не получилось закрыть
err=GetLastError();
Print("OrderSend failed with error #",err);
}
}
}
}

//быстрая линия должна пересечь обе
if (fma_next > sma_next && fma_next > mma_next)
can_sell = true;

if (fma_next < sma_next && fma_next < mma_next)
can_buy = true;

//если было пересечение вверх и нет активных BUY то
if ((fma_prev<=sma_prev || fma_prev<=mma_prev) && fma_next>sma_next && fma_next>mma_next && ChekForOrders(OP_BUY)==0 && can_buy)
{
//создаем buy
OrderSendFunc(OP_BUY);
can_buy = false;
}

//если было пересечение вниз то
if ((fma_prev>=sma_prev || fma_prev>=mma_prev) && fma_next<sma_next && fma_next<mma_next && ChekForOrders(OP_SELL)==0 && can_sell)
{
//создаем SELL
OrderSendFunc(OP_SELL);
can_sell = false;
}

return(0);
}
//+------------------------------------------------------------------+


//Отправляет запрос типа cmd
int OrderSendFunc(int cmd)
{
if (cmd==OP_BUY) double Price=Ask;
else Price=Bid;
int ticket=OrderSend(Symbol(),cmd,lots,Price,0,GetSL(cmd),GetTP(cmd),NULL,magic,0,Blue);
if(ticket<0)
{
int err=GetLastError();
if (err==135)
{
//если ошибка "цены изменились" то делаем вторую попытку
RefreshRates();
ticket=OrderSend(Symbol(),cmd,lots,Price,0,GetSL(cmd),GetTP(cmd),NULL,magic,0,Blue);
if (ticket<0)
{
err=GetLastError();
Print("OrderSend failed with error #",err);
}
else Print("OrderSend failed with error #",err);
return(-1);
}
}
return(ticket);
}


// Функция возвращает значение цены с учетом StopLoss.
//Для Buy Order: cmd=OP_BUY, для Sell: cmd=OP_SELL
double GetSL(int cmd)
{
if (stop_loss==0) return(0);
else
if (cmd==OP_BUY) return(Bid-stop_loss*Point);
else return(Ask+stop_loss*Point);
}

// Функция возвращает значение цены с учетом TakeProfit.
//Для Buy Order: cmd=OP_BUY, для Sell: cmd=OP_SELL
double GetTP(int cmd)
{
if (take_profit==0) return(0);
else
if (cmd==OP_BUY) return(Ask+take_profit*Point);
else return(Bid-take_profit*Point);
}


//*Функция определяет количество позиций типа cmd*
int ChekForOrders(int cmd)
{
int count=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if (OrderSymbol()==Symbol() && OrderType()==cmd && OrderMagicNumber()==magic)
count++;
}
return(count);
}
 
Последнее редактирование модератором:

Dimasca

Интересующийся
добрый день. Поправьте пожалуйста. Сначала нормально работал, а потом стал сливать. Советник неплохой. Можно заточить под любую пару. Желательно EUR/USD, GBP/USD М30
 

Вложения

Variator

Новичок форума
(что поправить - где диагноз ?)
а можно детальнее : что значит можно заточить под любую пара ?(для какой прооптимизируете для той и будет оптимально работать)
- все советники со временем начинают сливать - тк smart системы особ не распространены , поэтому надо периодически проводить оптимизацию на истории хотя бы месячной из расчета на 2-3 недели работы
 

Dimasca

Интересующийся
Можно под EUR/USD М30. На тестере нет положительных результатов хоть что делай. Не могу разобраться в чем дело. Что именно надо поменять не соображу. Поначалу хорошо работал, сделки в плюсе закрывал но потом стал косячить.
 

Вложения

  • TesterGraph.jpg
    TesterGraph.jpg
    37,4 КБ · Просмотры: 45
Последнее редактирование:

RomanDD

Активный участник
Пожалуйста добавьте меджик!

ДОброго времени суток!
Советник отслеживает позиции и может закрывать их по совокупному убытку\прибыли.
Огромная просьба добавить задаваемый меджик чтобы советник мог отслеживать ордера с определенным меджиком.
Заранее спасибо!
 

Вложения

Mid

Прохожий
Доктора подлечите. что б работал на 1 и 5 минутах, а так же торговал на центовом счете, т.е. от депо в 200 уе
 

Вложения

borobor

Элитный участник
TimeCandle-здесь выставь "0"(любой таймфрейм),
Lot -здесь 0.01
 

RomanDD

Активный участник
ДОброго времени суток!
Советник отслеживает позиции и может закрывать их по совокупному убытку\прибыли.
Огромная просьба добавить задаваемый меджик чтобы советник мог отслеживать ордера с определенным меджиком.
Заранее спасибо!

Ребята помогите пожалуйста, добавьте распознавание по магику!
Очень нужно!
 

ilikrus

Интересующийся
доработайте плиз советник stop trade 1.2

нужно добавить ручную настройку минимального лота
 

Вложения

SlavaR

Активный участник
очень надо

Ребята помогите пожалуйста, добавьте распознавание по магику!
Очень нужно!

+1 Мне тоже.
е-VST не нашёл к сожалению. Уважаемые коллеги, если есть у кого e-СlоseByVSТ поделитесь пожалуйста, очень надо.
 
Последнее редактирование:

ilikrus

Интересующийся
помогите доработать советник

всем доброе время суток!
нужно добавить в советник ручную установку размера ордера, если кто может буду благодарен
 

Вложения

seraliev66

Интересующийся
Уважаемые,доктора!Такая просьба к вам.Советник выставляет отложки только лимит,возможно ли подкрутить,что бы выставлял стопы.
Заранее,спасибо.
 

Вложения

ilikrus

Интересующийся
доработайте stop trade 1.2

огромная просьба прикрутить ручную установку минимального лота и настроить чтоб работал трайлинг стоп
 

Вложения

PrinceAlex

Активный участник
всем доброе время суток!
нужно добавить в советник ручную установку размера ордера, если кто может буду благодарен

Держите, переменная Lots меняете и будет Вам счастье
 

Вложения

Статус
Закрыто для дальнейших ответов.

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

Верх