Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
вот условие на закрытие используется обратный сигнал,но не срабатывает юСделки закрываются только по стопу или тейку .В чем по вашему причина ?
Неправильно.
У вас условие должно быть в старте, а функция закрытия за стартом.
int i;
//
void Start(){
if ((FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) // тут так надо бы Bid<NormalizeDouble(FMA1-Distanse*GetPoint(),Digits)
|| (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint())){
for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) CloseOpBuySell(); // тут закроются все ордера и бай и селл
}
}
}// end start
void CloseOpBuySell()
{
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic ) //свой магик
{
if(OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,LawnGreen); {continue;}
}
if(OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,LawnGreen); {continue;}
}
}
}
}
return;
}
Неправильно.
Если закрывать надо по отдельным условиям а не всё сразу, то и функция закрытия должна быть другая.У вас условие должно быть в старте, а функция закрытия за стартом.
Правильно, тока я уже сделал и скинул ему, вот и молчит
{
//закрытие по МА-шкам
if (FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) CloseOpBuySell("BUY");
if (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint()) CloseOpBuySell("SELL");
return(0);
}
//----
//-----------------------------------+
void CloseOpBuySell(string TypeClose)
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn )
{
if(TypeClose=="BUY")
{
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,3,LawnGreen);
}
if(TypeClose=="SELL")
{
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,3,LawnGreen);
}
}
}
}
}
Правильней считать на основе свободных средств, а не баланса. А то рискуете получить лот больше, чем можете себе позволить на момент открытия сделки.
Ну и зависимость от шага лота отработать, а потом ещё проверить, не выходит ли лот за рамки максимального и минимального лота, разрешённых на счёте.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Правильней считать на основе свободных средств, а не баланса. А то рискуете получить лот больше, чем можете себе позволить на момент открытия сделки.
Ну и зависимость от шага лота отработать, а потом ещё проверить, не выходит ли лот за рамки максимального и минимального лота, разрешённых на счёте.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Перенесено:
Gevorg Hakobyan, 2016.12.08 15:26
Здравствуйте. Как можно получить список всех существующих в Meta Trader 4 валютных пар? И как быть в курсе любых изменений в списке?Перенесено:
Gevorg Hakobyan, 2016.12.08 15:26
Здравствуйте. Как можно получить список всех существующих в Meta Trader 4 валютных пар? И как быть в курсе любых изменений в списке?SymbolsTotal
Возвращает количество доступных (выбранных в MarketWatch или всех) символов.
int SymbolsTotal(
bool selected // true – только символы в MarketWatch
);
Параметры
selected
[in] Режим запроса. Может принимать значения true или false.
Возвращаемое значение
Если параметр selected равно true, то возвращается количество выбранных в MarketWatch символов. Если значение false, то возвращается общее количество всех символов.
Перенесено:
Gevorg Hakobyan, 2016.12.08 15:26
Здравствуйте. Как можно получить список всех существующих в Meta Trader 4 валютных пар? И как быть в курсе любых изменений в списке?