Qualsiasi domanda da un PROFI a un SUPER PROFI - 1. - pagina 21

 
Mostrato come. Il post è stato corretto.
 
Capisco, grazie.
Immagino che posso dimenticarmi di lavorare completamente con MySQL in MQL (senza le mie DLL)... peccato...
 

Cosa c'è che non va nella biblioteca?

Nel caso del ritorno di un puntatore, deve essere statico e nello stesso processo.

 
Zhunko:

Cosa c'è che non va nella biblioteca?

Se fai la tua dll, non ha senso rompere parte del codice in MQL e parte nella libe. tutto MySQL andrà dentro questa dll.

 
Ciao a tutti. Qualche consiglio? VPS Windows Web Server 2008 32 bit - non R2 (RAM 256) - funzionerà per MT4?
 
sergeev:

Se fai la tua dll, non ha senso rompere parte del codice in MQL e parte in lib. tutto MySQL andrà dentro questa dll.

Certo! Non c'è bisogno di scrivere in MQL, se potete. Quasi tutto è nella DLL. Inizio a trasferire tutto nella mia applicazione. Gestirò il terminale a distanza.
 

Algoritmo di enumerazione delle frazioni

I). Si richiede di trovare un algoritmo per enumerare le frazioni, in modo che:

A + B + C + n + ... = 100%

Ogni elemento dell'insieme {A, B, C, n} deve avere criteri standard: vincoli laterali massimi e minimi e passo incrementale di tipo: start, stop, ripido;

Un esempio del problema:

Dato un insieme

Y{A,B,C,n};

Ogni elemento di tale insieme può essere variato da -100% a +100%, in passi del 10%. La somma di tutti gli elementi modulo deve essere uguale al 100%: A+B+C+n=100%.

Trova una matrice D(x,numero_di_elementi_multipli_Y) che descriva la distribuzione di tutte le possibili frazioni tra A, B, C, n, per esempio

A B C

100 0 0

90 10 0

90 0 10

80 10 10

80 0 20

...

Esempi di constatazione errata:

A B C

-50 30 120 - l'elemento C è maggiore del limite del 100%

35 30 35 - il passo non è uguale al 10%

70 30 10 - somma non uguale al 100%

-50 60 90 - somma di tutti gli elementi modulo non uguale a 100% (50+60+90=200)

II*). Trova la soluzione della ricerca di frazioni per l'insieme N con l'ottimizzatore MT5/MT4 in modo che i vincoli di ogni elemento dell'insieme possano essere dati dai vincoli standard Start, Step, Stop.

 


Come nota introduttiva, ecco un algoritmo che implementa un caso speciale del problema:

//+------------------------------------------------------------------+
//|                                                  Optimizator.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int A, B, C;
   int handle = FileOpen("test.csv",FILE_WRITE,'\t');
   for(A=0; A<=100;A+=10)
   {
      for(B=0;B<=100-A;B+=10){
         C=100-(A+B);
         FileWrite(handle,A,B,C);      
      }
   }
   FileClose(handle);
  }
//+------------------------------------------------------------------+

Come potete vedere, ogni elemento dell'insieme, tranne l'ultimo, richiede un ulteriore ciclo for. Questa non è una buona soluzione, perché man mano che si cambia il numero di elementi nell'insieme, bisogna inserire o eliminare altri cicli.

 
C-4:


Come nota introduttiva, ecco un algoritmo che implementa un caso speciale del problema:

Come potete vedere, ogni elemento dell'insieme, tranne l'ultimo, richiede un ulteriore ciclo for. Questa non è una buona soluzione, perché man mano che cambiate il numero di elementi nell'insieme, dovete inserire o eliminare ulteriori cicli.


Fate solo un ciclo while per uno di A o B o C.

All'interno di esso, analizzare se per le lacune

 
sergeev:

fare solo un ciclo while su uno di A o B o C.

All'interno di esso, analizzare se per le lacune da raggiungere


Il punto è che ancora B e C saranno combinati tra loro, e avete bisogno di un nuovo ciclo per questo. Forse questo problema può essere risolto ricorsivamente, anche se ci possono essere algoritmi più semplici.