Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
посчитайте количество левых и правых скобок
Да уже вижу что несовпадает количество 9 левых и 5 правых,если б еще знать куда их ставить?
зачем такой вагон ретурнов???
Что у меня не получаеться как надо подскажите уважаемые люди,тяжело мне одному понимать.
Вообщем проблема в том что открывает кучу ордеров на каждом тике,а мне нужно что б открывал когда появляеться новый бар,по цене открытия.
Вот кусок кода.
{
double pldot_0=iCustom(NULL,0,"PLdot",0,0);//берем значение с 0го бара
if(Close[0]>pldot_0)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd signal",16384,0,Red); // исполняем
if(GetLastError()==0)Print("Order opened : ",OrderOpenPrice());
return(0);
}
if(Close[0]<pldot_0)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red); // исполняем
if(GetLastError()==0)Print("Order opened : ",OrderOpenPrice());
return(0);
}
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
if(Close[0]<pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
}
if(Close[0]>pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}
}
}
return(0);
}
//------------------
Вот кусочек кода для блокирования ножества открытых позиций но почему она у меня выдает ошибку,может я не туда её вставил(сразу после int start()),а может просто в код надо что то дописать,гуру подскажите чайнику.
{
int total, ticket, cnt;
if (OpenCondition)--------вот эта переменная не определена
{
total = OrdersTotal();
if (total > 0)
{
OrderSelect(total - 1, SELECT_BY_POS, MODE_TRADES); // последний открытый или модифицированный ордер будет последним в списке
if (OrderOpenTime() < Time[0]) // Открыт раньше текущего бара?
OrderSend(...);
}
}
Вот кусочек кода для блокирования ножества открытых позиций но почему она у меня выдает ошибку,может я не туда её вставил(сразу после int start()),а может просто в код надо что то дописать,гуру подскажите чайнику.
{
int total, ticket, cnt;
if (OpenCondition)--------вот эта переменная не определена
{
total = OrdersTotal();
if (total > 0)
{
OrderSelect(total - 1, SELECT_BY_POS, MODE_TRADES); // последний открытый или модифицированный ордер будет последним в списке
if (OrderOpenTime() < Time[0]) // Открыт раньше текущего бара?
OrderSend(...);
}
}
Ты сам определил ошибку. Если какая-нибудь переменная не определена. Что нужно сдеалать?.. Объявить.
В твоем случае надо сделать так.
bool OpenCondition=false;
if (OpenCondition)
{............
Я так понимаю по контексту OpenCondition - это условие открытия позиции.
Например, с твоим индюком может выглядеть так:
.....
bool OpenCondition=pldot_0>Close[0];
if (OpenCondition)
{
//открываем SELL
}
Не знаю как ты читал учебник, но там про переменные ясно написано
Переменные должны быть объявлены перед их использованием.
Для проверки уже открытых позиций можно для тестера можно использовать OrdersTotal(), а вообще используют подобную функцию:
и соответственно ПРИМЕР её использования:
Чтобы легко было расставлять скобки используй отступы. Чтобы разобраться в программировании читай статьи.Скажите уважаемые люди почему у меня вот поэтому сигналу не закрываються ордера.ЧТО НАДО ИСПРАВИТЬ,А МОЖЕТ НАДО ДОПИСАТЬ.
//| Закрытие позиции |
//+------------------------------------------------------------------+
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
if(Close[0]<pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
}
if(Close[0]>pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}
}
return(0);
}
}
//------------------
Скажите уважаемые люди почему у меня вот поэтому сигналу не закрываються ордера.ЧТО НАДО ИСПРАВИТЬ,А МОЖЕТ НАДО ДОПИСАТЬ.
//+------------------------------------------------------------------+
//| Закрытие позиции |
//+------------------------------------------------------------------+
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
if(Close[0]<pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
}
if(Close[0]>pldot_0)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}
}
return(0);
}
}
//------------------
как минимум поменяйте местами Ask Bid
бай можно закрывать только по Ask
селл по Bid