[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 593

 
Dimka-novitsek:
Прошу прощения, какие разделители?


точка и запятая. Ну и разделители списков разные, запятая и точка с запятой.

Попробуйте импорт сделать с указанием нужных разделителей. Или переделайте региональные настройки на нужные разделители. Успехов

 
Спасибо!!!! Даа, там же точка. А как переделайте региональные настройки на нужные разделители ??
 
А в каком порядке устанавливать софт Ганзилла? Или пост пиринести в соответствующую ветку?
 
Dimka-novitsek:
Спасибо!!!! Даа, там же точка. А как переделайте региональные настройки на нужные разделители ??
Зачем региональные настройки трогать? На то они региональные, что настраиваются один раз. Настройки есть в EXCEL. Ещё ФАК посмотреть можно. Там один из последних постов об этих разделителях.
 

Спасибо!!

Извиняюсь, а дайте ссылку на один из последних постов об этих разделителях !

Гуглил, яндексил- пробовалприминить числовой формат через Главная-число-числовой формат, ничего не произашло. Не вручную же заминять четыреста точек на заптые! Мощная и умная эта прога эксель, а туповатая!

Фу, заминил!

 
Dimka-novitsek:

Спасибо!!

Извиняюсь, а дайте ссылку на один из последних постов об этих разделителях !

https://www.mql5.com/ru/forum/131853/page5
 
Спасибо!!!
 

вообщем вопрос прост, но я все такине понимаю сути закрытия нескольких ордеров)

поясните мне пожалуйста, почему 1й вариант кода работает так же как и второй(в 1м варианте через select_by_pos закрывались все 4ре открытые сделки через 0й индекс, а во втором, 1й 2й 3й и 4й)

и можно какую нить полезную мануалку или еще что, чтобы посмотреть как люди сделки закрывают, чтобы не проскакивало, или мануалка как ПРАВИЛЬНО их нужно закрывать, ну и как работает select_by_pos конечно же) а то везде примеры какие то урезанные, а в хелпе вообще примера с его использованием нет)

да, и может кто подсказать хорошие видеоуроки по программированию на MQL4???Заранее СПАСИБО)

1й ВАРИАНТ(в нем все 4ре открытых ордера закрылись при тесте, хотя выделял все 4ре раза с индексом 0 при закрытии):

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);

}

2й ВАРИАНТ(в нем тожее закрылись все 4ре сделки, но индексы 1 2 3 и 4):

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);

}


 

Добрый вечер! Прошу помощи с мультивалютным советником по MACD. Советник правильно следует кретериям открытия позиций, но закрытие "по условию" не работает. Я конечно начал использовать трейлинг-стоп, но правильное закрытие не дает мне покоя.

//+------------------------------------------------------------------+
string lSymbol;
int init ()
{ 
 lSymbol = Symbol();
 return (0);
}
int deinit()
{return(0);}
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   double bid, ask, point, digits;
   int cnt, ticket, total;
   
  total = SymbolOrdersTotal (lSymbol);
  
  if (total<1);
  {
    bid   = MarketInfo(lSymbol,MODE_BID);
    ask   = MarketInfo(lSymbol,MODE_ASK);
    point = MarketInfo(lSymbol,MODE_POINT);
    digits= MarketInfo(lSymbol,MODE_DIGITS);

Так выглядит оснавная часть

 for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==lSymbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*point))
                {
                 OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(bid-OrderOpenPrice()>point*TrailingStop)
                 {
                  if(OrderStopLoss()<bid-point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
              {
               OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-ask)>(point*TrailingStop))
                 {
                  if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                }
              }
           }
        }
     }
   return(0);
  }
  
   
  int SymbolOrdersTotal(string lSymbol)
{
   int Res=0;
   int total=OrdersTotal();
   for (int i=0;i<total;i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderSymbol()==lSymbol)
         {
            Res++;
         }
      }
   }
   return(Res);
}
// the end.

А это блок закрытия. Пожалуйста, помогите найти ошибку!

 
Vinin:

А каталог существует?


да, и в папке эксперт... и в папке тестер

но все равно скриншот не работает.

Причина обращения: