초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 752

 
매우 간단한 질문에 대해 사과드립니다 . 열린 포지션 을 어떻게 청산합니까? mql4에는 OrderClose() 함수가 있었지만 어떻게?
 
RogozaIV :
매우 간단한 질문에 대해 사과드립니다 . 열린 포지션 을 어떻게 청산합니까? mql4에는 OrderClose() 함수가 있었지만 어떻게?

mql5에서는 반대쪽을 열어야 합니다. 터미널의 History 탭에서 명확하게 볼 수 있습니다. 가장 쉬운 방법은 표준 라이브러리의 CTrade 클래스를 사용하는 것입니다.
 
MT5를 통해 암호 화폐를 거래할 수 있는 곳을 알려주실 수 있습니까? 브로커, 거래소? MT4는 찾았지만 MT5는 그대로 존재하지 않는 것 같습니다.
 

여러분, 어디가 잘못되었는지 알려주세요.

Expert Advisor에서 호출할 지표를 준비 중입니다.

표시기에서 버퍼를 전송하는 데 필요합니다.

결과 - int 값이 막대에 첨부됩니다.

일반적으로 과제는 지표에서 전문가에게 2차원 배열을 전달하는 것이지만, 소란 없이 그것을 수행하는 방법입니다.

 #property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots    2

int per[];

int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,per, INDICATOR_CALCULATIONS ); //также пробовал INDICATOR_DATA и INDICATOR_COLOR_INDEX
...

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
{
       for ( int b= 1 ; b<Bmax; b++) //отбор по x
        {
         for ( int p= 1 ; p<Pmax; p++) // отбор по y
           {
             if (arrayZ[ 6 ][p][b]> 0 ||arrayZ[ 6 ][p][b]< 0 )
            {
             per[b]=p;
            }
           }
        }
 }

글쎄, 나는 그것을 고문으로 부른다.

 int OnInit ()
  {
//--- create timer
   SetIndexBuffer ( 0 ,Label1Buffer, INDICATOR_DATA ); 
   ResetLastError (); 
   MA_handle= iCustom ( NULL , 0 , "Topqw" , 0 , 1 ); 

   Print ( "MA_handle = " ,MA_handle, "  error = " , GetLastError ()); 
...

void OnTick ()
//void OnTimer()
  {
//--- 
int copy= CopyBuffer (MA_handle, 0 , 0 , 1000 ,Label1Buffer); 
   Print ( "copy =" ,copy, " " ,Label1Buffer[ 999 ]); //

 
Top2n :

여러분, 어디가 잘못되었는지 알려주세요.

Expert Advisor에서 호출할 지표를 준비 중입니다.

표시기에서 버퍼를 전송하는 데 필요합니다.

결과 - int 값이 막대에 첨부됩니다.

일반적으로 과제는 지표에서 전문가에게 2차원 배열을 전달하는 것이지만, 소란 없이 그것을 수행하는 방법입니다.

글쎄, 나는 그것을 고문으로 부른다.



1. INDICATOR에서 기본적으로 인덱스 "0"의 표시기 버퍼는 차트의 가장 왼쪽 막대에 해당한다는 점을 기억해야 합니다.

2. Expert Advisor에는 "SetIndexBuffer" 명령이 없습니다.

3. iCustom은 버퍼 요청이 아니라 커스텀 인디케이터 를 생성하는 것입니다(모든 것이 ",0,1"이 아니라 명시적으로 작성되어야 하는 이유입니다). 귀하의 경우이 양식을 사용할 수 있습니다

 //--- create handle of the indicator Topqw
   ResetLastError ();
   handle_Topqw= iCustom ( Symbol (), Period (), "Topqw" , PRICE_CLOSE );
//--- if the handle is not created 
   if (handle_Topqw== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code 
       PrintFormat ( "Failed to create handle of the Topqw indicator for the symbol %s/%s, error code %d" ,
                   Symbol (),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early 
       return ( INIT_FAILED );
     }

4. CopyBuffer가 제대로 쓰여진 것 같습니다.

5. 2차원 배열을 전송하지 마십시오. 두 개의 표시기 버퍼 배열을 만드십시오.

 
Vladimir Karputov :


1. INDICATOR에서 기본적으로 인덱스 "0"의 표시기 버퍼는 차트의 가장 왼쪽 막대에 해당한다는 점을 기억해야 합니다.

2. Expert Advisor에는 "SetIndexBuffer" 명령이 없습니다.

3. iCustom은 버퍼 요청이 아니라 커스텀 인디케이터 를 생성하는 것입니다(모든 것이 ",0,1"이 아니라 명시적으로 작성되어야 하는 이유입니다). 귀하의 경우이 양식을 사용할 수 있습니다

4. CopyBuffer가 제대로 쓰여진 것 같습니다.

5. 2차원 배열을 전송하지 마십시오. 두 개의 표시기 버퍼 배열을 만드십시오.


수정해주셔서 감사합니다만 이해가 되지 않습니다. 명시적으로 배열을 전송하도록 설정하면 어떻게 형식화됩니까? 두 개의 배열을 추출해야 함을 지정하는 위치는 무엇입니까?

MA_handle= iCustom ( Symbol (), Period (), "TopFidCounselor" ,per,bar); per,bar - же массивы, а данные должны быть imput,
в индикаторе записываю в массивы
   SetIndexBuffer ( 0 ,per, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 1 ,bar, INDICATOR_CALCULATIONS );

если я сделаю такую запись
int OnCalculate (
...
  {
//--------------------------------------------------------------
   for ( int i = 0 ; i < rates_total; i ++ ) per[i] = price[i];  -
//--------------------------------------------------------------
ТО СОВЕТНИК РАБОТАЕТ БЕЗ ОШИБКИ
а если такую
//----------------------------------------------------------------
       for ( int b= 1 ; b< 200 ; b++) //отбор по х			-
        {							-
         for ( int p= 1 ; p< 200 ; p++) // отбор по у			-
           {							-
             if (arrayZ[ 6 ][p][b]> 0 ||arrayZ[ 6 ][p][b]< 0 )		-
            {							-
             per[b]=p;						-
             bar[b]=b;						-
            }							-
           }							-
        }							-
//----------------------------------------------------------------
ТО ОШИБКА код 4002

필요한 사항을 살펴보았는데요   IndicatorCreate() , 방법을 알려주십시오. 그렇지 않으면 지금 다시 알아내면 몇 주가 걸리고 생각 블록을 완료하는 데 이미 남은 시간이 거의 없습니다. 곧 여름이 끝날 때까지 타이가에 가서 꿀벌을 피더에 데려 가야하므로 떠나기 전에 아이디어를 확인하여 헛된 환상으로 자신을 괴롭히지 않으려 고합니다.
 

INDICATOR_CALCULATIONS 표시기에서 사용한 것이 정확합니까?

   SetIndexBuffer ( 0 ,per, INDICATOR_CALCULATIONS );
 

오류 4002로 문제가 해결되었습니다.

검색된 배열을 어디에 쓸지 명확하지 않습니까?

   int copy= CopyBuffer (MA_handle, 0 , 0 ,bars, per ); //per?
 
Top2n :

오류 4002로 문제가 해결되었습니다.

검색된 배열을 어디에 쓸지 명확하지 않습니까?


어레이 은 복사를 수행하는 절차에서 EA에 선언됩니다. 동적 배열 이어야 합니다([]로 선언됨 - 차원 없음).
사유: