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

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

alexshell

Элитный участник
Помогите доработать код, точнее закрытие по сигналу. Имеется выдержка из кода рабочей совы>
//+------------------------------------------------------------------+
// Если время торговли не истекло и мы не открывали позицию на этом баре:
//+------------------------------------------------------------------+

if(Traiding && timeCheckSignal!=Time[0])

{
//+------------------------------------------------------------------+
// Если сигнал на бай:
//+------------------------------------------------------------------+
if(Signal==1)// buy
{
//Вычисляем стоплосс
if(StopLoss!=0)sl=Bid-StopLoss*Point; else sl=0;
// ВЫчисляем тейкпрофит
if(TakeProfit!=0)tp=Ask+TakeProfit*Point; else tp=0;
//+------------------------------------------------------------------+
//Закрываем противоположную позицию
//+------------------------------------------------------------------+
if(ClosePosifChange)CPD(Symbol(),OP_SELL,Magic);
//+------------------------------------------------------------------+
//Открываем позицию
//+------------------------------------------------------------------+
if((ONlyOnePosbySignal && !EPs(Symbol(),OP_BUY,Magic)) || !ONlyOnePosbySignal)
{
OPs(Symbol(),OP_BUY,GetSizeLot(),sl,tp,Magic,"Templates www.expforex.com");
timeCheckSignal=Time[0];
Nap1=0; Nap2=0;
}

}

//+------------------------------------------------------------------+
// Если сигнал на селл:
//+------------------------------------------------------------------+
if(Signal==2)// селл
{
//Вычисляем стоплосс
if(StopLoss!=0)sl=Ask+StopLoss*Point; else sl=0;
// ВЫчисляем тейкпрофит
if(TakeProfit!=0)tp=Bid-TakeProfit*Point; else tp=0;
//Закрываем противоположную позицию
if(ClosePosifChange)CPD(Symbol(),OP_BUY,Magic);
//+------------------------------------------------------------------+
//Открываем позицию
//+------------------------------------------------------------------+
if((ONlyOnePosbySignal && !EPs(Symbol(),OP_SELL,Magic)) || !ONlyOnePosbySignal)
{
OPs(Symbol(),OP_SELL,GetSizeLot(),sl,tp,Magic,"Templates www.expforex.com");
timeCheckSignal=Time[0];
Nap1=0; Nap2=0;
}

}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

Суть данного блока, закрывает открытый/серию открытых ордеров, только в том случае, если поступил сигнал на открытие ордера в противоположную сторону. Но если поступил сигнал на открытие ордера в туже сторону что уже открытый ордер, то открытый ордер не закрывается, а открывается ещё один в туже сторону.
____
Требуется сделать так, что бы он всегда закрывал открытый ордер перед открытием нового, неважно в какую сторону поступил сигнал.

Замени то, что выделил красным цветом на -1. Должен закрывать все позиции.
 

HeadbaY

Почетный гражданин
alexshell Спасибо заработало.
Есть ещё одна живность >>
//--------------------------------------------------------------------
extern int period_EMA = 28,
period_WMA = 8 ,
stoploss = 0,
takeprofit = 0;
extern double LOT = 0.1;
extern bool CloseRevers = true;
//--------------------------------------------------------------------
int TimeBar;
//--------------------------------------------------------------------
int start()
{
if (TimeBar==Time[0]) return(0);

double EMA0 = iMA(NULL,0,period_EMA,0,MODE_EMA, PRICE_OPEN,0);
double WMA0 = iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,0);
double EMA1 = iMA(NULL,0,period_EMA,0,MODE_EMA, PRICE_OPEN,1);
double WMA1 = iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,1);

double SL,TP;
if (EMA0<WMA0&&EMA1>WMA1)
{
TimeBar=Time[0];
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Bid - stoploss*Point,Digits); else SL = 0;
if (CloseRevers) CLOSEORDER(OP_SELL);
OrderSend(Symbol(),OP_BUY, LOT,NormalizeDouble(Ask,Digits),2,SL,TP,"2MA",123,3);
}
if (EMA0>WMA0&&EMA1<WMA1)
{
TimeBar=Time[0];
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Ask + stoploss*Point,Digits); else SL = 0;
if (CloseRevers) CLOSEORDER(OP_BUY);
OrderSend(Symbol(),OP_SELL,LOT,NormalizeDouble(Bid,Digits),2,SL,TP,"2MA",123,3);
}
return(0);
}
//--------------------------------------------------------------------
void CLOSEORDER(int ord)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==123)
{
if (OrderType()==OP_BUY && ord==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,CLR_NONE);
if (OrderType()==OP_SELL && ord==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,CLR_NONE);
}
}
}
}
//--------------------------------------------------------------------
Сова банальная по 2МА.
Открывает при пересечении и закрывает тоже при пересечении. Но открывает и закрывает она с запаздыванием примерно 2-3 свечи. если возможно скажите что поменять/дописать в код что бы открытие и закрытие было сразу при пересечении, ну и количество попыток открытия закрытия добавить я думаю?
 

Вложения

  • 2MA.mq4
    2MA.mq4
    2,4 КБ · Просмотры: 45

fix

Активный участник
Сообщение от Ted Nikson Здравствуйте eevviil. Вы знаете индикатор HP DIFF (для работы на график нужно прикрыпить два индюка HP и HP DIFF). По просьба другому участника вы уже прикрепили раньше к етому индюка alert. Можно ли сейчась по этому индюку написать простую сову основаную на принципе только открытия позиции в бай или сел при смене цвета? За ранее вырожаю благодарность и огромное спасибо если поможете, а если нет всеравно спасибо за ваш труд до тех пор. [Ted Nikson: Здравствуйте eevviil. Вы знаете индикатор HP DIFF (для работы на график нужно прикрыпить два индюка HP и HP DIFF). По просьба другому участника вы уже прикрепили раньше к етому индюка alert. Можно ли сейчась по этому индюку написать простую сову основаную на принципе только открытия позиции в бай или сел при смене цвета?]



Спосибо для совет, но не получилось. Наверно проблем в том что индикатор HP_DIFF, по котором надо сделаем експерт, для своя работа ползует другой второй индикатор HP. Я не знаю как с етом справлюс в експерте. Приклепляю еще раз два индикатора и мой експерт i custom, которой не работает (есть две ошибки).

вставь сет в сова -и вперед!
 

Вложения

baydin1111

Интересующийся
А можно ли добавить в советник фиксацию и размешение на графике максимальной просадки в валюте по обшему счету?
 

alexshell

Элитный участник
А можно ли добавить в советник фиксацию и размешение на графике максимальной просадки в валюте по обшему счету?

Что за фиксацию?
Короче всунул в твой советник эту закрывалку. Теперь если она сработает то удалит линию.Также добавил автоопределение знака. Теперь будет работать и на пятизнаке.
Пробуй. Потом обязательно отпишись как работает.
 

Вложения

Kot Bazilio

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

Вложения

baydin1111

Интересующийся
Что за фиксацию?
ну что бы я подошел к компу и видел какая была максимальная просадка за мое отсуцтвие. Кинь пожалуйста в e-CloseByPercentProfit подвязку к валютной паре, в этом советнике(e-CloseByProfitPosInCurrency) есть такая функция, только если можно что бы в переменной можно было просто ввести валюту,а то тут я не доконца понял.

И СТО раз спасибо тебе:-)
 

Вложения

baydin1111

Интересующийся
А как инфу в правом верхнем углу левее сдвинуть? а то у меня где то 1/3 только видно.
 

alexshell

Элитный участник
А как инфу в правом верхнем углу левее сдвинуть? а то у меня где то 1/3 только видно.

Сдвинул. Добавил макс.просадку. Будет фиксироваться от открытия до закрытия. При закрытии обнулится. Если инфо опять не влезет перетащи мышкой край окна где обзор рынка влево.
 

Вложения

HeadbaY

Почетный гражданин
и что там переделано не понял???

В том сове ничего. С чего вы взяли что в ней что то переделано?
Вообщето я просил что бы помогли доработать и если вы внимательнее прочитаете чуть ниже увидите что всё сделал так как хотел с помощью Алексшела.
 

sss555

Интересующийся
В том сове ничего. С чего вы взяли что в ней что то переделано?
ну понятно незнаю че то просто подумал что кто то сделал что я просил..ну а можно то все же сделать как просил -хотя бы один индюк MBFX из кода убрать а оставить другой.....
 

sss555

Интересующийся
Вообщето я просил что бы помогли доработать и если вы внимательнее прочитаете чуть ниже увидите что всё сделал так как хотел с помощью Алексшела.[/QUOTE]
чего то не врубаюсь где сова то переделанная-скиньте то хоть ссылку плиз..
 

baydin1111

Интересующийся
Эммм.. получается вести позиции он начинает правильно после просадки которую укажеш, но размер профита копируется с предведущей строки, и нельзя ли что бы просадка не обнулялась?
 
Статус
Закрыто для дальнейших ответов.

Смотрят сейчас (2) Посмотреть

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

Верх