포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 637

 
RostZ :

여러분, 안녕하세요!

오류 처리에 대한 도움말: "권한 부족" 또는 "권한 부족" 코드 #7

다음과 같은 일이 발생합니다. EURCHFХ M1 쌍의 어드바이저는 포지션을 열 수 없으며, 이 오류가 생성되며(로그에서 확인됨) 현재 다른 쌍 및 EURCHF M5에서 문제 없이 열립니다. 문제없이 손으로 열립니다. 다른 브로커에서 작동합니다. 무엇이 문제가 될 수 있습니까?

당신의 도움에 미리 감사드립니다.

당신의 조언자 안에 무엇이 쓰여 있는지 알지 못하면 무엇이 문제인지 말할 수 없습니다. 고문은 EUR CHFХ M 5 및 EUR CHF M 1 에서 어떻게 행동합니까?
 
Top2n :


이 함수는 숫자 자체가 아니라 용어의 위치 숫자를 반환합니다.

포지션 번호를 받았다고 가정해 봅시다. 그러면 이 포지션을 철회하는 방법은 무엇입니까?

나는 또한 당신에게 도움말 링크를 주었습니다. 6줄 후에, StringSubstr 에 대한 도움말이 있습니다. 이 도움말 은 지정된 위치에서 시작하는 텍스트 문자열에서 부분 문자열만 추출합니다.
 
AlexeyVik :
나는 또한 당신에게 도움말 링크를 주었습니다. 거기에서 6줄 후에, StringSubstr 에 대한 도움말이 있습니다. 이 도움말 은 지정된 위치에서 시작하는 텍스트 문자열에서 부분 문자열만 추출합니다.


sc= ObjectsTotal ( OBJ_LABEL );
for ( int i= 0 ;i<sc;i++) 
 {
 Neme= ObjectName (i);
 
 if (Neme= "lTrend_Power" ) //Если имя объекта OBJ_LABEL то самое,
{
  NemeText= "Trend Power: " ; // часть описания из строки текст
   for ( int il= 0 ;il<= 99 ;il++) // перебираем 1-99
  {
NemeTextPol = StringFind (NemeText+il+ "%" ,il, 0 ); //Полное имя строки текст "Trend Power: 99%". (99% меняется от 1 до 99)

Kon = StringSubstr (NemeText+il+ "%" , 13 , 3 );
  }
}
내가 무엇을 잘못하고 있지? 작업은 문자열에서 99(숫자)를 추출하는 것입니다.
 
Top2n :

내가 무엇을 잘못하고 있지? 작업은 문자열에서 99(숫자)를 추출하는 것입니다.

sc= ObjectsTotal ( OBJ_LABEL );

이것은 레이블 개체의 수이지만 다른 개체가 있는 경우 개체 루프에 오류가 발생합니다.

또한 유사한 이름을 가진 다른 레이블이 없는 경우 모든 개체를 정렬할 필요가 없습니다. OBJPROP_TEXT를 꺼내서 작업하십시오.


문자열 NameText = ObjectGetString(0, "lTrend_Power", OBJPROP_TEXT);

문자열 Kon = StringSubstr( 이름 텍스트, 13, 2);

그런 다음 문자열 형식의 숫자가 포함된 문자열을 원하는 유형으로 변환합니다.

일반적으로 이 예제로 판단하면 전체 프로그래밍 프로세스를 이해하는 것과는 거리가 멉니다.

NemeText= "Trend Power: " ; // часть описания из строки текст

그것은 개체 설명의 일부가 아니라 "Trend Power: "로 설정되는 NemeText 변수입니다.

모든 도움말을 읽는 데 너무 게으르지 마십시오. 그러면 어딘가에서 솔루션을 만났다는 것을 기억할 것입니다. 그러면 문서에서 필요한 모든 것을 더 쉽게 찾을 수 있습니다.

 
paladin80 :
당신의 조언자 안에 무엇이 쓰여 있는지 알지 못하면 무엇이 문제인지 말할 수 없습니다. 고문은 EUR CHFХ M 5 및 EUR CHF M 1 에서 어떻게 행동합니까?

EURCHFX M1을 제외한 모든 곳에서 작동합니다. "권한 부족"이 무엇인지 이해할 수 없으며 이 메시지가 나타나는 경우에 대해 더 자세한 설명을 찾을 수 없습니다. 무엇에 대한 반응으로... Metaquote는 그것이 의미하는 바를 알아야 합니다.
 
AlexeyVik :

이것은 레이블 개체의 수이지만 다른 개체가 있는 경우 개체 루프에 오류가 발생합니다.

또한 유사한 이름을 가진 다른 레이블이 없는 경우 모든 개체를 정렬할 필요가 없습니다. OBJPROP_TEXT를 꺼내서 작업하십시오.


문자열 NameText = ObjectGetString(0, "lTrend_Power", OBJPROP_TEXT);

문자열 Kon = StringSubstr( 이름 텍스트, 13, 2);

그런 다음 문자열 형식의 숫자가 포함된 문자열을 원하는 유형으로 변환합니다.

일반적으로 이 예제로 판단하면 전체 프로그래밍 프로세스를 이해하는 것과는 거리가 멉니다.

그것은 개체 설명의 일부가 아니며 "Trend Power: "로 설정되는 NemeText 변수입니다.

모든 도움말을 읽는 데 너무 게으르지 마십시오. 그러면 어딘가에서 솔루션을 만났다는 것을 기억할 것입니다. 그러면 문서에서 필요한 모든 것을 더 쉽게 찾을 수 있습니다.


고마워, 네 맞아요, 주말에 읽을게요, 그냥 Arkaim으로 가세요))))
 

하나의 표시기 버퍼를 다른 색상으로 색칠하기 위해 INDICATOR_COLOR_INDEX 식별자를 사용해 본 사람이 있습니까? 아니면 아직 MT4에서 작동하지 않습니까?

예 >>>

MT5에서 이 코드는 다음과 같이 작동합니다.

 //+------------------------------------------------------------------+
//|                                                        #Test.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link       "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_color1  clrRoyalBlue,clrRed
//--- Индикаторные буферы
double indicator_buffer[];
double color_indicator_buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Установка буферов
   SetIndexBuffer ( 0 ,indicator_buffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,color_indicator_buffer, INDICATOR_COLOR_INDEX );
//--- Свойства
   PlotIndexSetInteger ( 0 , PLOT_LINE_WIDTH , 5 );
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 159 );
   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE , DRAW_COLOR_ARROW );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0 );
//--- Инициализация буфера
   ArrayInitialize (indicator_buffer, 0 );
//---
   return (INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int       rates_total,
                 const int       prev_calculated,
                 const datetime &time[],
                 const double    &open[],
                 const double    &high[],
                 const double    &low[],
                 const double    &close[],
                 const long      &tick_volume[],
                 const long      &volume[],
                 const int       &spread[])
  {
   int limit= 0 ;
//--- Если первый вызов
   if (prev_calculated== 0 )
     {
      limit= 0 ;
       ArrayInitialize (indicator_buffer, 0 );
     }
   else
      limit=prev_calculated- 1 ;
//--- Основной цикл
   for ( int i=limit; i<rates_total && ! IsStopped (); i++)
     {
      indicator_buffer[i]= rand ()% 3 ;
      color_indicator_buffer[i]=(indicator_buffer[i]== 1 ) ? 0 : 1 ;
     }
//---
   return (rates_total);
  }
//+------------------------------------------------------------------+

//---

그리고 MT4에서도 이와 유사하지만 MQL4를 약간 조정하면 다음 결과가 표시됩니다.

 //+------------------------------------------------------------------+
//|                                                        #Test.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link       "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1  clrRoyalBlue,clrRed
//--- Индикаторные буферы
double indicator_buffer[];
double color_indicator_buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Установка буферов
   SetIndexBuffer ( 0 ,indicator_buffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,color_indicator_buffer, INDICATOR_COLOR_INDEX );
//--- Свойства
   SetIndexStyle( 0 , DRAW_ARROW ,EMPTY, 5 );
   SetIndexArrow( 0 , 159 );
   SetIndexEmptyValue( 0 , 0 );
//--- Инициализация буфера
   ArrayInitialize (indicator_buffer, 0 );
//---
   return (INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int       rates_total,
                 const int       prev_calculated,
                 const datetime &time[],
                 const double    &open[],
                 const double    &high[],
                 const double    &low[],
                 const double    &close[],
                 const long      &tick_volume[],
                 const long      &volume[],
                 const int       &spread[])
  {
   int limit= 0 ;
//--- Если первый вызов
   if (prev_calculated== 0 )
     {
      limit= 0 ;
       ArrayInitialize (indicator_buffer, 0 );
     }
   else
      limit=prev_calculated- 1 ;
//--- Основной цикл
   for ( int i=limit; i<rates_total && ! IsStopped (); i++)
     {
      indicator_buffer[i]= rand ()% 3 ;
      color_indicator_buffer[i]=(indicator_buffer[i]== 1 ) ? 0 : 1 ;
     }
//---
   return (rates_total);
  }
//+------------------------------------------------------------------+
 

예, 많은 질문이 어리석다는 것을 이해합니다. 솔직히 노력하고 하루 종일 보냈지만 결과는 없었습니다.

현재 막대에 있는 여러 추세선 의 가격 값을 배열에 씁니다.

객체가 없는 경우 배열에서 값을 제거하는 방법은 무엇입니까?

 
Top2n :

예, 많은 질문이 어리석다는 것을 이해합니다. 솔직히 노력하고 하루 종일 보냈지만 결과는 없었습니다.

현재 막대에 있는 여러 추세선의 가격 값을 배열에 씁니다.

객체가 없는 경우 배열에서 값을 제거하는 방법은 무엇입니까?

각 틱에서 추세 가격의 값을 실행하고 원하는 추세선 의 다음 원하는 가격을 찾을 때 배열을 초기화하고 차원을 늘리면 이미 계산된 값을 제거할 필요가 없습니다. 배열에서 제거된 추세선. 배열은 동적이며 매번 각 틱에서 기존 개체의 값만 포함합니다.
 
Top2n :

객체가 없는 경우 배열에서 값을 제거하는 방법은 무엇입니까?


제로 가격을 지정합니다.