찻주전자의 질문 - 페이지 273

 
bagdarino :

비용(예: 월 20크레딧, 크레딧이란 무엇이며 비용).

1 크레딧 = $1
 

쌍을 숫자로 인코딩해야 합니다. MT4에서는 먼저 어레이를 초기화하여 상황을 해결합니다.

 string CurrName [ 35 ]={ "" , "" , "" , "" , "" , "" , "" , "" , "" , "" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" };

그런 다음 배열을 통해 실행되는 숫자에 쌍을 씁니다.

 for ( int i= 0 ; i<= 6 ; i++)
  { string letter = StringSubstr (Symb,i, 1 );
   for ( int j= 10 ; j<= 35 ;j++)
    { if (letter == CurrName[j])
     {text1= StringConcatenate (text1, j);
       break ;
      }}}

MT5에서는 이것이 작동하지 않습니다. 이미 배열을 초기화 하려고 할 때 오류를 씁니다.

'Z' - 너무 많은 초기화 프로그램

불행히도, 이 시점에서 내 지식에는 공백이 있습니다.

문제에 대한 가능한 해결책을 제안하십시오. 아마도 MT4에도 더 빠른 방법이 있을 것입니다. 알게 되어 기쁩니다.


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - Документация по MQL5
 
Heroix :

쌍을 숫자로 인코딩해야 합니다. MT4에서는 먼저 어레이를 초기화하여 상황에서 벗어납니다.

그런 다음 배열을 통해 실행되는 숫자에 쌍을 씁니다.

.......

MT5에서는 이것이 작동하지 않습니다. 이미 배열을 초기화 하려고 할 때 오류를 씁니다.

'Z' - 너무 많은 초기화 프로그램

Vapchepa 10+26 = 36. [35] 크기의 배열이 있습니다. 컴파일러에서 알려주는 문자 'Z'가 맞지 않습니다.

불행히도, 이 시점에서 내 지식 에는 격차가 있습니다.

문제에 대한 가능한 해결책을 제안하십시오. 아마도 MT4에도 더 빠른 방법 이 있을 것입니다. 저는 알게 되어 기쁩니다.

빠른 방법에 관해서는. 프로그래밍은 시와 같습니다. 글자 외에 대체로 알 필요는 없습니다. 나머지는 창의성입니다. 과제가 있습니다 - 우리는 솔루션을 발명합니다.

그리고 여기서 가장 모욕적인 방법으로 좋은 프로그래머와 나쁜 프로그래머는 암기된 참고서의 두께만 다를 뿐이라고 암시하고 있습니다.... :) 지금도 도와주기는 꺼려집니다..

파이!

 
MetaDriver :

Vapchepa 10+26 = 36. [35] 크기의 배열이 있습니다. 컴파일러에서 알려주는 문자 'Z'가 맞지 않습니다.

빠른 방법에 관해서는. 프로그래밍은 시와 같습니다. 글자 외에 대체로 알 필요는 없습니다. 나머지는 창의성입니다. 과제가 있습니다. 우리는 솔루션을 발명합니다.

그리고 여기서 가장 모욕적인 방법으로 좋은 프로그래머와 나쁜 프로그래머는 암기된 참고서의 두께만 다를 뿐이라고 암시하고 있습니다.... :) 지금도 도와주기는 꺼려집니다..

파이!

이상하지만 어떻게 든 코드는 MT4에서 작동합니다. 루프에서 예, j<=36은 원본에 있고 여기에 "그린" 35입니다.

감사합니다. 실제로 배열 값의 선언에 있었습니다. 나는 100년에 한 번 이런 식으로 배열을 선언합니다. 비유적으로... 엄밀히 판단하지 마십시오.

마지막 줄에 추측이 있습니다. 그 이상은 아닙니다. 나는 거의 평문으로 썼습니다. 여러 가지 이유로 무엇을 해야 할지 몰랐습니다.

 
Heroix :

이상하지만 어떻게 든 코드는 MT4에서 작동합니다. 루프에서 예, j<=36은 원본에 있고 여기에 "그린" 35입니다.

감사합니다. 실제로 배열 값의 선언에 있었습니다. 나는 100년에 한 번 이런 식으로 배열을 선언합니다. 비유적으로... 엄밀히 판단하지 마십시오.

확인.

마지막 줄에 추측이 있습니다. 그 이상은 아닙니다. 나는 거의 평문으로 썼습니다. 여러 가지 이유로 무엇을 해야 할지 몰랐습니다.

좋아 좋아. 우리는 나에게도 이 ... 보름달이 있다는 것을 보호할 것입니다. 오늘날 어떤 이유로든 기분이 상하는 것이 유행입니다.

;)

 
papaklass :

MK의 위치가 변경되었는지 누가 알 수 있습니까?

1. 예외 처리 도입(try {} catch() {}) . "단호히 반대"했습니다.

아니다

? 헛소리야. 무엇을 물어야 할지 모르겠습니다. 연산자는 일반적으로 MQL에 없는 개념인 컨테이너용으로 특별히 설계되었습니다.

이것이 일반적인 핸디캡에 의해 완벽하게 구현되는 어레이만 있습니다.

 
papaklass :

MK의 위치가 변경되었는지 누가 알 수 있습니까?

1. 예외 처리 도입(try {} catch() {}) . "단호히 반대"했습니다.

2. foreach() {} 연산자 소개 .

추신: 오퍼레이터가 눈에 띄는 이유가 명확하지 않습니까?

for 예약어가 있어서 눈에 띄었고, 링크는 그것을 가리킵니다.
 

내가 얻은 것은 무엇인가...

스크립트:

 #property script_show_inputs
//--- input parameters
input string    Symb0= "EURUSD" ;
input double    Vol0= 0.2 ;
input string    Symb1= "GBPUSD" ;
input double    Vol1= 0.3 ;
input string    Symb2= "CADCHF" ;
input double    Vol2= 0.4 ;

input bool      buy = true ;

MqlTradeRequest TradeRequest[ 3 ];
MqlTradeResult   TradeResult[ 3 ];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   if (buy)
  {
  _OrderSend(TradeRequest[ 0 ],TradeResult[ 0 ],Symb0, ORDER_TYPE_BUY ,Vol0, 0 , 0.0 , 0.0 , "EURUSD" , 0 );
  _OrderSend(TradeRequest[ 1 ],TradeResult[ 1 ],Symb1, ORDER_TYPE_BUY ,Vol1, 0 , 0.0 , 0.0 , "GBPUSD" , 0 );
  _OrderSend(TradeRequest[ 2 ],TradeResult[ 2 ],Symb2, ORDER_TYPE_BUY ,Vol2, 0 , 0.0 , 0.0 , "CADCHF" , 0 );
   Comment ( PositionsTotal ());
  }
   //Sleep(5000);
   else
  {
  
  _OrderSend(TradeRequest[ 0 ],TradeResult[ 0 ],Symb0, ORDER_TYPE_SELL ,Vol0, 0 , 0.0 , 0.0 , "EURUSD" , 0 );
  _OrderSend(TradeRequest[ 1 ],TradeResult[ 1 ],Symb1, ORDER_TYPE_SELL ,Vol1, 0 , 0.0 , 0.0 , "GBPUSD" , 0 );
  _OrderSend(TradeRequest[ 2 ],TradeResult[ 2 ],Symb2, ORDER_TYPE_SELL ,Vol2, 0 , 0.0 , 0.0 , "CADCHF" , 0 );
  }
  
   Sleep ( 1000 );
  _CloseAllPositions();
  }
//+------------------------------------------------------------------+

void _OrderSend( MqlTradeRequest &tradeRequest,
                 MqlTradeResult   &tradeResult,
                 string           symbol,
                 ENUM_ORDER_TYPE type,
                 double           volume,
                 ulong            deviation,
                 double           sl,
                 double           tp,
                 string           comment,
                 int              magic)
{
   MqlTick price; SymbolInfoTick (symbol, price);
  
  tradeRequest.action   = TRADE_ACTION_DEAL ;
  tradeRequest.symbol   = symbol;
  tradeRequest.type     = type;
  tradeRequest.volume   = volume;
  
   if (type== ORDER_TYPE_BUY )
    tradeRequest.price    = price.ask;
   if (type== ORDER_TYPE_SELL )
    tradeRequest.price    = price.bid;

  tradeRequest.deviation= deviation;
  tradeRequest.sl       = sl;
  tradeRequest.tp       = tp;
  tradeRequest.comment  = comment;
  tradeRequest.magic    = magic;
  
   OrderSendAsync (tradeRequest,tradeResult);
}


void _CloseAllPositions()
{
   Print ( "пробую закрытся" );
   MqlTradeRequest tradeRequest;
   MqlTradeResult   tradeResult;
   MqlTick price;
  
   if ( PositionsTotal ()> 0 )
  {
    
     string symb= "" ;
    
     for ( int i= 0 ;i< PositionsTotal ();i++)
    {
      symb= PositionGetSymbol (i);
       PositionSelect (symb);
       SymbolInfoTick (symb, price);
      
       if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
      {
        tradeRequest.type = ORDER_TYPE_SELL ;
        tradeRequest.price=price.bid;
      }
       else
      {
        tradeRequest.type = ORDER_TYPE_BUY ;
        tradeRequest.price=price.ask;
      }
        tradeRequest.action   = TRADE_ACTION_DEAL ;
        tradeRequest.symbol   = symb;
        tradeRequest.volume   = PositionGetDouble ( POSITION_VOLUME );
        tradeRequest.deviation= 0 ;
        tradeRequest.sl       = 0.0 ;
        tradeRequest.tp       = 0.0 ;
        tradeRequest.comment  = "" ;
        tradeRequest.magic    = 0 ;
        
         OrderSend (tradeRequest,tradeResult);
    }
  }
}

오류를 제공합니다:

2013.08.23 10:28:54 거래 '1421016': 0.87721에서 1.60 CADCHF에서 즉석 판매 실패 [잘못된 요청]
2013.08.23 10:28:54 거래 '1421016': 1.55836에서 1.20 GBPUSD 즉시 판매 실패 [잘못된 요청]
2013.08.23 10:28:54 거래 '1421016': 1.33455에서 0.80 EURUSD 즉시 판매 실패 [잘못된 요청]


문제가 무엇입니까?

 

모든 것이 나를 위해 열립니다... 하지만 CADCHF는 닫히지 않습니다. (서버 - MetaQuotes 데모)

for 루프의 방향을 변경했습니다. 이제 모든 것이 정상이고 모든 것이 열리고 모든 것이 닫힙니다.

 
i_logic :

모든 것이 나를 위해 열립니다... 하지만 CADCHF는 닫히지 않습니다. (서버 - MetaQuotes 데모)

for 루프의 방향을 변경했습니다. 이제 모든 것이 정상이고 모든 것이 열리고 모든 것이 닫힙니다.

로 변경:

 for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--)

또한 잠금이 작동하지 않습니다.