Errori, bug, domande - pagina 2734

 
I test devono essere fatti correttamente e con molta attenzione.

Più riproducibile. Inoltre è fuori questione eseguire il dll di qualcun altro senza compilarlo da solo dai sorgenti.
 

Buon pomeriggio a tutti, vorrei chiedere la seguente cosa

Sono un principiante, forse qualcuno può spiegarmi

Ho aperto un conto demo con diversi trader, non solo in Russia, mi sono imbattuto in un problema: non posso piazzare lotti sul mercato, cioè posso ma solo al prezzo di mercato! Posso solo mettere i lotti al prezzo di mercato!

Probabilmente non so qualcosa!

Posso andare ovunque attraverso il mercato e prenderanno comunque il mio ordine. Ma non posso farlo sui terminali forex, posso solo comprare al prezzo di mercato con uno spread enorme!

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

Ora funziona.

 
Renat Fatkhullin:
I test devono essere fatti correttamente e con molta attenzione.

non erano previsti test, solo per valutare le capacità

OK, consideriamo che in questo modo florido, avete rifiutato, ho offerto le fonti VS sopra

 

Buon pomeriggio!

Funzione di trascinamento.

Puoi dirmi cosa c'è che non va, ottengo l'errore 4756 in strategy tester. Eseguendolo nello script, funziona.

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
Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта...
 

Buon pomeriggio!

Non riesco a trovare l'errore. È una fermata di Tralling. Se lo butto sul grafico con lo script, funziona. Nel tester di strategia, restituisce l'errore 4756 (Impossibile inviare al server)

Per favore, aiutatemi!

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:

non erano previsti test, solo una valutazione delle capacità

OK, consideriamo che in questo modo florido, avete rifiutato, ho offerto le fonti VS sopra

Lei ha fatto un'affermazione eccezionale e non l'ha provata. Inoltre, non è la prima volta che hai postato un dll, il che è proibito.

Non vedo il codice sorgente per la riproduzione.

 
Renat Fatkhullin:

Lei ha fatto un'affermazione eccezionale e non l'ha provata. Inoltre, non è la prima volta che hai postato un dll, che è vietato.

Non vedo il codice sorgente per la riproduzione.

Cosa dimostra l'esclusività della dichiarazione? Tutto quello che vedo è che la misurazione delle prestazioni per il vecchio terminale ha dato ottimi risultati, imho, come si dice - una buona cosa fatta da secoli.

L'ho controllato sul PC oggi e ho ottenuto gli stessi risultati di MT4/MT5, l'ho controllato di nuovo sul portatile, anche io non ho visto alcuna differenza, l'alta probabilità che in background di qualche servizio Win10 "masticato il disco", non ho configurato il runtime sul portatile, Win ha configurato il tempo di notte per impostazione predefinita.

Di notte c'era ancora il desiderio di capire che cosa la differenza, oggi su un principio - lasciarlo lavorare, non vedo il codice sorgente non ha senso per fare commenti o tagliare le parti per iniziare il chiarimento della situazione o discussione, non voglio farlo.


Dei bug della nuova build:

non è un'informazione corretta nel log del terminale:

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

Win libera 920 MB di 2,97 GB nel task manager, le build precedenti avevano informazioni di sistema più corrette