Ошибка 4106 или 2015.06.15 10:00:04.948 2015.01.02 09:00 Tic lite GBPUSD,M1: unknown symbol name EURUSD for OrderSend function
Pavel Kuznetsov:
Подскажите пожалуйста, с чем это связанно?
Связано с неправильной расстановкой скобок "{" и "}".
Если воспользоваться стилизатором, то хорошо видно, что в части кода:
for(i9=OrdersTotal()-1;i9>=0;i9--) { if(OrderSelect(i9,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderTicket()==sellticet && OrderMagicNumber()==MAGIC) blot=OrderLots(); } } } buyticket=OrderSend(OrderSymbol(),OP_BUYSTOP,blot,buyOpenPrise,3,0,0,NULL,MAGIC,0,Blue); } if(OrderLimit==false && BuyLimit==false && buystoporder==0 && buyorder==0 && sellorder==0) { OrderSend(OrderSymbol(),OP_BUY,dLots,Ask,3,0,0,NULL,MAGIC,0,Blue); } }
вызов функции OrderSymbol() находится за телом цикла. Таким образом, выбранным оказывается ордер, расположенный в начале списка рабочих ордеров. Это может быть какой угодно ордер, в том числе и по EURUSD.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хочу у Вас спросить совета.
Я не могу понять. Раньше все мои коды работали нормально, на любом инструменте. Я не прописывал в коде что бы советник работал только по EURUSD, а он в свою очередь не торгует на других инструментах. У меня в коде ни где, не фигурирует обозначение Simbol()="EURUSD". Почему он мне пишет следующее:
2015.06.15 10:00:04.948 2015.01.02 09:00 Tic lite GBPUSD,M1: OrderSend error 4106 (ERR_NO_MEMORY_FOR_PARAMETER_STRING 4106)
2015.06.15 09:44:02.370 2015.01.02 09:00 Tic lite GBPUSD,M1: unknown symbol name EURUSD for OrderSend function/
Что то изменилось после последних обновлений?
Вот код:
if(buystoporder==0){
if(buystoporder==0 && buyorder==0 && (BuyOpenOrders2==true)){
double buyOpenPrise = NormalizeDouble((Ask+(10*Point)),4);
if(OrderLimit==true || BuyLimit==true){
double blot;
if(sellorder==0){blot = dLots;}
if(selllots == dLots){blot = dLots;}
if(sellorder==1 && selllots>dLots){blot = selllots;}
if(sellorder>1 && selllots > dLots){
for( i9=OrdersTotal()-1;i9>=0;i9--)
{
if (OrderSelect( i9, SELECT_BY_POS,MODE_TRADES)){
if (OrderSymbol() == Symbol() && OrderType()==OP_SELL && OrderTicket()==sellticet && OrderMagicNumber()==MAGIC)
{blot=OrderLots();}}}}
buyticket = OrderSend(OrderSymbol(), OP_BUYSTOP, blot, buyOpenPrise,3,0,0,NULL,MAGIC,0,Blue);
}
if(OrderLimit==false && BuyLimit==false && buystoporder==0 && buyorder==0 && sellorder==0){
OrderSend(OrderSymbol(), OP_BUY, dLots, Ask,3,0,0,NULL,MAGIC,0,Blue);
}
if(OrderLimit==false && SellLimit==false && buyorder==0 && buystoporder==0 && sellorder>0){ double blot;
if(selllots == dLots){blot = dLots;}
if(sellorder==1 && selllots>dLots){blot = selllots;}
if(sellorder>1 && selllots > dLots){
for( i9=OrdersTotal()-1;i9>=0;i9--)
{
if (OrderSelect( i9, SELECT_BY_POS,MODE_TRADES)){
if (OrderSymbol() == Symbol() && OrderType()==OP_SELL && OrderTicket()==sellticet && OrderMagicNumber()==MAGIC)
{blot=OrderLots();}}}}
buyticket = OrderSend(OrderSymbol(), OP_BUYSTOP, blot, buyOpenPrise,3,0,0,NULL,MAGIC,0,Blue);
}
}
}
Это часть кода на открытие сделок .
А это часть кода для определения некоторых параметров, средняя стоимость открытых позиций, определение общего количества лотов для конкретного направления и т.д.:
double buylots,buyprofit,buyPrice,SrednyaCenaBuy;
pos=OrdersTotal();int buyorder;
for( i=pos-1;i>=0;i--)
{
if (OrderSelect( i, SELECT_BY_POS,MODE_TRADES)){
if (OrderSymbol() == Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==MAGIC)
{buyorder ++;
buylots = buylots+OrderLots();
buyprofit = buyprofit+ OrderProfit();
buyPrice = buyPrice+(OrderOpenPrice()*(OrderLots()/dLots));
if(Symbol()!="EURJPY" || Symbol()!="USDJPY" || Symbol()!="GBPJPY"){
if(Katirovka<=4){ SrednyaCenaBuy = NormalizeDouble(buyPrice /(buylots/dLots),4);} // определение средней цены для всех ордеров на buy
if(Katirovka>=5){ SrednyaCenaBuy = NormalizeDouble(buyPrice /(buylots/dLots),5);} // определение средней цены для всех ордеров на buy
}
if(Symbol()=="EURJPY" || Symbol()=="USDJPY" || Symbol()=="GBPJPY"){
if(Katirovka<=4){ SrednyaCenaBuy = NormalizeDouble(buyPrice /(buylots/dLots),2);} // определение средней цены для всех ордеров на buy
if(Katirovka>=5){ SrednyaCenaBuy = NormalizeDouble(buyPrice /(buylots/dLots),3);} // определение средней цены для всех ордеров на buy
}
}
}
}
double selllots, sellprofit,sellPrice,SrednyaCenaSell;
pos=OrdersTotal();int sellorder;
for( i=pos-1;i>=0;i--)
{
if (OrderSelect( i, SELECT_BY_POS,MODE_TRADES)){
if (OrderSymbol() == Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==MAGIC)
{sellorder ++;
selllots = selllots+OrderLots();
sellprofit = sellprofit+OrderProfit();
sellPrice = sellPrice+(OrderOpenPrice()*(OrderLots()/dLots));
if(Symbol()!="EURJPY" || Symbol()!="USDJPY" || Symbol()!="GBPJPY"){
if(Katirovka<=4){SrednyaCenaSell = NormalizeDouble(sellPrice /(selllots/dLots),4);} // определение средней цены для всех ордеров на sell
if(Katirovka>=5){SrednyaCenaSell = NormalizeDouble(sellPrice /(selllots/dLots),5);} // определение средней цены для всех ордеров на sell
}
if(Symbol()=="EURJPY" || Symbol()=="USDJPY" || Symbol()=="GBPJPY"){
if(Katirovka<=4){SrednyaCenaSell = NormalizeDouble(sellPrice /(selllots/dLots),2);} // определение средней цены для всех ордеров на sell
if(Katirovka>=5){SrednyaCenaSell = NormalizeDouble(sellPrice /(selllots/dLots),3);} // определение средней цены для всех ордеров на sell
}
}
}
}