[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 247

 

sss2019 , 이제 이해할 시간이 없습니다. 죄송합니다.

Zhunko :
옳지 않다. 위와 같이 맞습니다.

손에 닿는 대로 수정하고 거기에 있는 메시지의 코드를 편집하겠습니다.

문제. 문자열에 대한 포인터를 얻는 방법은 무엇입니까? string MQL4는 내가 이해하는 대로 lpsz C++입니다. 그러나 문자열 자체의 주소 를 얻는 방법은 무엇입니까?

 
같은 고문이 다른 마법으로 작동하게 하는 방법을 아는 사람이 누구인지 알려주십시오. 작업은 잠금이 나타나면 로봇이 나머지 명령을 방해하지 않고 이 상황을 개별적으로 해결하는 것입니다. 즉, 베이(매직 001)에 1개의 포지션이 열려 있고 시장이 우리의 방식대로 진행되지 않고 거래를 마감하는 대신 매직 001을 사용하여 반대 거래가 매도에서 열리면 로봇이 이 상황을 해결하지만 순서대로 상황이 해결될 때까지 오래 기다리지 않고 다시 하고 싶지만 매직(002)으로 베이를 열고 추세에 실패하면 매직(002)으로 매도 락이 다시 열리는 식이다. 말하자면 서로 다른 마법을 사용하여 거래를 레이어로 만드는 방법을 알려주세요. 누군가가 올 수 있습니까? 또는 구현하는 방법?
 
pasha5282 :
같은 고문이 다른 마법으로 작동하게 하는 방법을 아는 사람이 누구인지 알려주십시오. 작업은 잠금이 나타나면 로봇이 나머지 명령을 방해하지 않고 이 상황을 개별적으로 해결하는 것입니다. 즉, 베이(매직 001)에 1개의 포지션이 열려 있고 시장이 우리의 방식대로 진행되지 않고 거래를 성사시키는 대신 매직 001을 사용하여 반대 거래가 매도에서 열리면 로봇이 이 상황을 해결하지만 순서대로 상황이 해결될 때까지 오래 기다리지 않고 다시 하고 싶지만 매직(002)으로 베이를 열고 추세에 실패하면 매직(002)으로 매도 락이 다시 열리는 식이다. 말하자면 서로 다른 마법을 사용하여 거래를 레이어로 만드는 방법을 알려주세요. 누군가가 올 수 있습니까? 또는 구현하는 방법?
 int MagicNumber= 001 ;
//---
if ( OrdersTotal ()> 0 ) // проверяем, есть ли ордера
{   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) // перебор ордеров
   {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) // выбирается ордер среди открытых и отложенных ордеров
      {   if (OrderSymbol()!= Symbol ()) continue ; // проверяем - ордер по текущему символу?
         if (OrderMagicNumber()!=MagicNumber) continue ; // проверяем - ордер с нужным магиком?
         //---
         if (OrderType()==OP_BUY) // если это открытая позиция на покупку, то ...
           {   // ... какие-то действия
                 return ( 0 );
           }
         //---
         else
         if (OrderType()==OP_SELL) // если это открытая позиция на продажу, то ...
           {   // ... какие-то действия
                 return ( 0 );
           }
}  }  }

원하는 기호 및 마법에 대한 미결 및 보류 주문 카운터의 예

 string _Symbol = "AUDUSD" ;
int MagicNumber= 555 ;
//---
int Opened_pos= 0 ;
if ( OrdersTotal ()> 0 )
{   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
      {   if (OrderSymbol()== _Symbol )
         {   if (OrderMagicNumber()==MagicNumber)
            Opened_pos++;
}  }  }  }
 

어떤 이유로 테스트 중에 터미널이 꺼졌습니다. 이제 전원을 켜면 약 150MB의 메모리를 사용하기 시작하고 멈춥니다. 다시 설치하려고 했지만 그 전에 모든 파일을 전송했습니다. 폴더를 열었을 때 내가 만든 모든 파일이 거기에 있지는 않다는 것을 알았습니다. 나머지는 어디에 있습니까?


 
silhouette :

어떤 이유로 테스트 중에 터미널이 꺼졌습니다. 이제 전원을 켜면 약 150MB의 메모리를 사용하기 시작하고 멈춥니다. 다시 설치하려고 했지만 그 전에 모든 파일을 전송했습니다. 폴더를 열었을 때 내가 만든 모든 파일이 거기에 있지는 않다는 것을 알았습니다. 나머지는 어디에 있습니까?

왼쪽 화면은 4가 아닌 MQL5입니다.
 
gyfto :

sss2019 , 이제 이해할 시간이 없습니다. 죄송합니다.


손에 닿는 대로 수정하고 거기에 있는 메시지의 코드를 편집하겠습니다.

문제. 문자열에 대한 포인터를 얻는 방법? string MQL4는 내가 이해하는 대로 lpsz C++입니다. 그러나 문자열 자체의 주소 를 얻는 방법은 무엇입니까?

MQL4에는 없습니다. 문자열을 DLL에 전달하고 거기에서 주소를 INT로 반환할 수 있습니다.
 
paladin80 :
왼쪽 화면은 4가 아닌 MQL5입니다.

네번째. 4번째 파일을 클릭하면 5번째 파일까지 열리는데 무슨 이유인지
 
silhouette :
네번째. 4번째 파일을 클릭하면 5번째 파일까지 열리는데 무슨 이유인지

MetaEditor for 5를 열고 왼쪽 창에서 "내비게이터" -> 폴더를 마우스 오른쪽 버튼으로 클릭 -> "폴더 열기"에서 폴더를 검색해 보십시오.



 
Zhunko :
MQL4에는 없습니다. 문자열을 DLL에 전달하고 거기에서 주소를 INT로 반환할 수 있습니다.

//C++
 #include "stdafx.h"
#include <windows.h>
#define MT4_EXPFUNC __declspec(dllexport)
struct MqlStr {
   int                len;
   char              * string ;
  };
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
     return TRUE;
}
MT4_EXPFUNC int __stdcall GetStrAddress( const char *str) {    
    MqlStr* s = (MqlStr*)str;
     return ( int )s-> string ; 
}

//MQL4

 #import "StrAddress.dll"
int GetStrAddress( string str); //на входе имя инициализированной строки, на выходе её адрес
#import
//объявляем:
string s= "something" ;
int address;
//пример использования:
int start(){
   address=GetStrAddress(s);
   Print ( " адрес s равен " s);
}

다른 분들도 저와 같은 고통을 겪지 않도록 zip으로 압축된 프로젝트 를 첨부했습니다. 이것이 바이러스가 아님을 확인하는 소스 코드. VC ++ 6.0이 케이스에 컴파일 된 것과 거기에 쓰레기가 무엇인지 알아낼 시간이 없었습니다. 디버그 폴더의 StrAddress.dll.

파일:
straddress.zip  984 kb
 
paladin80 :

MetaEditor for 5를 열고 왼쪽 창에서 "내비게이터" -> 폴더를 마우스 오른쪽 버튼으로 클릭 -> "폴더 열기"에서 폴더를 검색해 보십시오.



고맙지만 mt4에는 아무것도 없었습니다. 검색을 사용하여 다음 주소에서 모든 파일을 찾았습니다.

C:\Users\Qwer\AppData\Local\VirtualStore\Program Files\MetaTrader 4\experts\include

나는 그들이 예상대로 보존되어 있었기 때문에 솔직히 말해서 그들이 어떻게 거기에 왔는지 전혀 모릅니다.