Потому что в условиях открытия указано: открывать новый ордер, если уже есть орде buy или sell. Если же ордеров нет, то новые открываться не будут.
P. S. Вставляйте код правильно .
Scriptong:
Упс. Исправил, но теперь только один ордер на покупку открывается и все.
Потому что в условиях открытия указано: открывать новый ордер, если уже есть орде buy или sell. Если же ордеров нет, то новые открываться не будут.
P. S. Вставляйте код правильно .
calvuscaput:
Упс. Исправил, но теперь только один ордер на покупку открывается и все.
Покажите, что именно исправили.
Упс. Исправил, но теперь только один ордер на покупку открывается и все.
Scriptong:
Покажите, что именно исправили.
Покажите, что именно исправили.
void OnTick() { if(CountBuy()==0) { OrderSend(Symbol(), OP_BUYSTOP, Lots, LastUpFractal(), 5, 0, 0, "", 100500, 0, Green); } else if(CountSell()==0) { OrderSend(Symbol(), OP_SELLSTOP, Lots, LastDownFractal(), 5, 0, 0, "", 100500, 0, Red); } } //+------------------------------------------------------------------+ int CountSell() { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()==Symbol()) { if(OrderType()==OP_SELLSTOP); count++; } }} return(count); } //+------------------------------------------------------------------+ int CountBuy() { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)){ if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUYSTOP); count++; }} } return(count); }
calvuscaput:
Точка с запятой лишние в обоих функциях в этих фрагментах
if(OrderType()==OP_SELLSTOP);
if(OrderType()==OP_BUYSTOP);
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот кусок кода:
void OnTick()
{if(CountBuy()!=0)
{
OrderSend(Symbol(), OP_BUYSTOP, Lots, PriceB, 5, 0, 0, "", 100500, 0, Green);
}
if(CountSell()!=0)
{
OrderSend(Symbol(), OP_SELLSTOP, Lots, PriceS, 5, 0, 0, "", 100500, 0, Red);
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELLSTOP);
count++;
}
}}
return(count);
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)){
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUYSTOP);
count++;
}}
}
return(count);
}
По плану, советник должен открывать два отложенных ордера по заданной цене, если таких нет. Но открывается только один ордер.
Подскажите, что не так, а то уже весь мозг сломал.