MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 222

 

도와주세요. 오프셋( iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN ,i) ) 으로 인해 업데이트 후 항상 for() 루프를 처리할 수 없으며 표시기가 다시 그려집니다.


 //+------------------------------------------------------------------+
//|                                                         help.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          "http://www.mql4.com"
#property strict
#include <MovingAverages.mqh>
//--- indicator settings
#property   indicator_separate_window
#property   indicator_buffers 2
#property   indicator_color1   clrSilver
#property   indicator_color2   clrRed
#property   indicator_width1   2

//--- indicator parameters
input int SignalSMA= 8 ;             // Signal SMA Period
//--- indicator buffers
double     ExtBuffer[];
double     ExtSignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ( void )
  {
   IndicatorDigits ( Digits + 1 );
//--- drawing settings
   SetIndexStyle ( 0 , DRAW_HISTOGRAM );
   SetIndexStyle ( 1 , DRAW_LINE );
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtBuffer);
   SetIndexBuffer ( 1 ,ExtSignalBuffer);

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
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 i,limit;
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if (prev_calculated> 0 )
      limit++;
//--- counted in the 1-st buffer
   for (i= 0 ;i<limit;i++)
      ExtBuffer[i]=(
                     iMA ( NULL , PERIOD_CURRENT , 1 , 0 , MODE_SMA , PRICE_HIGH ,i)
                    + iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN ,i)
                    );
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated, 0 ,SignalSMA,ExtBuffer,ExtSignalBuffer);
//--- done
   return (rates_total);
  }
//+------------------------------------------------------------------+

미리 감사드립니다.

 
Alexey Viktorov :

제 생각에는 접근 방식이 전혀 논리적이지 않습니다. 요일을 정의하는 이유는 무엇입니까? 조건이 "오늘 xxx개 이상의 주문을 열지 않음"이어야 하는 경우 오늘이 어떤 요일인지에 따라 어떤 차이가 있습니까?

제 입장에서는 오늘 오픈한 주문을 다시 계산하여 적절한 조건을 설정하는 것이 더 논리적입니다. 조건에서 각각

주문 개시 날짜에 대한 정의가 충분하지 않습니다.


당신이 알고 있다면 - 그것을하는 방법을 작성하십시오)
하루 종일 주문의 n분의 1이 넘는 주문이 어떤 날에는 열리지 않도록 만드는 방법을 모르겠습니다.

 
cripple :

도와주세요. 오프셋( iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN ,i) ) 으로 인해 업데이트 후 항상 for() 루프를 처리할 수 없으며 표시기가 다시 그려집니다.


미리 감사드립니다.

ma-shkakh에서 다른 TF-we. 말하자면 M1 TF에 시니어 타임프레임을 입력하는 것이 필요합니다. 틱 수를 다르게 하여 MA를 두 번 계산합니다. 이 경우 이전 기간의 동일한 값이 다른 젊은 기간에 추가됩니다.

i를 통해 이제 기간 D1과 10 M1의 양초 10개를 예로 들어보겠습니다. 논리적으로 뭔가 잘못된...

또 다른 점은 표시기가 M1으로 설정된 경우 다시 그리지 않고도 작동할 가능성이 높다는 것입니다.

 
Renat Akhtyamov :

ma-shkakh에서 다른 TF-we. 말하자면 M1 TF에 시니어 타임프레임을 입력하는 것이 필요합니다. 틱 수를 다르게 하여 MA를 두 번 계산합니다.

i를 통해 이제 기간 D1과 10 M1의 양초 10개를 예로 들어보겠습니다. 논리적으로 뭔가 잘못된...

예, 당신은 올바르게 알아차렸지만, 내 마음은 여전히 M1을 올바르게 계산하는 방법을 이해하기에 충분하지 않습니다.
 
cripple :
예, 당신은 올바르게 알아차렸지만, 내 마음은 여전히 M1을 올바르게 계산하는 방법을 이해하기에 충분하지 않습니다.

또한 M5의 1bar가 M1의 5개, 아마도 4개와 1개에 해당하는지 확실하지 않기 때문에 M1을 이전 TF와 제시간에 동기화해야 합니다.

 
cripple :
예, 당신은 올바르게 알아차렸지만, 내 마음은 여전히 M1을 올바르게 계산하는 방법을 이해하기에 충분하지 않습니다.

노력하다

 int    Bars (
   string            symbol_name,     // имя символа
   ENUM_TIMEFRAMES   timeframe,       // период
   datetime          start_time,       // с какой даты
   datetime          stop_time         // по какую дату
   );

i 번째 막대의 시간과 i 대신 결과 막대 번호.

 
키보드를 사용하여 MT4 터미널에서 열린 쌍을 스크롤할 수 있는지 알려주세요
 
LRA :
친애하는 novikov433 !!! 프로그래밍을 가르치거나 무료 고문을 쓰거나 둘 다 !!! 그 대가 로 주문 손실이 손익분기점으로 전환되는 방법을 가르쳐 주십시오. 간단한 예시로 가능합니다. 나는 아내에게 주문(주문)을 합니다. 이른 아침에 시장에서 감자 한 통을 사고, 10시(기본 분석)까지 가격이 상승하여 판매합니다. 그러나 때로는 10시 반에 (뉴스) 감자 차를 가져옵니다. 그리고 (뉴스에서) 가격이 즉시 하락하고 하루가 끝날 때까지 또는 일주일 내내 하락합니다. 나는 StopLoss를 넣었습니다-가격이 10 루블 감소하면 가능한 한 즉시 (시장 가격으로) 판매하십시오. 손실을 제거하기 위해 순서를 변경하는 방법. 이 옵션이 흥미롭다면 비누를 개인적으로 작성하십시오.
예를 들어 시장이 약간 올바른 방향으로 갔다가 다시 돌아간 경우 손익분기점에서 거래를 종료하고 역방향으로 열면 됩니다. ecn 스코어로 boker fx를 엽니다. 이 모든 것에 어떻게 참여합니까? 시작하자마자 나는 즉시 어떤 종류의 혼미함을 느낍니다. 지금 다시 한 번, 나는 내 손으로 거래하는 것은 완전히 넌센스라고 확신했습니다. 코드에 많은 구성 요소를 작성해야 하는 이유를 이해하고 이해하는 방법은 무엇입니까?
 
Alexey Viktorov :

노력하다

i 번째 막대의 시간과 i 대신 결과 막대 번호.


이런 생각을 했나요?
 //+------------------------------------------------------------------+
//|                                                         help.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          "http://www.mql4.com"
#property description "Moving Averages Convergence/Divergence"
#property strict
#include <MovingAverages.mqh>
//--- indicator settings
#property   indicator_separate_window
#property   indicator_buffers 2
#property   indicator_color1   clrSilver
#property   indicator_color2   clrRed
#property   indicator_width1   2

//--- indicator parameters
input int SignalSMA= 8 ;             // Signal SMA Period
//--- indicator buffers
double     ExtBuffer[];
double     ExtSignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ( void )
  {
   IndicatorDigits ( Digits + 1 );
//--- drawing settings
   SetIndexStyle ( 0 , DRAW_HISTOGRAM );
   SetIndexStyle ( 1 , DRAW_LINE );
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtBuffer);
   SetIndexBuffer ( 1 ,ExtSignalBuffer);

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
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 i,limit;
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if (prev_calculated> 0 )
      limit++;
//--- counted in the 1-st buffer
   for (i= 0 ;i<limit;i++)
     {
       int bars= iBarShift ( Symbol (), PERIOD_M1 , iTime ( Symbol (), PERIOD_CURRENT ,i), false );
      ExtBuffer[i]=(
                     iMA ( NULL , PERIOD_CURRENT , 1 , 0 , MODE_SMA , PRICE_HIGH ,i)
                    + iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN , bars )
                    );
       Print (bars);
     }
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated, 0 ,SignalSMA,ExtBuffer,ExtSignalBuffer);
//--- done
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
ax00071 :
관심을 가져 주셔서 감사합니다)) 여기 우엉입니다. . . . . . 마감때, 나는 거래 유형을 확인하기 위한 추가 조건 없이 금요일 22:00에 거래를 종료하는 조건을 가지고 있었습니다. 그리고 거래 자체는 몇 시간 전에 마감되었습니다. 음, 22시가 되었을 때, 고문은 이미 마감된 주문을 마감하기 위해 주문을 보내기 시작했습니다. . . . .
스스로를 식물이라고 부르는 것은 거의 가치가 없습니다. 그러한 실수를 현지화하고 이해하고 수정했다면 프로그래머라는 직함에 접근한 것입니다!