[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 408

 
costy_ :
덕분에.
 
Roman. :


터미널 사본 ... :-)

각각 고유한 거래 계정이 있습니다.

즉, 여러 터미널을 동시에 실행하고 서로 다른 로그인으로 각각 로그인해야 합니까?
 
LOA :

예 .... "철저한" 답변입니다. 모든 사건에는 이유가 있어야 합니다. 어떤 종류의 오작동을 만나는 전문가는 무엇을 찾아야하는지 알고 있습니다. 알고리즘을 여러 번 살펴보았지만 이유를 찾지 못해 전문가에게 조언을 구합니다. 이유는 무엇입니까?
글쎄, 당신 자신은 할 수 없기 때문에 전체 알고리즘이 방해하지 않을 것입니다. 위의 줄에는 명백한 잼이 없습니다. 전체 댓글입니다.
 
costy_ :

... 표시기.

 int start(){
   double Val= iCustom ( NULL , 0 , "HMR MULTI Indicator" , 0 , 0 );   
   Alert (Val);
}

빈 어드바이저로 "포크 포크" 방법을 시도하십시오.

ObjectCreate가 하위 창을 찾는 표시기를 확인하십시오(또는 왜 IF TESTING 또는 OPTIMIZING을 그리는지).

 if ( IsTesting ()|| IsOptimization ())флаг_Канады_не_рисовать_obj=true;           //проверяем надо ли рисовать (в ините ему место через статик переменную)
if (!флаг_Канады_не_рисовать_obj){                                           //запрет отрисовки объектов ели оптимизация или тестирование
ObjectCreate (........................);
}


비어 있는 Expert Advisor를 시도했는데 경고가 정상적으로 표시되고 ObjectCreate 표시기가 다음과 같이 표시됩니다.

 #property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1 Yellow
#property indicator_color2 Aqua
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_color5 White
#property indicator_color6 Magenta
#property indicator_color7 Lime
#property indicator_color8 Indigo

extern string S1 = "EURUSD" ;  
extern string S2 = "EURJPY" ;  
extern string S3 = "EURCAD" ;  
extern string S4 = "AUDUSD" ;  
extern string S5 = "GBPUSD" ;  
extern string S6 = "USDJPY" ;  
extern string S7 = "USDCHF" ;  
extern string S8 = "USDCAD" ;
//переменные объявляем сразу,чтобы постоянно не создавались (оптимизация)
double Buff1[],Buff2[],Buff3[],Buff4[],Buff5[],Buff6[],Buff7[],Buff8[],
       x1,x2,x3,x4,x5,x6,x7,x8;
int     BarsOnScreen,LeftBar,RightBar,i;
bool    _init;
string name = "HMR MULTI Indicator" ;     
//+------------------------------------------------------------------+
int init()
  {
   _init = false;
   IndicatorBuffers ( 8 );
   //Если символ графика совпадает с символом прорисовки,нарисуем линию толще
   if ( Symbol ()==S1) i= 3 ; else i= 1 ;
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID ,i,indicator_color1); SetIndexBuffer ( 0 ,Buff1);
   if ( Symbol ()==S2) i= 3 ; else i= 1 ;
   SetIndexStyle ( 1 , DRAW_LINE , STYLE_SOLID ,i,indicator_color2); SetIndexBuffer ( 1 ,Buff2);
   if ( Symbol ()==S3) i= 3 ; else i= 1 ;
   SetIndexStyle ( 2 , DRAW_LINE , STYLE_SOLID ,i,indicator_color3); SetIndexBuffer ( 2 ,Buff3);
   if ( Symbol ()==S4) i= 3 ; else i= 1 ;
   SetIndexStyle ( 3 , DRAW_LINE , STYLE_SOLID ,i,indicator_color4); SetIndexBuffer ( 3 ,Buff4);
   if ( Symbol ()==S5) i= 3 ; else i= 1 ;
   SetIndexStyle ( 4 , DRAW_LINE , STYLE_SOLID ,i,indicator_color5); SetIndexBuffer ( 4 ,Buff5);
   if ( Symbol ()==S6) i= 3 ; else i= 1 ;
   SetIndexStyle ( 5 , DRAW_LINE , STYLE_SOLID ,i,indicator_color6); SetIndexBuffer ( 5 ,Buff6);
   if ( Symbol ()==S7) i= 3 ; else i= 1 ;
   SetIndexStyle ( 6 , DRAW_LINE , STYLE_SOLID ,i,indicator_color7); SetIndexBuffer ( 6 ,Buff7);
   if ( Symbol ()==S8) i= 3 ; else i= 1 ;
   SetIndexStyle ( 7 , DRAW_LINE , STYLE_SOLID ,i,indicator_color8); SetIndexBuffer ( 7 ,Buff8);
   return ( 0 );
  }
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectsDeleteAll ();  
   return ( 0 );
  }
//+------------------------------------------------------------------+
int start()
{
       if (!_init) MyInit();
      BarsOnScreen = WindowBarsPerChart ()+ 1 ;
      LeftBar = WindowFirstVisibleBar ();
      RightBar = LeftBar-BarsOnScreen;
       if (RightBar< 0 ) RightBar= 0 ;
       //Проверяем есть ли история баров для прорисовки
       if (LeftBar> iBars (S1, 0 ) || LeftBar> iBars (S2, 0 ) || LeftBar> iBars (S3, 0 ) || LeftBar> iBars (S4, 0 ) ||
          LeftBar> iBars (S5, 0 ) || LeftBar> iBars (S6, 0 ) || LeftBar> iBars (S7, 0 ) || LeftBar> iBars (S8, 0 )) return ;
       //Выносим из цикла,чтобы уменьшить расчёты (оптимизация)
       x1= iClose (S1, 0 , iHighest (S1, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));
       x2= iClose (S2, 0 , iHighest (S2, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));
       x3= iClose (S3, 0 , iHighest (S3, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));  
       x4= iClose (S4, 0 , iHighest (S4, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));
       x5= iClose (S5, 0 , iHighest (S5, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));
       x6= iClose (S6, 0 , iHighest (S6, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));
       x7= iClose (S7, 0 , iHighest (S7, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));
       x8= iClose (S8, 0 , iHighest (S8, 0 ,MODE_CLOSE,BarsOnScreen,RightBar));
       for (i=RightBar; i<LeftBar; i++)
        {       
         Buff1[i] = iClose (S1, 0 , i)/x1;
         Buff2[i] = iClose (S2, 0 , i)/x2;
         Buff3[i] = iClose (S3, 0 , i)/x3;  
         Buff4[i] = iClose (S4, 0 , i)/x4;
         Buff5[i] = iClose (S5, 0 , i)/x5;
         Buff6[i] = iClose (S6, 0 , i)/x6;
         Buff7[i] = iClose (S7, 0 , i)/x7;
         Buff8[i] = iClose (S8, 0 , i)/x8;
        }
return ( 0 );
}   
//+------------------------------------------------------------------+
void MyInit ()
{
   //Подменяем имя индикатора чтобы получить уникальный номер окна
   string label = GetTickCount ();
   IndicatorShortName (label);
   int win = WindowFind (label);
   //Восстанавливаем имя индикатора
   IndicatorShortName (name);
   //---- labels    
   ObjectCreate ( "L1" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L1" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L1" +label, OBJPROP_YDISTANCE , 12 );
   ObjectSetText ( "L1" +label,S1, 10 , "Tahoma" ,indicator_color1);
   ObjectCreate ( "L2" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L2" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L2" +label, OBJPROP_YDISTANCE , 24 );
   ObjectSetText ( "L2" +label,S2, 10 , "Tahoma" ,indicator_color2);
   ObjectCreate ( "L3" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L3" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L3" +label, OBJPROP_YDISTANCE , 36 );
   ObjectSetText ( "L3" +label,S3, 10 , "Tahoma" ,indicator_color3);
   ObjectCreate ( "L4" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L4" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L4" +label, OBJPROP_YDISTANCE , 48 );
   ObjectSetText ( "L4" +label,S4, 10 , "Tahoma" ,indicator_color4);
   ObjectCreate ( "L5" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L5" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L5" +label, OBJPROP_YDISTANCE , 60 );
   ObjectSetText ( "L5" +label,S5, 10 , "Tahoma" ,indicator_color5);   
   ObjectCreate ( "L6" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L6" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L6" +label, OBJPROP_YDISTANCE , 72 );
   ObjectSetText ( "L6" +label,S6, 10 , "Tahoma" ,indicator_color6);
   ObjectCreate ( "L7" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L7" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L7" +label, OBJPROP_YDISTANCE , 84 );
   ObjectSetText ( "L7" +label,S7, 10 , "Tahoma" ,indicator_color7);
   ObjectCreate ( "L8" +label, OBJ_LABEL ,win, 0 , 0 , 0 , 0 );
   ObjectSet ( "L8" +label, OBJPROP_XDISTANCE , 10 );
   ObjectSet ( "L8" +label, OBJPROP_YDISTANCE , 96 );
   ObjectSetText ( "L8" +label,S8, 10 , "Tahoma" ,indicator_color8);
   WindowRedraw ();
   _init = true;
}

여기서 바꿔야 할 것은...?

 
kolyango :


비어 있는 Expert Advisor를 시도했는데 경고가 정상적으로 표시되고 ObjectCreate 표시기가 다음과 같이 표시됩니다.

여기서 바꿔야 할 것은...?

불일치가 보장됩니다

 iClose (S1, 0 , iHighest (S1, 0 ,MODE_CLOSE,BarsOnScreen, iBarShift (S1, 0 ,Time[RightBar])));

당신은요

 iClose (S1, 0 , iHighest (S1, 0 ,MODE_CLOSE,BarsOnScreen,RightBar))

막대가 아닌 시간의 변화

하나의 창에서 모든 것을 구현하는 것은 그리 좋지 않습니다 (새해의 화환에도 불구하고))

그리고 너무 오래 걸립니다 ))

파일:
xxx.mq4  7 kb
 
gara :

안녕하세요 여러분, 전문가를 위한 질문입니다.

MT4가 어떻게 작동하는지 자세히 설명해 주세요.

내 비전:

터미널이 실행되고 인터넷이 연결되고 시장 개요에서 일부 도구가 실행되고 일부 차트가 열립니다. 차트가 열려 있고 앞뒤로 똑딱 거리고 막대가 닫혀 있는 한 악기를 생각해 보겠습니다. 명확하지 않은 순간:

일부 틱을 건너뛸 수 있거나 각 틱의 도착과 완전히 동기화되어 있기 때문에 내 자신에게 마지막으로 형성된 막대가 브로커 측의 막대와 일치합니까?

내 기록이 브로커의 기록과 얼마나 자주 동기화됩니까?


나는 감히 질문을 반복한다
 
gara :
나는 감히 질문을 반복한다
gara 터미널은 매 틱마다 동기화됩니다. 초당 여러 틱이 있을 수 있습니다. 연결이 끊어진 경우에만 동기화되지 않습니다. 이 경우 연결이 다시 나타나면 놓친 눈금이 로드됩니다.
 
igid :
즉, 여러 터미널을 동시에 실행하고 서로 다른 로그인으로 각각 로그인해야 합니까?

정확히. 터미널을 처음부터 설치하지 않고 기존 설정을 폴더에 복사하는 것이 훨씬 쉽습니다(예: 1,2,3,4 ... 100).

그리고 "계정 개설"을 누를 때마다 다른 설정으로 고문을 실행하고 한 두 달 안에 어떤 설정이 가장 좋은지 확인하고 확인합니다.

 

알파리 터미널에서 누가 일했는지 알려주세요. 나는 50개의 통화 쌍에 대한 어드바이저를 운영하고 있으며, 보류 중일지라도 두 번마다 틱이 없음을 나타냅니다. 슬리피지 설정.

또한 시장 감시 창에 도구가 있음에도 불구하고 오류 4066이 발생합니다.

버그가 많은 서버입니까? 나는 다른 브로커와도 그런 문제가 발생하지 않았습니다.

 

모두 좋은 하루,

나는 프로그래밍에서 완전히 제로이고 내 로봇은 일주일에 2번만 거래합니다.

하지만 차트에서 이동 평균선(저는 표준 iMa 사용)의 색상을 변경하는 방법(!정말 보기 지겹습니다!)을 알려줄 수 있습니까?

코드 예: FixEma= iMA(NULL,0,fix,0, MODE_EMA, PRICE_LOW,0);

나는 그것들을 실제로 빨간색으로 가지고 있고(그리고 그 중 6개가 있음) 각 테스트 후에 수동으로 차트에 색상을 지정해야 합니다(예, 그게 바로 제가 ...). 다시 쓰고 싶지 않습니다.

표준 명령이 있습니까?

엄밀히 판단하지 마세요, 저는 그냥 배우는 중입니다 ...