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

 
Alexey Viktorov :

업데이트를 잡는 목적이 무엇인지에 따라 다릅니다. 배열을 다시 채우면 될까요?

목표가 무엇인지에 따라 어떤 차이가 있습니까? 문제는 소름 끼치게 덜 사용되거나 필요한 다른 속성이 있음에도 불구하고 그러한 명백한 이벤트를 포착하기 어려운 이유입니다. 이 경우 목표는 알림(경고)입니다.

 
leonerd :

목표가 무엇인지에 따라 어떤 차이가 있습니까? 문제는 소름 끼치게 덜 사용되거나 필요한 다른 속성이 있음에도 불구하고 그러한 명백한 이벤트를 포착하기 어려운 이유입니다. 이 경우 목표는 알림(경고)입니다.

따라서 트랜잭션 유형 에서 강조 표시된 것은 이 명백한 이벤트입니다. 58개의 기사에서 Trishkin 라이브러리를 사용해 보세요. 어쩌면 쉬운 옵션이 있습니다.

 
в 58 ми статьях

오 감사 ))

나는 그가 또한 그의 등록을 유지하고 있다고 의심합니다.

Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состояния   ORDER_STATE_STARTED   ~에   ORDER_STATE_PLACED   또는에서   ORDER_STATE_PLACED   ~에   ORDER_STATE_PARTIAL   등.).


이것이 특정 주문 티켓에 대한 첫 번째 ORDER_STATE_PLACED가 아니라는 것을 아는 것으로 충분할 것입니다.

2개의 TRADE_TRANSACTION_ORDER_UPDATE가 주문의 첫 번째 배치에서 오는 것으로 나타났습니다. 여기, 그리고 세 번째 것은 변경 사항으로 이미 저에게 적합할 것입니다. 제 경우에는 가격 변경일 뿐입니다. 또는 두 번째 ORDER_STATE_PLACED.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
ORDER_TIME_SETUP 도 확인해야 합니다. 매번 새롭나요?
 
MT4 "STRINGS: ASCII CHARACTER TABLE AND ITS USE"의 예에 따라 제작

 //+------------------------------------------------------------------+
//| StringLowerCase |
//+------------------------------------------------------------------+
string StringLowerCase( string str)
  {
   string s = str;
   int lenght = StringLen (str) - 1 , symbol;
   while (lenght >= 0 )
     {
      symbol = StringGetChar(s, lenght);
       if ((symbol > 64 && symbol < 91 ) || (symbol > 191 && symbol < 224 ))
         s = StringSetChar(s, lenght, symbol + 32 ); // тут possible loss of data due to type conversion
       else
         if (symbol > - 65 && symbol < - 32 )
            s = StringSetChar(s, lenght, symbol + 288 ); // тут possible loss of data due to type conversion
      lenght--;
     }
   return (s);
  }
//+------------------------------------------------------------------+
//| StringUpperCase |
//+------------------------------------------------------------------+
string StringUpperCase( string str)
  {
   string s = str;
   int lenght = StringLen (str) - 1 , symbol;
   while (lenght >= 0 )
     {
      symbol = StringGetChar(s, lenght);
       if ((symbol > 96 && symbol < 123 ) || (symbol > 223 && symbol < 256 ))
         s = StringSetChar(s, lenght, symbol - 32 ); // тут possible loss of data due to type conversion
       else
         if (symbol > - 33 && symbol < 0 )
            s = StringSetChar(s, lenght, symbol + 224 ); // тут possible loss of data due to type conversion
      lenght--;
     }
   return (s);
  }

어렵지 않다면 도와주세요..
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SGarnov :
MT4 "STRINGS: ASCII CHARACTER TABLE AND ITS USE"의 예에 따라 제작


어렵지 않다면 도와주세요..

StringSetChart()는 일종의 bool을 반환합니다. 그리고 문자열 변수에 할당합니다. 그것이 질문이라면.

 
MT5 메뉴를 사용하지 않고 올바른 파일을 올바른 폴더에 넣는 것만으로 사용자 정의 기호 를 만들 수 있습니까?
 

안녕하세요. 포지션 진입 조건을 확인하는 함수를 작성했습니다.

문제는 조건(노란색으로 강조 표시됨)이 충족되지 않으면 함수가 작업을 완료하지 않고 다음 조건으로 이동한다는 것입니다. 따라서 신호가 올바르게 작동하지 않습니다.

함수의 조건 중 하나가 충족되지 않으면 잘못된 조건 직후에 전체 함수의 작업이 종료되도록 하려면 어떻게 해야 합니까?

 bool BuySignal_new()
{
   double Sig_Up[];                 // динамический массив для хранения значений индикатора на покупку для каждого бара
   double Sig_Down[];               // динамический массив для хранения значений индикатора на продажу для каждого бара
   ArraySetAsSeries (Sig_Up, true );   // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатора
   ArraySetAsSeries (Sig_Down, true ); // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатора
   ResetLastError ();
   double close = NormalizeDouble ( iClose ( _Symbol , _Period , 1 ), Digits ());
   double close_1 = NormalizeDouble ( iClose ( _Symbol , _Period , 0 ), Digits ());
   double Bid= NormalizeDouble ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), Digits ());
if ( CopyBuffer (Handle_stepma_line, 0 , 1 , 5 ,Sig_Up)== 5 && CopyBuffer (Handle_stepma_line, 1 , 1 , 4 ,Sig_Down)== 4 )
  {
   Print ( "Данные скопированы. Ошибок нет." );
   
  } 
else
    {
     Print ( "Ошибка копирования. Нет данных" );
     return ( false );
    }

if (Sig_Up[ 1 ] < Sig_Down[ 1 ] && Sig_Up[ 0 ] > Sig_Down[ 0 ])
  {
   Print ( "условие 1 - ок" );
  }
else
    {
     Print ( "условие 1 НЕ выполненно" );
     return ( false );
    }
if (close < Sig_Up[ 1 ]&& Bid > Sig_Up[ 0 ])
  { 
   Print ( "условие 2 - ок" );
   return ( true );
  }   
else
    {
     Print ( "условие 2 НЕ выполненно" );
     return ( false );
    }   
 
Sergey :

함수의 조건 중 하나가 충족되지 않으면 잘못된 조건 직후에 전체 함수의 작업이 종료되도록 하려면 어떻게 해야 합니까?

else에서 가지를 제거하려면 다음을 시도할 수 있습니다.

   if ( CopyBuffer (Handle_stepma_line, 0 , 1 , 5 , Sig_Up) != 5 )
   {
       Print ( "Ошибка копирования. Нет данных" );
       return ( false );
   }

   if ( CopyBuffer (Handle_stepma_line, 1 , 1 , 4 , Sig_Down) != 4 )
   {
       Print ( "Ошибка копирования. Нет данных" );
       return ( false );
   }


   if ( ! (Sig_Up[ 1 ] < Sig_Down[ 1 ] && Sig_Up[ 0 ] > Sig_Down[ 0 ]))
   {
       Print ( "условие 1 НЕ выполненно" );
       return ( false );
   }

   if ( ! (close < Sig_Up[ 1 ] && Bid > Sig_Up[ 0 ]))
   {
       Print ( "условие 2 НЕ выполненно" );
       return ( false );
   }
//--- если дошли сюда, то все условия выполнены
   return ( true );
 
Igor Makanu :

else에서 가지를 제거하려면 다음을 시도할 수 있습니다.

감사합니다. 노력하겠습니다.

사유: