Ошибки, баги, вопросы - страница 2734

 
Тесты надо уметь делать правильно и очень аккуратно.

Плюс воспроизводимо. Плюс не может быть и речи чтобы запускать чужие dll без собственной компиляции из исходников.
 

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

я человек начинающий может кто объяснит

открыв демо счет у разных трейдеров не только в России, я столкнулся с проблемой, почему то не могу выставлять лоты в стакане, т.е. могу но только по рыночной цене! Платформа Форекс.

Объясните что к чему скорее всего я чего то не знаю! 

На Мосбирже все ок через БКС т.е. я могу где угодно заходить через стакан и мою заявку в любом случае забирают. А вот на форекс терминалах такая штука не получается, могу покупать только по рыночной цене с Огромным спредом!

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
, то позиции по каждому символу разрешается закрывать только в том порядке, в котором они были открыты — сначала самую старую, затем более новую и т.д. При попытке закрыть позиции в ином порядке будет получена ошибка. Уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out...
 
не работает поск на сайте
 
Vladimir Pastushak:
не работает поск на сайте
.
 
Alexey Viktorov:
.

Сейчас уже работает.

 
Renat Fatkhullin:
Тесты надо уметь делать правильно и очень аккуратно.

проводить тесты не планировалось,  нужно было только оценить возможности

ОК, будем считать, что в такой витиеватой форме, Вы отказались, я предложил выше исходники VS

 

Доброго времени суток!

Функция трейлинга.

Подскажите в чем косяк Выдает 4756 ошибка в тестере стратегий. Запускаю в скрипте, работает.

int Tralling(int PointsTral=200)
  {
   MqlTradeRequest Request;
   MqlTradeResult Result;
   int PosTot, i, digits;
   string Symbols[]= {""};
   double SymbPt,sl,tp,
          PriceOpen[]= {0};
   i=0;
   PosTot= PositionsTotal();
   if(PosTot>0)
     {
      while(i<PosTot)
        {
         Symbols[i] = PositionGetSymbol(i);
         digits=(int)SymbolInfoInteger(Symbols[i],SYMBOL_DIGITS);
         if(PositionSelect(Symbols[i]))
           {
            PriceOpen[i] = PositionGetDouble(POSITION_PRICE_OPEN);
            SymbPt = SymbolInfoDouble(Symbols[i],SYMBOL_POINT);
            if(PositionGetInteger(POSITION_TYPE) == 0)
              {
               if(SymbolInfoDouble(Symbols[i],SYMBOL_BID) >= PriceOpen[i]+(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols[i],SYMBOL_BID)>PositionGetDouble(POSITION_SL)+(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols[i],SYMBOL_BID)-(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Request.action=TRADE_ACTION_SLTP;
                     Request.symbol = Symbols[i];
                     Request.sl=NormalizeDouble(sl,digits);
                     Request.tp=NormalizeDouble(tp,digits);
                     Request.position=PositionGetInteger(POSITION_TICKET);
                     if(!OrderSend(Request,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

            if(PositionGetInteger(POSITION_TYPE) == 1)
              {
               if(SymbolInfoDouble(Symbols[i],SYMBOL_ASK) <= PriceOpen[i]-(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols[i],SYMBOL_ASK)<PositionGetDouble(POSITION_SL)-(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols[i],SYMBOL_ASK)+(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Request.action=TRADE_ACTION_SLTP;
                     Request.symbol = Symbols[i];
                     Request.sl=NormalizeDouble(sl,digits);
                     Request.tp=NormalizeDouble(tp,digits);
                     Request.position=PositionGetInteger(POSITION_TICKET);
                     if(!OrderSend(Request,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

           }
         else
           {
            Alert("Не удалось выделить оредер по символу. ", Symbols[i], " Ошибка ", GetLastError());
           }
         i++;
        }
     }
   return (1);
  }

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта...
 

Доброго времени суток!

Не могу найти ошибку. Это Tralling stop. Если кидаю его скриптом на график, то срабатывает. В тестере стратегий возвращает ошибку 4756 (Невозможно отправить на сервер)

Помогите пожалуйста!

int Tralling(int PointsTral=200)
  {
   MqlTradeRequest Reques;
   MqlTradeResult Result;
   int PosTot, i, digits;
   string Symbols;
   double SymbPt,sl,tp,
          PriceOpen;
   i=0;
   PosTot= PositionsTotal();
   if(PosTot>0)
     {
      while(i<PosTot)
        {
         Symbols = PositionGetSymbol(i);
         digits=(int)SymbolInfoInteger(Symbols,SYMBOL_DIGITS);
         if(PositionSelect(Symbols))
           {
            PriceOpen = PositionGetDouble(POSITION_PRICE_OPEN);
            SymbPt = SymbolInfoDouble(Symbols,SYMBOL_POINT);
            if(PositionGetInteger(POSITION_TYPE) == 0)
              {
               if(SymbolInfoDouble(Symbols,SYMBOL_BID) >= PriceOpen+(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols,SYMBOL_BID)>PositionGetDouble(POSITION_SL)+(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols,SYMBOL_BID)-(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Reques.action=TRADE_ACTION_SLTP;
                     Reques.symbol = Symbols;
                     Reques.position=PositionGetInteger(POSITION_TICKET);
                     Reques.sl=NormalizeDouble(sl,digits);
                     Reques.tp=NormalizeDouble(tp,digits);
                     if(!OrderSend(Reques,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

            if(PositionGetInteger(POSITION_TYPE) == 1)
              {
               if(SymbolInfoDouble(Symbols,SYMBOL_ASK) <= PriceOpen-(SymbPt*PointsTral))
                 {
                  if(SymbolInfoDouble(Symbols,SYMBOL_ASK)<PositionGetDouble(POSITION_SL)-(SymbPt*PointsTral))
                    {
                     sl=SymbolInfoDouble(Symbols,SYMBOL_ASK)+(SymbPt*PointsTral);
                     tp=PositionGetDouble(POSITION_TP);
                     Reques.action=TRADE_ACTION_SLTP;
                     Reques.symbol = Symbols;
                     Reques.position=PositionGetInteger(POSITION_TICKET);
                     Reques.sl=NormalizeDouble(sl,digits);
                     Reques.tp=NormalizeDouble(tp,digits);
                     if(!OrderSend(Reques,Result))
                        Alert("Ошибка Треллинга ",GetLastError());
                    }
                 }
              }

           }
         else
           {
            Alert("Не удалось выделить оредер по символу. ", Symbols[i], " Ошибка ", GetLastError());
           }
         i++;
        }
     }

   return (1);
  }
 
Igor Makanu:

проводить тесты не планировалось,  нужно было только оценить возможности

ОК, будем считать, что в такой витиеватой форме, Вы отказались, я предложил выше исходники VS

Вы сделали исключительное заявление и не смогли его доказать. Кроме того, вы не в первый раз выкладываете dll, что запрещено.

Исходников для воспроизведения не вижу.

 
Renat Fatkhullin:

Вы сделали исключительное заявление и не смогли его доказать. Кроме того, вы не в первый раз выкладываете dll, что запрещено.

Исходников для воспроизведения не вижу.

Исключительность заявления в чем проявляется? Вижу лишь, что замер производительности для старого терминала показал очень хорошие результаты, имхо, как говорится - добротная вещь сделанная на века

Проверил сегодня на ПК, результаты один в один МТ4/МТ5 , проверил еще раз на ноутбуке, тоже не увидел различий, высока вероятность, что в фоне какая служба Win10 во время теста "грызла диск", время активной работы на ноуте не настраивал, Вин сама ночное время по умолчанию выставила.

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


Из багов нового билда:

это не правильная информация в логе терминала:

2020.05.06 19:03:03.895 Terminal Windows 10 build 18363, Intel Core i3  M 380 @ 2.53GHz, 0 / 2 Gb memory, 149 / 237 Gb disk, IE 11, UAC, GMT+4

 в диспетчере задач Вин  свободных 920 Мб из 2,97 Гб ,  в предыдущих билдах была более правильная информация о системе

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