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

 

그래서 전문가가 직접 - 불필요한 부분을 정리했습니다.

파일:
 

주문을 닫는 방법???

다음과 같이 열었습니다.

mrequest.action = TRADE_ACTION_DEAL; // 즉시 실행

mrequest.price = NormalizeDouble(Ask,_Digits); // 마지막 호가

mrequest.sl = NormalizeDouble(요청 - 10000*_Point,_Digits); // 손실을 중지

mrequest.tp = 0; // 이익을 취하다

mrequest.symbol = _심볼; // 기호

mrequest.volume = 제비; // 거래할 랏 수

mrequest.magic = 1; // 매직넘버

mrequest.type = ORDER_TYPE_BUY; // 매수주문

mrequest.type_filling = ORDER_FILLING_FOK; // 주문 실행 유형 - 전부 또는 전무

mrequest.deviation=100; // 현재 가격에서 미끄러짐

주문 보내기(mrequest,mresult);

문제는 하나의 주문이 열려있는 것이 아니라 여러 개이며 선택적으로 닫을 필요가 있다는 것입니다 ...

 
Forex_Noob : 주문을 마감하는 방법???

문제는 하나의 주문이 열려있는 것이 아니라 여러 개이며 선택적으로 닫을 필요가 있다는 것입니다 ...

1. 코드를 올바르게 붙여넣습니다 .

2. 여러 주문이 한 방향으로 열리면 결과는 하나의 집계 위치입니다.

3. 열린 위치 를 닫으려면 반대 방향의 주문을 해야 하며, 그 총량은 닫는 위치의 양과 같습니다.

4. 포지션의 일부만 청산해야 하는 경우 해당 총량으로 반대 방향의 주문을 해야 합니다.

 
Yedelkin :

1. 코드를 올바르게 붙여넣습니다 .

2. 여러 주문이 한 방향으로 열리면 결과는 하나의 집계 위치입니다.

3. 열린 위치 를 닫으려면 반대 방향의 주문을 해야 하며, 그 총량은 닫는 위치의 양과 같습니다.

4. 포지션의 일부만 청산해야 하는 경우 해당 총량으로 반대 방향의 주문을 해야 합니다.

확인. 감사하다. 이제 또 다른 문제가 있습니다. 포즈가 항상 마감 순서로 닫히는 것은 아닙니다...
 
Forex_Noob :
확인. 감사하다. 이제 또 다른 문제가 있습니다. 포즈가 항상 마감 순서로 닫히는 것은 아닙니다...
로그를 살펴보십시오. 결과가 거기에 기록됩니다.
 

예델킨, 레셰토프 ,

여보세요,

여러 쌍에 대한 하나의 지표에서 데이터를 얻는 가장 간단한 방법/방법을 알려주세요.

 string Currency1 = "GBPUSD" ;
string Currency2 = "EURUSD" ;
string Currency3 = "USDCHF" ;
string Currency4 = "USDJPY" ;
int ATRHandle;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   for ( int c= 0 ;c< 4 ;c++){
   SymbolSelect (Currency1, true );
   SymbolSelect (Currency2, true );
   SymbolSelect (Currency3, true );
   SymbolSelect (Currency4, true );
  }
  ATRHandle = iATR ( Symbol (), PERIOD_M1 , 1 );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   IndicatorRelease (ATRHandle);
   Comment ( "" );        
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//Например так,как показал
  }
//+------------------------------------------------------------------+
미리 감사드립니다.
 
mario065 : 여러 쌍에 대한 하나의 지표에서 데이터를 얻는 가장 간단한 방법/방법을 알려주세요.

당신은 이것에 대해 이야기하고 있습니까?:

ATRHandle1 = iATR (Currency1, PERIOD_M1 , 1 );
ATRHandle2 = iATR (Currency2, PERIOD_M1 , 1 );
ATRHandle3 = iATR (Currency3, PERIOD_M1 , 1 );
ATRHandle4 = iATR (Currency4, PERIOD_M1 , 1 );
 
Yedelkin :

당신은 이것에 대해 이야기하고 있습니까?:

여기요,

당연히 아니지.

칠면조가 여러 마리 있으면 각각 백 번, 몇 쌍이 먹는 것이 필요합니다.

모든 커플이 기어 다닐 수 있도록 하나의 손잡이.

 
mario065 : 칠면조가 여러 마리라면 각자가 그렇게 여러 번, 몇 쌍이 먹느냐가 필요합니다. 모든 커플이 기어 다닐 수 있도록 하나의 손잡이.

즉, iATR 표시기가 다른 기호와 함께 작동하는 동안 하나의 핸들을 원하십니까?

iATR 인디케이터에 대한 설명을 보면, 하나의 심볼로만 작동하도록 설계되었음을 알 수 있습니다. 따라서 4개의 기호로 작업하려면 iATR 표시기의 4개 사본을 실행해야 합니다. 차례로 특정 실행 표시기 복사본의 값에 액세스하려면 핸들이 필요합니다 . 그리고 표시기의 4개 복사본이 실행 중인 경우에도 해당 핸들을 어딘가에 저장해야 합니다.

하나의 핸들만 사용하는 문제가 근본적인 경우 iATR 표시기는 한 번에 여러 기호와 함께 작동하고 해당 수의 값 배열 등을 갖도록 다시 작성해야 합니다. 그런 다음 하나의 핸들을 사용할 수 있습니다.

handle = myATR( Currency1,Currency2,Currency3,Currency4, PERIOD_M1 , 1 );

myATR에서 하나 또는 다른 표시기 버퍼 에 액세스하는 데 사용합니다.

 

다음과 같이 작성할 수도 있습니다(도식적으로).

 string Currency[ 4 ] = { "GBPUSD" , "EURUSD" , "USDCHF" , "USDJPY" }; //могу ошибиться в части правильности записи присвоения значений, но проверить легко по Справочнику
int ATRHandle[ 4 ];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
    for ( int c= 0 ;c< 4 ;c++) SymbolSelect (Currency[с], true );
    for ( int c= 0 ;c< 4 ;c++) ATRHandle[с] = iATR (Currency[с], PERIOD_M1 , 1 );
    return ( 0 );
  }
사유: