Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 848

 
друзья подскажите! как мне прописать в кодах советниках чтоб они работали каждый со своей парой валюте ??? магик разный символе указал пару,не работает.
 
logut:
друзья подскажите! как мне прописать в кодах советниках чтоб они работали каждый со своей парой валюте ??? магик разный символе указал пару,не работает.
Магик нужен только если на одном символе несколько "торговцев", а так достаточно символ проверять.
 
Здравствуйте. Написал советник, на тестере показывает хорошие результаты. Компилируется без ошибок. Прикреплён к евро доллару. 
В реальной торговле сделки не открываются, при возникновении условий для открытия сделки выдаёт сообщение:
2015.02.11 14:03:03.656 '1435109': order buy 0.01 EURUSD opening at market sl: 1.12697 tp: 1.13747 failed [Invalid S/L or T/P]
Как я понимаю это обозначает что не правильный стоп или тейк. В ручную ордер с данными стопами и тейками выставляется. Меду ценой и стопом
и ценой и тейком расстояние в несколько раз превышающее спред. Все вычисления стопа и теёка нормализованы. В чём может быть причина не пойму, помогите разобраться.
Вот программа:
 
int start() 
 {
 
//------------------------------------------------------------------------------------------------

if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)

        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

 
Rogoza:
Здравствуйте. Написал советник, на тестере показывает хорошие результаты. Компилируется без ошибок. Прикреплён к евро доллару. 
В реальной торговле сделки не открываются, при возникновении условий для открытия сделки выдаёт сообщение:
2015.02.11 14:03:03.656 '1435109': order buy 0.01 EURUSD opening at market sl: 1.12697 tp: 1.13747 failed [Invalid S/L or T/P]
Как я понимаю это обозначает что не правильный стоп или тейк. В ручную ордер с данными стопами и тейками выставляется. Меду ценой и стопом
и ценой и тейком расстояние в несколько раз превышающее спред. Все вычисления стопа и теёка нормализованы. В чём может быть причина не пойму, помогите разобраться.
Вот программа:
 
int start() 
 {
 
//------------------------------------------------------------------------------------------------
if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)
        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

Свой код оформляй так. Для этого есть кнопка SRC

Не открывает потому, что на таких типах счетов сначала открываются ордера без стопов, а потом OrderModify()

 
evillive:
Магик нужен только если на одном символе несколько "торговцев", а так достаточно символ проверять.
так это я понял. сейчас меня волнует вопрос как сделать советник мультивалютным ???
 
AlexeyVik:

Свой код оформляй так. Для этого есть кнопка SRC

Не открывает потому, что на таких типах счетов сначала открываются ордера без стопов, а потом OrderModify()

Спасибо огромное!буду переписывать код. 
 
logut:
так это я понял. сейчас меня волнует вопрос как сделать советник мультивалютным ???
Открыть кодобазу, найти там мультивалютник и разобраться как оно устроено.
 

Вообще жестко затупил что-то и не могу понять, как сделать.

Есть переменные line1,line2,line3 и т.д. Хочу через оператор цикла for посчитать значение для каждой переменной.

Как правильно сделать перечисление переменных line? Пытался сделать как "line"+"i", но получается бред, конечно.

for(int i=1;i<=111111111111;i++)
        {
            if("line"+"i">0)counter++;
        }
 
Наверное лучше сделать массив line[] и тогда в цикле перебрать.
 

Почему выводит не тот обьект ? Должен быть Треугольник указывающий налево https://docs.mql4.com/ru/constants/objectconstants/arrows код 3, а появляется стрелка на верх Wingdings код 241.

 obj

 

Код программы (у меня стоит ObjectSet(objName, OBJPROP_ARROWCODE, 3);)

void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}
Причина обращения: