Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте трейдер.
Может ли кто-нибудь помочь мне и знает, какие индикаторы находятся в этих двух файлах .ex4?!
С наилучшими пожеланиями, oink!
Здравствуйте трейдер.
Может ли кто-нибудь помочь мне и знает, какие индикаторы находятся в этих двух файлах .ex4?!
С наилучшими пожеланиями, oink!Алерт сигналы это простой зигзаг сделанный для показа стрелок :
Thanksmladen, я знаю ваше имя из около 10000 Индикаторов! ;-)
Потом я погуглил на предмет индикатора зигзаг+стрелки.
Другой не определен?
С наилучшими пожеланиями, oink!
Thanksmladen, я знаю ваше имя из примерно 10000 Индикаторов! ;-)
Затем я нахожу в Гугле индикатор зигзаг+стрелки.
Другой не определен?
С наилучшими пожеланиями, oink!Честно говоря, я не смог распознать другой. Извините
Здравствуйте,
Я не понимаю, почему эта еа не работает, компиляция в порядке, ничего в журнале, ни в экспертной вкладке, но нет ни одной сделки.
Заранее спасибо.
Jo
extern int magicNum=200;
extern double TakeProfit = 50;
extern double Lots = 0.01;
extern double TrailingStop = 30;
//extern double MACDOpenLevel=3;
//extern double MACDCloseLevel=2;
extern double MATrendPeriod=5;
int start()
{
double MaCurrent,MaPrevious,MavPrevious;
double close=iClose(Symbol(),0,0);
double vclose=iClose(Symbol(),0,1);
double vvclose=iClose(Symbol(),0,2);
// double MacdCurrent, MacdPrevious, SignalCurrent;
// double SignalPrevious, MaCurrent, MaPrevious;
// double RSIj,RSIv;
int cnt, ticket, total;
// проверка исходных данных
// важно убедиться в том, что эксперт работает с нормальным
// графиком и пользователь не допустил ошибок при установке внешних
// переменных (Lots, StopLoss, TakeProfit,
// TrailingStop), в нашем случае мы проверяем TakeProfit
// на графике с количеством баров менее 100
if(Bars<100)
{
Print("баров меньше 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit меньше 10");
return(0); // проверяем TakeProfit
}
// для упрощения кодирования и ускорения доступа
// данные помещаются во внутренние переменные
// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);
double PlusHaut =High;
double PlusBas =Low;
double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);
double TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33);
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);
// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);
total=OrdersTotal();
if(total<1)
{ // открытых ордеров не обнаружено
if(AccountFreeMargin()<(1000*Lots))
{
Print("У нас нет денег. Свободная маржа = ", AccountFreeMargin());
return(0);
}
// проверка возможности длинной позиции (BUY)
если
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&.
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер BUY : ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера BUY : ",GetLastError());
return(0);
}
// проверка возможности короткой позиции (SELL)
// if (RSIv>70 && RSIj<70)
if (MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&.
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(" Открытордер SELL: ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера SELL : ",GetLastError());
return(0);
}
return(0);
}
// важно правильно войти в рынок,
// но еще важнее правильно выйти из него...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // проверяем наличие открытой позиции
OrderSymbol()==Symbol()) // проверка наличия символа
{
if(OrderType()==OP_BUY) // открыта длинная позиция
{
// должна ли она быть закрыта?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&.
// MacdCurrent>(MACDCloseLevel*Point))
// if (RSIv>70 && RSIj<70)
if (MaCurrent <MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // закрываем позицию
return(0); // выход
}
// проверка наличия трейлинг-стопа
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // переходим в короткую позицию
{
// должна ли она быть закрыта?
// if(MacdCurrentSignalCurrent &&.
// MacdPrevious(MACDCloseLevel*Point))
if
// (RSIv30)
( MaCurrent >MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрытие позиции
return(0); // выход
}
// проверка наличия трейлинг-стопа
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
// конец.
Здравствуйте,
Я не понимаю, почему эта еа не работает, компиляция в порядке, ничего в журнале, ни в экспертной вкладке, но нет ни одной сделки.
Заранее спасибо.
Jo
extern int magicNum=200;
extern double TakeProfit = 50;
extern double Lots = 0.01;
extern double TrailingStop = 30;
//extern double MACDOpenLevel=3;
//extern double MACDCloseLevel=2;
extern double MATrendPeriod=5;
int start()
{
double MaCurrent,MaPrevious,MavPrevious;
double close=iClose(Symbol(),0,0);
double vclose=iClose(Symbol(),0,1);
double vvclose=iClose(Symbol(),0,2);
// double MacdCurrent, MacdPrevious, SignalCurrent;
// double SignalPrevious, MaCurrent, MaPrevious;
// double RSIj,RSIv;
int cnt, ticket, total;
// проверка исходных данных
// важно убедиться в том, что эксперт работает с нормальным
// графиком и пользователь не допустил ошибок при установке внешних
// переменных (Lots, StopLoss, TakeProfit,
// TrailingStop), в нашем случае мы проверяем TakeProfit
// на графике с количеством баров менее 100
if(Bars<100)
{
Print("баров меньше 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit меньше 10");
return(0); // проверяем TakeProfit
}
// для упрощения кодирования и ускорения доступа
// данные помещаются во внутренние переменные
// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
// SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);
MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);
double PlusHaut =High;
double PlusBas =Low;
double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);
double TiersBas =PlusBas +((PlusHaut-PlusBas)*0.33);
// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);
// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);
total=OrdersTotal();
if(total<1)
{ // открытых ордеров не обнаружено
if(AccountFreeMargin()<(1000*Lots))
{
Print("У нас нет денег. Свободная маржа = ", AccountFreeMargin());
return(0);
}
// проверка возможности длинной позиции (BUY)
если
// (RSIv30)
( MaCurrent >MaPrevious)
// && (MaPreviousvclose || vclose>vvclose))
// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&.
// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер BUY : ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера BUY : ",GetLastError());
return(0);
}
// проверка возможности короткой позиции (SELL)
// if (RSIv>70 && RSIj<70)
if (MaCurrent <MaPrevious)
// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))
// (MacdCurrent>0 && MacdCurrentSignalPrevious &&.
// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер SELL : ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера SELL : ",GetLastError());
return(0);
}
return(0);
}
// важно правильно войти в рынок,
// но еще важнее правильно выйти из него...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // проверяем наличие открытой позиции
OrderSymbol()==Symbol()) // проверка наличия символа
{
if(OrderType()==OP_BUY) // открыта длинная позиция
{
// должна ли она быть закрыта?
// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&.
// MacdCurrent>(MACDCloseLevel*Point))
// if (RSIv>70 && RSIj<70)
if (MaCurrent <MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // закрываем позицию
return(0); // выход
}
// проверка наличия трейлинг-стопа
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // переходим в короткую позицию
{
// должна ли она быть закрыта?
// if(MacdCurrentSignalCurrent &&.
// MacdPrevious(MACDCloseLevel*Point))
if
// (RSIv30)
( MaCurrent >MaPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрытие позиции
return(0); // выход
}
// проверка наличия трейлинг-стопа
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
// конец.Это работает в моих тестах:
Здравствуйте, mladen,
Я хочу сделать частичную продажу моего profitOrder с тем же значением, что и моя переменная "LossValue".
Я попытался рассчитать размер лота следующим образом:
-Считать фактическую прибыль из profitOrder.
-Рассчитать прибыль на лот (ProfitPerLotstep)
-Вычислить LossValue/ProfitPerLotstep и округлить результат лота в большую сторону.
-Но если я продам этот лот, то значение прибыли будет слишком маленьким (я думаю из-за спреда).
Какой способ расчета правильный?
Вот дополнительный вопрос.
Если я делаю частичное закрытие, то остальная часть позиции автоматически закрывается брокером. Раньше я давал Позиции комментарий, чтобы отличить эту Позицию. Как я могу распознать это сейчас?
Вот дополнительный вопрос. Если я делаю частичное закрытие, то остальная часть позиции автоматически закрывается брокером. Раньше я давал Позиции комментарий, чтобы отличить эту Позицию. Как я могу распознать ее теперь?
sunshineh
Вы ничего не можете сделать.
Только брокер может изменить поле комментария ордера. Может быть, брокер изменит комментарий таким образом, что в нем будет написано что-то вроде "от nnnn", где nnnn - номер предыдущего тикета, но в большинстве случаев они этого не делают, поэтому у вас не остается решения, которое могло бы однозначно идентифицировать предыдущий ордер в подобных случаях.
Спасибо, Младен! Есть ли у вас решение для моего предыдущего сообщения с расчетом от размера лота в соответствии с определенным значением, например, 100 EUR?