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

 

잘 설명하겠습니다.

주요 지표는 유로 달러 쌍에 있습니다. 이 지표에서 지표는 금, 달러 인덱스 및 유로의 다른 쌍에서 호출 됩니다. 표시기는 분 단위로 작동하며 때로는 달러 인덱스에 따옴표가 없는 경우가 있습니다. 예를 들어 유로에는 15분에 촛불이 있지만 달러 인덱스에는 그러한 촛불이 없습니다. 얼고 틱하지 않습니다. 그런 다음 얼마 후 16분이 유태인에 나타나고 16분이 인덱스에 나타납니다. 문제? 호출된 모든 계측기의 막대가 시간적으로 일치하는 경우에만 계산되도록 표시기의 계산을 동기화하는 방법????

나는 이 디자인을 시도했다

 if ((iTime( NULL , 0 ,i)==iTime( "XAUUSD" , 0 ,i))&&(iTime( NULL , 0 ,i)==iTime( "EURJPY" , 0 ,i))){

그리고 모든 것이 멋진 것처럼 보이지만 계산은 현재 날짜에만 이루어지며 이전 날짜에는 신호가 없습니다. 문자 동기화를 위한 표준 솔루션이 있을까요????

 
nikelodeon :

잘 설명하겠습니다.

주요 지표는 유로 달러 쌍에 있습니다. 이 지표에서 지표는 금, 달러 인덱스 및 유로의 다른 쌍에서 호출됩니다. 표시기는 분 단위로 작동하며 때로는 달러 인덱스에 따옴표가 없는 경우가 있습니다. 예를 들어 유로에는 15분에 촛불이 있지만 달러 인덱스에는 그러한 촛불이 없습니다. 얼고 틱하지 않습니다. 그런 다음 얼마 후 16분이 유대인에 나타나고 16분이 색인에 나타납니다. 문제? 호출된 모든 계측기의 막대가 시간적으로 일치하는 경우에만 계산되도록 표시기의 계산을 동기화하는 방법????

나는 이 디자인을 시도했다

그리고 모든 것이 멋진 것처럼 보이지만 계산은 현재 날짜에만 이루어지며 이전 날짜에는 신호가 없습니다. 문자 동기화를 위한 표준 솔루션이 있을까요????

SymbolInfoTick() 루프의 타이머에서 이를 시도하여 기호 데이터를 가져옵니다. 그리고 이미 필요에 따라 동기화할 수 있습니다.

요점은 프로그램이 이 기호에 틱이 도착할 때만 현재 기호에서 시작한다는 것입니다. 따라서 제 시간에 다른 기호에서 진드기를 얻을 수 없습니다. 그러나 틱과 독립적으로 작동하는 타이머에서는 다른 기호에서 틱을 얻을 수 있습니다.

자신의 것이 아닌 기호에서 들어오는 틱에 대한 빠른 반응이 필요한 경우 타이머를 밀리초 단위로 만들 수도 있습니다.

 
artmedia70 :
그리고 당신의 질문은 당신에게만 매우 모호하고 이해할 수 있습니다.

당신에게 LOW BOW! 감사합니다! 휴일!

2점 더요. 1) 별도의 창에서 표시기를 제거 할 수 있습니까?

2) 함수를 추가합니다. 현재 ATR이 ATR보다 크면(H 기간 동안) 막대 위의 ATR이 다른 색상으로 강조 표시됩니까? 아니면 값이 이 막대 위에만 쓰여질까요?

 
kocunyc89 :

당신에게 LOW BOW! 감사합니다! 휴일!

2점 더요. 1) 별도의 창에서 표시기를 제거 할 수 있습니까?

2) 함수를 추가합니다. 현재 ATR이 ATR보다 크면(H 기간 동안) 막대 위의 ATR이 다른 색상으로 강조 표시됩니까? 아니면 값이 이 막대 위에만 쓰여질까요?

음 ... Nate, 자신을 편집하십시오.

 //+------------------------------------------------------------------+
//|                                                 iATRwithData.mq4 |
//|              Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link        "https://login.mql5.com/ru/users/artmedia70"
#property version    "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots    1
//--- plot ATR
#property indicator_label1   "ATR"
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrDodgerBlue
#property indicator_style1   STYLE_SOLID
#property indicator_width1   1
//+------------------------------------------------------------------+
//| enums                                                          |
//+------------------------------------------------------------------+
enum enumYN
  {
   enYes= 1 , // Yes
   enNo= 0 ,   // No
  };
//+------------------------------------------------------------------+
//| input parameters                                                 |
//+------------------------------------------------------------------+
input int       PeriodATR= 14 ;           // ATRs calculation period
int periodATR=(PeriodATR< 1 )? 1 :PeriodATR;
sinput enumYN DrawGraphic=enYes;       // Drawing ATR data over the candles
sinput int StartDrawingBar= 100 ;         // Max bar for drawing ATRs data
int startDrawingBar;
sinput int TextSize= 5 ;                 // Text size
sinput color TextColor= clrDodgerBlue ;   // Text color
//--- indicator buffers
double          BufferATR[];
string Prefix;
//+------------------------------------------------------------------+
//| Classes                                                          |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,BufferATR);
   
   Prefix= "iATRwd(" + IntegerToString (periodATR)+ ")" ;
   IndicatorSetString ( INDICATOR_SHORTNAME ,Prefix);
   int bars= Bars ( Symbol (), Period ());
   startDrawingBar=(StartDrawingBar< 1 )? 1 :(StartDrawingBar>bars)?bars:StartDrawingBar;
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- delete graphics
   ObjectsDeleteAll ( 0 ,Prefix, 0 );
//---
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   if (rates_total<periodATR) return ( 0 );
   int limit=rates_total-prev_calculated;
   if (limit> 1 ) limit=rates_total-periodATR- 1 ;
   //---
   for ( int i=limit; i>= 0 ; i--) {
      BufferATR[i]= iATR ( Symbol (), Period (),periodATR,i);
       if (DrawGraphic && i<startDrawingBar) {
         string tm_txt= TimeToString (time[i], TIME_DATE | TIME_MINUTES );
         string nm=Prefix+ "_" +tm_txt;
         string text= IntegerToString ( int (BufferATR[i]/ Point ()));
         string tooltip= "ATRs period for candle on " +tm_txt+ " is " +text;
         SetArrowText( 0 ,nm,TextColor,text, 0 , ANCHOR_LOWER ,time[i],high[i], "Arial" ,TextSize,tooltip);
         }
      }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Functions                                                        |
//+------------------------------------------------------------------+
void SetArrowText( long chart_id, string name, color text_color, string text, int sub_window, 
                   long text_anchor, long text_time1, double text_price1, string font= "Arial" , long font_size= 5 , 
                   string tooltip= "\n" , bool selection= false , bool hidden= true ) {
   
   if ( ObjectFind (chart_id,name)< 0 ) ObjectCreate (chart_id,name, OBJ_TEXT ,sub_window,text_time1,text_price1);
   ObjectSetInteger (chart_id,name, OBJPROP_ANCHOR ,text_anchor);
   ObjectSetInteger (chart_id,name, OBJPROP_WIDTH ,font_size);
   ObjectSetString (chart_id,name, OBJPROP_FONT ,font);
   ObjectSetString (chart_id,name, OBJPROP_TEXT ,text);
   ObjectSetInteger (chart_id,name, OBJPROP_COLOR ,text_color);
   ObjectSetInteger (chart_id,name, OBJPROP_FONTSIZE ,font_size);
   ObjectSetInteger (chart_id,name,OBJPROP_TIME1,text_time1);
   ObjectSetDouble (chart_id,name,OBJPROP_PRICE1,text_price1);
   ObjectSetInteger (chart_id,name, OBJPROP_SELECTED ,selection);
   ObjectSetInteger (chart_id,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_id,name, OBJPROP_HIDDEN ,hidden);
   ObjectSetString (chart_id,name, OBJPROP_TOOLTIP ,tooltip);
}
//+------------------------------------------------------------------+

아니면 당신을 위해 모든 것을합니까?

 
artmedia70 :

음 ... Nate, 자신을 편집하십시오.

아니면 당신을 위해 모든 것을합니까?

정말 감사합니다! 친절한 사람!
 
kocunyc89 :
정말 감사합니다! 친절한 사람!
물론이죠.
 
좋은 저녁입니다. 질문이 있습니다. 표시기의 두 창에 버퍼 데이터를 표시할 수 있습니까? 일부는 메인 차트에, 일부는 하위 창에 표시할 수 있습니까? 그렇다면 방법을 알려주세요...
 
artmedia70 :

별말씀을요. 비밀이 아니라면 프로그램의 마지막 실행 시간을 표시하는 레이블이 필요한 이유는 무엇입니까? 시간은 변경되지 않습니다.

그냥 쓸데없는 호기심...

오프라인 틱 차트용입니다.



 
안녕하세요.

두 MT4 터미널 간에 어떤 기능이 변수를 보낼 수 있습니까? 가능하면 문서에 대한 링크를 추가하십시오.
 
abeiks : 두 MT4 터미널 간에 변수를 보낼 수 있는 기능은 무엇입니까?

정수 플래그=FILE_WRITE+FILE_TXT+FILE_COMMON;

int 정보 = FileOpen(fName, 플래그);

FileWrite (정보, 할 일); 다른 단말에서 읽습니다. FileOpen 및 F1의 커서 - 도움말 보기