Cualquier pregunta de un PROFI a un SUPER PROFI - 1. - página 36

 
IgorM:

ZS: No encuentro un NS listo buscando y googleando, el .dll con FANN funciona bastante bien, pero me gustaría sin el .dll

¿Tienes idea de lo que quieres? ¿Para portar código OOP normalmente escrito a un NS subdesarrollado? Creo que nadie lo hará. Más aún, sería más rápido a través de .dll.

Pídelo en el 5, ahí ya tartamudean.

 

Compañeros, me encontré con un indicador que se llama a sí mismo, aquí está parte del código (el indicador en sí está en el trailer):

........
IndicatorFileName=WindowExpertName(); 
........
for(i=0,int y=0; i<limit; i++)
        {
         if(Time[i]<TimeArray[y]) y++;
         sslHup[i]=iCustom(NULL,TimeFrame,IndicatorFileName,Lb,SSL_BarLevel,0,y);
         sslHdn[i]=iCustom(NULL,TimeFrame,IndicatorFileName,Lb,SSL_BarLevel,1,y);
        }

El probador no consigue llamarlo correctamente utilizando iCustom() desde el Asesor Experto. Esto es lo que conseguimos:

iCustom() del mismo en el Asesor Experto se ve así:

iCustom (Symbol(), 0, "SSL_fast_sBar_Good_V12_1h", 1, 40, TF, 0, BarShift)

Se muestra correctamente sólo si el TF del probador es el mismo que el TF en la configuración del EA.

¿Puedes aconsejar cómo realizar correctamente su llamada para que se muestre correctamente independientemente del TF del probador?
¿O no se puede hacer debido a las peculiaridades del código del indicador?

Archivos adjuntos:
 

Lea un artículo de Microsoft: http://technet.microsoft.com/ru-ru/library/dd630755(v=office.12).aspx

He aquí una cita del mismo:

64-разрядные выпуски Windows Server могут выполнять адресацию 16 терабайт виртуальной памяти с помощью плоской модели адресации. Виртуальная память разделяется на равные части между виртуальными адресными пространствами для приложений и операционной системы. Увеличение адресного пространства виртуальной памяти в 64-разрядной среде может благоприятно сказаться даже на работе 32-разрядных приложений. Например, хотя 32-разрядное приложение по-прежнему ограничено 4 ГБ виртуальной памяти, ему больше не требуется разделять это пространство с операционной системой. В результате возникает фактическое расширение виртуальной памяти.

¿Resulta que MT4 puede direccionar hasta 4GB de memoria bajo un sistema operativo de 64 bits?

No puedo comprobarlo conmigo mismo. No hay ningún lugar donde poner tanta memoria.

 

Hola

Pregunta sobre los enchufes.

... Hay una tarea del sistema SCADA que ejecuta VB (antiguo) para enviar datos al socket. He intentado implementarlo directamente desde Vb mediante la API, pero hay un problema

Si la conexión al socket falla, VB espera la respuesta y se ralentiza un poco (esto es crítico)

Quería intentar crear un hilo único desde VB, pero resulta que VB no entiende AddressOf.

¿Cómo puedo explicar VB para esperar la respuesta de socket remoto por ejemplo 1 seg como TTL para ping'a (socket remoto en local)?

Intentado otra manera: en C++ bilder escribió una aplicación de consola para enviar a socket.

Intenté correrlo y funciona.

Luego intenté crear un proceso independiente desde VB. El Runtime se ejecuta pero no envía ningún dato.

Empecé a depurar el proceso y a poner cout<< <<endl siempre que podía;

Veo que cuando invoco el exe manualmente, WsaStartUp trabaja con 0 y se conecta a 0, envía el número de datos transferidos

Pero cuando inicio con VB, WsaStartUp funciona para 0 y conectar para -1, enviar respectivamente para 10038.

No sé qué pasa.

Aquí está el código de VB

Public Declare Function socket Lib "WSOCK32.DLL" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long

Public Declare Function send Lib "WSOCK32.DLL" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal Flags As Long) As Long
Public Declare Function connect Lib "wsock32" (ByVal socket As Long, addr As sockaddr, ByVal namelen As Long) As Long


Public Declare Function closesocket Lib "WSOCK32.DLL" (ByVal s As Long) As Long
Public Declare Function inet_addr Lib "wsock32" (ByVal cp As String) As Long
Public Declare Function htons Lib "ws2_32.dll" (ByVal hostshort As Long) As Integer
Public Declare Function WSAStartup Lib "ws2_32.dll" (ByVal wVR As Long, lpWSAD As WSA_Data) As Long
Public Declare Function WSACleanUp Lib "wsock32" Alias "WSACleanup" () As Long

Type sockaddr
    sin_family As Integer
    sin_port As Integer
    sin_addr As Long
    sin_zero As String * 8
End Type

Public Const WSADESCRIPTION_LEN = 257
Public Const WSASYS_STATUS_LEN = 129
Public Const WINSOCK_VERSION = 1
Public Type WSA_Data
    wVersion       As Integer
    wHighVersion   As Integer
    szDescription  As String * WSADESCRIPTION_LEN
    szSystemStatus As String * WSASYS_STATUS_LEN
    iMaxSockets    As Integer
    iMaxUdpDg      As Integer
    lpVendorInfo   As Long
End Type

'===================================================================
Const INFINITE = &HFFFF
Const STARTF_USESHOWWINDOW = &H1


Public Const SW_NORMAL = 1

Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessId As Long
    dwThreadId As Long
End Type

Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type

Private Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Long
End Type


Public Const NORMAL_PRIORITY_CLASS = &H20

Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As _
                            String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, _
                            lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags _
                            As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
                            lpProcessInformation As PROCESS_INFORMATION) As Boolean
Private Declare Function GetLastError Lib "kernel32" () As Long
Public Function SuperShell(ByVal App As String, ByVal commandline) As Integer

    Const CREATE_NO_WINDOW = &H8000000
    Dim startProc As Boolean
    Dim pclass As Long
    Dim sinfo As STARTUPINFO
    Dim pinfo As PROCESS_INFORMATION
    'Not used, but needed
    Dim sec1 As SECURITY_ATTRIBUTES
    Dim sec2 As SECURITY_ATTRIBUTES
    'Set the structure size
    sec1.nLength = Len(sec1)
    sec2.nLength = Len(sec2)
    'sinfo.cb = Len(sinfo)
    'Set the flags
    'sinfo.dwFlags = STARTF_USESHOWWINDOW
    'Set the window's startup position
    'sinfo.wShowWindow = start_size
    'Set the priority class
    'pclass = Priority_Class

    'Start the program                                                            CREATE_NO_WINDOW
    startProc = CreateProcess("e:\\project1.exe", commandline, sec1, sec2, False, 0, 0&, "e:\", sinfo, pinfo)

End Function
Public Sub testdll()
    Dim str
    str = "srwevbwert4th"    
    modSocket.SuperShell "e:\\Project1.exe", str
End Sub
 
¿Cómo averiguar el código de error del sistema (GetLastError) sin la propia dll? Creo que lo he visto, pero no lo encuentro. Recuerdo que parece importar otra función, no recuerdo cuál.
 
#import "ntdll.dll"
        int RtlGetLastWin32Error();
        int RtlSetLastWin32Error (int dwErrCode);
#import


 
Ya está, eso es todo. Gracias.
 

Hola

¿Por qué este archivo histórico no aparece en el gráfico de MT?

Archivos adjuntos:
 

Es necesario conocer el tamaño de la información del texto pasado, en una DLL. Digamos que en MKL5 esto se hace mediante sizeof().

¿Sería correcto hacerlo en MKL4 mediante StringLen()? ¿Cómo podría ser correcto?

p.d. interesado en enviar el tercer parámetro aquí:http://msdn.microsoft.com/en-us/library/aa365747(v=vs.85).aspx

 
Heroix:

Es necesario conocer el tamaño de la información del texto pasado, en una DLL. Digamos que en MKL5 esto se hace mediante sizeof().

¿Sería correcto hacerlo en MKL4 mediante StringLen()? ¿Cómo podría ser correcto?

p.d. interesado en enviar el tercer parámetro aquí:http://msdn.microsoft.com/en-us/library/aa365747(v=vs.85).aspx

Por supuesto que sí. Hay ejemplos de trabajo con esta función en MQL4 aquí.
Razón de la queja: