PROFI에서 SUPERPROFI에 대한 모든 질문 - 1. - 페이지 36

 
IgorM :

추신: 검색 및 Google에서 기성품 NS를 찾을 수조차 없습니다. .dll을 FANN과 연결했는데 매우 자신 있게 작동하지만 .dll이 없으면 좋겠습니다.

당신이 원하는 것을 상상합니까? 일반적으로 작성된 코드를 OOP에서 비SI로 이식하시겠습니까? 아무도 없을 거라 생각합니다. 특히 dll을 통해 더 빠릅니다.

5ke를 요청하십시오. 그들은 이미 거기에서 말을 더듬었습니다.

 

동지, 나는 스스로를 호출하는 표시기를 발견했습니다. 여기에 코드의 일부가 있습니다(표시기 자체는 예고편에 있음).

........
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);
        }

테스터에서는 Expert Advisor의 iCustom()을 통해 올바르게 호출할 수 없습니다. 다음과 같은 일이 발생합니다.

iCustom()은 Expert Advisor에서 다음과 같이 보입니다.

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

테스터의 TF가 EA 설정의 TF와 일치하는 경우에만 올바르게 표시됩니다.

TF 테스터에 관계없이 올바르게 표시되도록 호출을 올바르게 구성하는 방법을 알려주십시오.
아니면 인디케이터 코드의 특성으로 인해 불가능한가요?

 

Microsoft의 기사를 읽었습니다. http://technet.microsoft.com/ru-ru/library/dd630755(v=office.12).aspx

여기에서 인용한 내용이 있습니다.

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

MT4에서 64비트 OS에서 4GB 메모리를 지정할 수 있다는 것이 밝혀졌습니다.

나는 나 자신을 확인할 수 없다. 그렇게 많은 메모리를 넣을 곳이 없습니다.

 

안녕하세요

소켓 질문입니다.

... VB(고대)를 실행하는 SCADA 시스템에서 소켓으로 데이터를 보내는 작업이 있습니다. 이마에 구현하려고했습니다. API를 사용하여 Vb에서 직접 데이터를 보내는 것이 작동했지만 한 가지 문제가 있습니다.

소켓에 대한 연결이 이루어지지 않으면 VB는 응답을 기다리고 잠시 속도가 느려집니다(중요함).

VB에서 별도의 쓰레드를 만들고 싶었지만 VB가 AddressOf를 이해하지 못하는 것으로 나타났습니다.

VB가 원격 소켓의 응답을 기다리는 것으로 예를 들어 1초를 ping(LAN의 원격 소켓)에 대한 TTL과 유사하게 어떻게 설명할 수 있습니까?

다른 옵션을 시도했습니다. C ++ 빌더에서 소켓으로 보낼 콘솔 응용 프로그램을 작성했습니다.

나는 그것을 실행하려고했고 작동합니다.

또한 VB에서 별도의 프로세스를 만들려고 했습니다. 실행기는 시작되지만 데이터를 보내지 않습니다.

가능한 곳에 퍼팅 디버그 시작 cout << << endl;

내 손으로 exe를 호출하면 WsaStartUp이 0을 채우고 0에 연결하면 send가 전송된 데이터 양을 반환합니다.

그리고 VB에서 시작하면 WsaStartUp은 0에서 작동하고 -1에서 연결하고 10038에서 각각 보냅니다.

나는 무엇이 잘못되었는지 이해하지 못한다.

다음은 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
 
자신의 dll 없이 시스템 오류 코드(GetLastError 중 하나)를 찾는 방법은 무엇입니까? 본 것 같은데 못 찾겠어요. 다른 기능 이 import 된 것으로 기억합니다. 어떤 기능인지는 기억나지 않습니다.
 
#import "ntdll.dll"
        int RtlGetLastWin32Error();
        int RtlSetLastWin32Error (int dwErrCode);
#import


 
와우, 당신이 필요로하는 것입니다. 고맙습니다.
 

여보세요

이 히스토리 파일이 MT 차트에 표시되지 않는 이유는 무엇입니까?

파일:
 

DLL에서 전송된 텍스트 정보의 크기를 학습할 필요가 있습니다. sizeof()가 MKL5에서 이 작업을 수행한다고 가정해 보겠습니다.

StringLen()을 통해 MKL4에서 수행하는 것이 맞습니까? 어떻게 정확할까요?

ps 여기에 세 번째 매개변수를 보내는 데 관심이 있습니다. http://msdn.microsoft.com/en-us/library/aa365747(v=vs.85).aspx

 
Heroix :

DLL에서 전송된 텍스트 정보의 크기를 학습할 필요가 있습니다. sizeof()가 MKL5에서 이 작업을 수행한다고 가정해 보겠습니다.

StringLen()을 통해 MKL4에서 수행하는 것이 맞습니까? 어떻게 정확할까요?

ps 여기에 세 번째 매개변수를 보내는 데 관심이 있습니다. http://msdn.microsoft.com/en-us/library/aa365747(v=vs.85).aspx

물론 가능합니다. 여기 에 MQL4에서 이 기능으로 작업하는 예가 있습니다.