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

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
    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, которой не работает (есть две ошибки).

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

Вложения

  • нр.set
    11 КБ · Просмотры: 201
  • exp_iCustom_v9.mq4
    149,5 КБ · Просмотры: 192

baydin1111

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

alexshell

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

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

Вложения

  • Urdala_Tester.mq4
    36,1 КБ · Просмотры: 53

Kot Bazilio

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

Вложения

  • largetimeframe_104.mq4
    3,6 КБ · Просмотры: 45

baydin1111

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

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

Вложения

  • e-CloseByProfitPosInCurrency.mq4
    12,2 КБ · Просмотры: 26

baydin1111

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

alexshell

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

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

Вложения

  • Urdala_Tester.mq4
    36,6 КБ · Просмотры: 40

HeadbaY

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

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

sss555

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

sss555

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

baydin1111

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