Errori, bug, domande - pagina 606

 
uncleVic:
Non è molto chiaro perché? Dopo tutto, se il vostro programma ha cancellato un oggetto, lo sa. Ma se l'oggetto viene rimosso e il programma non ne è nemmeno a conoscenza, il Terminale è colpevole di conseguenza.

non è così semplice (è un peccato che sia scomparso dal service desk, cercherò di reintrodurre il problema).

Abbiamo bisogno di gestire la situazione quando un utente cancella accidentalmente un oggetto dal grafico. Ma questo oggetto non dovrebbe essere cancellato. Per esempio è il substrato di un elenco o di un menu a discesa.

Quindi nel codice OnChartEvent ho bisogno di gestire questo evento e ridisegnare il controllo.

Quindi devo cancellare tutti gli altri oggetti di questo controllo. Penso che non ci sia bisogno di spiegare perché dovrei cancellare tutti gli oggetti superiori di questo controllo.

Così si scopre che elaborando questo evento l'algoritmo entra in un ciclo profondo. Lo script cancellerà gli oggetti e otterrà l'evento che gli oggetti sono stati cancellati e significa che questo evento deve essere elaborato di nuovo - rimuovere e rendere... In breve, un pasticcio algoritmico.

Non so come risolvere questa situazione con l'attuale set CHARTEVENT. Ecco perché suggerisco, che lo script capisca - di chi è stata la rimozione - dal terminale (dall'utente furbo) o dallo script stesso (dallo stesso programmatore).

Prima o poi dovrete occuparvene voi stessi, quando inizierete a lavorare attivamente con i controlli.

 
sergeev:

non è così semplice (è un peccato che il servizio di assistenza sia scomparso, cercherò di scoprire di nuovo il problema).

Non so come risolvere questa situazione nell'attuale set di CHARTEVENT. Ecco perché suggerisco, che lo script dovrebbe capire - chi l'ha cancellato - dal terminale (dall'utente furbo) o dallo script stesso (dallo stesso programmatore).

Avreste dovuto affrontarlo prima o poi, quando iniziate a lavorare attivamente con i controlli.

L'ho incontrato io stesso. In una delle prime versioni di Art Library (in termini di controlli) questo meccanismo era implementato, ma per certi motivi è stato rimosso (ho intenzione di ripristinarlo in seguito).

Non c'è niente di intelligente. Ogni controller dovrebbe essere in grado di ripristinare se stesso. Il substrato, quando viene cancellato, rimuove tutto ciò che si trova su di esso. Il ripristino è fatto dagli eventi.

 
uncleVic:


Non c'è niente di intelligente. Ogni controllore deve essere in grado di ripararsi da solo. Il substrato, quando viene cancellato, cancella tutto quello che c'è sopra. Poi il restauro è fatto dagli eventi.

Beh, è quello che sto dicendo, che quando si riceve un evento di cancellazione, il controllo si ripristina.

Ma appena il controllo si ripristina (cancella gli oggetti superiori) ricomincerà a cancellare gli eventi.

Comunque, perché mi preoccupo di nuovo di dimostrare l'ovvio :)) Quando la vostra azienda aveva bisogno dell'evento del movimento del mouse per lo sviluppo della libreria standard, l'hanno aggiunto al volo e senza domande inutili. La pratica dei doppi standard diventa ....
Ma penso che se questa stessa proposta fosse stata inviata dall'utente al Service Desk, lo avrebbero trascinato per un altro mese per scoprire perché ne avevano bisogno.

Credetemi, ne avete bisogno! Ho già scritto nel Service Desk che non cerchiamo di promuovere MT5 e MQL5, ma lo facciamo per il nostro beneficio.

Passiamo onestamente tutti i modi per trovare soluzioni rapide e compatte per i nostri compiti in MQL. Se incontriamo un ostacolo, scriviamo sempre al Service Desk. Ma non sempre vi incontriamo un'intesa.

Come ho scritto sopra, sono molto contento che tu stia facendo la libreria di controllo da solo. Potete almeno avere un piccolo assaggio di tutti i nostri problemi che devono essere risolti senza alcuna comprensione da parte vostra.

PS.
Victor, scusa, che così gravemente, solo una spina nel fianco.
Vorrei solo chiedere alla vostra azienda di ascoltare le richieste dei programmatori MQL. Dopo tutto, in MQL risolviamo molti più compiti diversi di quanto si possa immaginare. A volte vorrei solo sentire la risposta nel Service Desk: sì, lo faremo nella prossima build.

Grazie per la vostra comprensione.

 

sergeev:

... quando la tua azienda aveva bisogno di un evento di spostamento del mouse ...

Se sapeste quanto ho dovuto rompere i pugni per i programmatori "adulti" per farlo...
 
A rischio di sembrare poco originale, ma comunque... Signore e signori - quando aprirà il mercato? Qualcuno conosce almeno una linea temporale approssimativa?
 
uncleVic:
Se sapeste quanto ho dovuto rompere i pugni per i programmatori "adulti" per farlo...
Victor, io e te siamo sulla stessa barca :))stiamo insieme.
 

Sto cercando di aprire una posizione lunga basata sullo script per un simbolo in cui è implementata l'esecuzione in borsa ( SYMBOL_TRADE_EXECUTION_EXCHANGE, Exchange execution).

#include <Trade\Trade.mqh>                   
input double InpLots          =0.1;  
input int    InpTakeProfit    =500;
input int    InpSL            =300;
CTrade       myTrade;

void OnStart()
  {   
   double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double tp=SymbolInfoDouble(_Symbol,SYMBOL_BID)+InpTakeProfit*_Point;
   double sl=SymbolInfoDouble(_Symbol,SYMBOL_BID)-InpSL*_Point;
   myTrade.SetTypeFilling(ORDER_FILLING_IOC);
   myTrade.PositionOpen(_Symbol,ORDER_TYPE_BUY,InpLots,price,0,0,"Test Buy");
   Sleep(500); // интервал задержки
   myTrade.PositionModify(_Symbol,sl,tp);
  }

Ricevo un errore:

  • scambio acquistare 0,10 EURUSD.e a 0,00000;
  • fallito scambio comprare 0,10 EURUSD.e a 0,00000 [Stop non valido].

Cioè il terminale non vede il prezzo a cui voglio comprare. Ho provato diversi prezzi ma ho ricevuto ancora 0,00000.

Ho provato uno script simile che gira in MT4 con le stesse condizioni di scambio, lì ha funzionato... Non in MT5...

Si prega di puntare il naso sull'errore.

 
denkir:
  • fallito scambio comprare 0,10 EURUSD.e a 0,00000 [Stop non valido].

Questo è un messaggio del server, non un messaggio del terminale. Non ho altro da dire su questo argomento.

Invia una richiesta al Service Desk.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
papaklass:

Perché si verifica un errore di overflow dell'array?

Beh, di solito ci si scrive qualcosa prima di leggerlo...
 
papaklass:

Perché si verifica un errore di overflow dell'array?


E dove avete la chiamata ArrayResize?
Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5