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

 
hoz :

그리고 이 변수는 비밀이 아닌 경우 명시적으로 어디에 설정되어 있습니까? :) b-PSI@Base.mqh 라이브러리에서 다음과 같이 선언되었습니다.

그러나 더 이상 아무것도 없습니다. 그리고 일반적으로 현재 계측기의 값은 일반적으로 기본적으로 Symbol() 을 통해 반환됩니다. 그렇다면 여기에 변수가 있는 이유는 무엇입니까?

나는 이미 당신을 위해 이 질문에 답했습니다. 다중 통화 - 현재 기호 = 기호() - 이것은 특별한 경우일 뿐입니다.

추신 당신은 흥미로운 접근 방식을 가지고 있습니다. 다른 사람의 코드를 가져 와서 자신의 논리에 "조정"하려고합니다. 당신은 모든 권리가 있습니다. "당신의 논리가 나와 다른 이유는 무엇입니까?"라고 묻지 마십시오!

 
TarasBY :

나는 이미 당신을 위해 이 질문에 답했습니다. 다중 통화에 대해 - 현재 기호 = 기호() - 이것은 단지 특별한 경우입니다.

추신 당신은 흥미로운 접근 방식을 가지고 있습니다. 다른 사람의 코드를 가져 와서 자신의 논리에 맞게 "조정"하려고합니다. 당신은 모든 권리가 있습니다. "당신의 논리가 나와 다른 이유는 무엇입니까?"라고 묻지 마십시오!



네, 저는 강요하지 않겠습니다. 나는 단지 당신이 그것을 어떻게했는지 배우고 싶습니다. 그러나 나는 아무 것도 복사하지 않을 것입니다 ... 나는 전문가들이 어떻게 생각하는지보고 싶습니다. 여기에 진짜 이유가 있습니다. 그래서.

void fGet_MarketInfo(string fs_Symbol, int fi_Ticket = 0) 함수를 살펴봅니다.

 if (fs_Symbol != bs_Symbol || fi_Ticket < 0 )

이 변수는 이 함수 내에서 선언되지 않습니다. 다른 2개의 기본 파일(include 및 function)도 선언되지 않았습니다. 어디에서 찾아야 하는지 명확하지 않습니다. 그게 내가 묻는거야. 나는 그것이 원래 어디에 나타났는지 이해하고 싶습니다. 발표했다. 어렵지 않다면...

다른 변수에 대한 또 다른 오해일 뿐입니다. bool 함수 fCheck_LevelsBLOC 에는 다음 줄이 포함되어 있습니다.

   if (fi_Type == 0 ) li_cmd = 0 ; else if (fi_Type == 1 ) li_cmd = 1 ;
     else if (fi_Type % 2 == 0 ) li_cmd = 1 ; else li_cmd = 0 ;
    ld_Price = bda_Price[li_cmd];

bda_Price[li_cmd]b-PSI@Base.mqh 라이브러리에서 처음 언급되었습니다.

bda_Price[ 2 ];

배열 요소 가 설정되지 않았습니다. 따라서 각각은 0과 같습니다. li_cmd 배열 매개변수가 무엇이든 표현식은 값 0을 취합니까?

ld_Price = bda_Price[li_cmd];
 
bikrus13 :
안녕하세요. 거래를 열 때 많이 증가하는 스크립트를 작성할 수 있는 모든 사람에게 응답을 요청합니다. 세부 사항은 개인에 씁니다. 작업 완료 시 보상 보장

여기에서 작업을 만족시키기 위해 입찰을 여는 건가요??? 일반적으로 작업이 만족하지 않습니다 ...

명확하지 않은 자신의 코드 작성을 시작하십시오. 요청하십시오. 도와 드리겠습니다. 그러나 작업을 만족시킬 생각은 없습니다 ...

또는 직업으로 가십시오-그들은 당신과 작업 모두를 만족시킬 것입니다 ... denyushka 를 위해

 
시간 기록의 EA에서 프로그래밍 방식으로 가격(Ask 및 Bid)을 배울 수 있습니까? 예를 들어 10분 전 또는 10초 전에 묻습니다. 특정 시간의 시가 와 종가 , Hi-Lo가 있는 막대의 시계열을 구하는 기능이 알려져 있지만 특정 시점에 Ask와 Bid를 찾는 방법은 다음과 같습니다.
 
Dikii :
시간 기록의 EA에서 프로그래밍 방식으로 가격(Ask 및 Bid)을 배울 수 있습니까? 예를 들어 10분 전 또는 10초 전에 묻습니다. 특정 시간의 시가와 종가, Hi-Lo가 있는 막대의 시계열을 구하는 기능이 알려져 있지만 특정 시점에 Ask와 Bid를 찾는 방법은 다음과 같습니다.

어떤 식으로든 물어보세요, 오직 Bid! 그건 그렇고, 나를 포함하여 모두가 그것을 좋아할 것입니다!
 
borilunad :

어떤 식으로든 물어보세요, 오직 Bid! 그건 그렇고, 나를 포함하여 모두가 그것을 좋아할 것입니다!

코드를 사용하여 10초 전에 입찰가를 찾는 방법을 설명하세요.
 

여기에서 이전에 배열에 대해 질문했습니다. 분명히 여전히 뭔가를 이해하지 못했습니다. 테스터에서 실행할 때 0으로 나누기가 있습니다. 따라서 일부 배열에는 0이 있습니다. 오류가 어디에 있는지 알 수 없습니다. 첨부 파일의 코드입니다. WORDe의 러시아어 주석. 죄송합니다. 내 MetaEditor는 러시아어를 지원하지 않습니다.

버그를 찾는 데 도움을 주세요. 그리고 어렵지 않다면 설명하십시오.

Неполучилось сразу и два файла поместить. Вордовский документ неразрешается всавлять. Как иначе проконтировать на русском незнаю , только полностью код скопировать с ворда и поместить сюда

//быстры MA
extern int     MA_Period1     =  8;
extern int     plius1         =  100;
extern int     MA_Shift1      =  0;
extern int     MA_Method1     =  0;                                                 
//медленый MA
extern int     MA_Period2     =  13;
extern int     plius2         =  100;
extern int     MA_Shift2      =  0;
extern int     MA_Method2     =  3;                                                 
//начало флета
//поиск флета по сигналу или время
extern bool  start       =  true;    // true ->по сигналу, false->по времени
// по сигналу начинаем с данного времени
extern int     startHourFlatMA        =  16;    
extern int     startMinFlatMA        =  00;
//сигнал есть, ждем пока закроется  BarEnd бар
extern int     BarEnd         =  240;
datetime       LastTime;
//datetime       startTime;
// по времени начьнем искать флет с
extern int     startHourFlat        =  0;   
extern int     startMinFlat         =  0;    
//конец флета в промежутке времени или по истечению времени
//начало промежутка
extern int     startHourEnd        =  4;    
extern int     startMinEnd         =  45;
//конец промежутка, и истечение времени по времени
extern int     endHourEnd        =  7;    
extern int     endMinEnd         =  30;

//включение фильтра Volumes
extern bool volFiltr = true;            //true -> включено,   false -> выключено
//skirtumas tarp penktadienio uzdarymo ir pirmadienio atidarymo
extern int   gep = 300;  
bool           susikirtimas = false;      //пересечение индикаторных линий
bool           flat; 
//массивы
double chPriceH[], chPriceL[], chPriceO[], chPriceC[], chTime[];
double avgPriceH[], avgPriceL[], avgPriceO[], avgPriceC[]; 
int iH, iL ,iO, iC, iT;
double C[], T[], y[];
int i = -1;                      // индекс массива
int j = -1;                      // индекс массива
int n = -1;                              // индекс массива
double max;                               //максимаьная разница между элементами масивов

int init ()
{
ArrayResize(chPriceH, 0);
ArrayResize(chPriceL, 0);
ArrayResize(chPriceO, 0);
ArrayResize(chPriceC, 0);
ArrayResize(chTime, 0);
ArrayResize(avgPriceH, 0); 
ArrayResize(avgPriceL, 0); 
ArrayResize(avgPriceO, 0); 
ArrayResize(avgPriceC, 0); 
ArrayResize (C, 0); 
ArrayResize (T, 0);
ArrayResize (y, 0);
}
 int start()
 {
   double volMA11, volMA12, volMA21, volMA22;  
   double x[], y[]; 
   
   Print("***старт***");
   
   if(!TF_F_NewBar())return(0);
 
   Print("---1-собираем данные индикаторов---");
   volMA11 = iCustom(NULL, 15, "volumeMA",  2, 1);         
   volMA12 = iCustom(NULL, 15, "volumeMA",  2, 2);
   volMA21 = iCustom(NULL, 15, "volumeMA",  3, 1);
   volMA22 = iCustom(NULL, 15, "volumeMA",  3, 2);
   Print("volMA11 = "+volMA11);
   Print("volMA12 = "+volMA12);
   Print("volMA21 = "+volMA21);
   Print("volMA22 = "+volMA22);
   Print("----1 данные собраны---END");   
   Print("---2 какой день недели--");
   if(DayOfWeek()==1 || DayOfWeek()==2 || DayOfWeek()==3 || DayOfWeek()==4)
   {         
      Print("DayOfWeek = "+DayOfWeek());
  Print("----2---END");    
      if(Hour() >= startHourFlatMA && Minute() >= startMinFlatMA)
  Print("---3 проверка времени, разрешается ли искать флет---");
      {
         Print("время начала флета >=  "+Hour()+":"+Minute());
 Print("----3--end");
 Print("---4 есть ли пересечение линий индикатора----");
         if(volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0)
         {                                                                                   //если было пересечение
            susikirtimas = true;
            Print("пересечение = "+susikirtimas);
Print("---4---END");
Print("---5 жшдем окончания  M240 свечи--");
            LastTime = iTime(NULL, BarEnd, 1);
            Print("LastTime = "+LastTime);
            //startTime = Time[1];
         }      
         if(susikirtimas == true && iTime(NULL, BarEnd, 1)!= LastTime)
         {
            LastTime = iTime(NULL, BarEnd, 1);
            flat = true;
            Print("flat = "+flat);
         }
         if(flat == true)
         {
Print(-начало флета есть");
Print("-- 6 собираем данные в массивы--");
            //увеличиваем число элементов массива на один
            i++; 
            Print("увеличиваем длину массива в зависимости от i "); 
            ArrayResize(avgPriceH,i); 
            ArrayResize(avgPriceL,i); 
            ArrayResize(avgPriceO,i); 
            ArrayResize(avgPriceC,i);           
             
            Print("с каждой новой свечой должны получить новые элементы массивов");
            avgPriceH[i] = High[1];  Print("AVG элемент avgPriceH["+i+"] = "+avgPriceH[i]);   
            avgPriceL[i] = Low[1];   Print("AVG элемент avgPriceL["+i+"] = "+avgPriceL[i]);   
            avgPriceO[i] = Open[1];  Print("AVG элемент avgPriceO["+i+"] = "+avgPriceO[i]);   
            avgPriceC[i] = Close[1]; Print("AVG mэлементasyvo elementas avgPriceC["+i+"] = "+avgPriceC[i]);            
            j++; Print("индех канальных массивов  j = "+j);      
            ArrayResize(chPriceC,j); Print("CH masyvo ilgis chPriceC = "+j); 
            ArrayResize(chTime,j);     Print("CH masyvo ilgis chTime = "+j); 
            //включен ли фильтр
            if(volFiltr)
            {               
               //да
               Print("да включен");
               Print("volMA11 = "+volMA11, "   Volume[1] = "+Volume[1]); 
               if(volMA11 - Volume[1] >= 0)//фильтр
               {
                  Print("записываем Close[1] ir Time[1] в массивы");
                  chPriceC[j] = Close[1];  Print("masyvo elementas chPriceC["+j+"] = "+j);                   
                  chTime[j] = Time[1];     Print("masyvo elementas chTimev["+j+"] = "+j); 
               }
               else
               {
                  //renkam
                  chPriceC[j] = 0;    Print("masyvo elementas chPriceC["+j+"] = "+j); 
                  chTime[j] = 0;      Print("masyvo elementas chTimev["+j+"] = "+j); 
               }
            }
Print("получилис отфильтрваные массивы с нулями ");
            else // jei filtras isjungtas, tada duomenys kanalo skaiciavimui
            {
               //renkam
               Print("если фильтр выключен");
               Print("pradedam rinkti Close[1] ir Time[1] duomenis i masyvus po filtracijos");
               //chPriceH[j] = High[1]; Print("masyvo elementas chPriceH["+j+"] = "+j); 
               //chPriceL[j] = Low[1];  Print("masyvo elementas chPriceL["+j+"] = "+j); 
               chPriceC[j] = Close[1];  Print("masyvo elementas chPriceC["+j+"] = "+j); 
               //chPriceO[j] = Open[1]; Print("masyvo elementas chPriceO["+j+"] = "+j); 
               chTime[j] = Time[1];     Print("masyvo elementas chTimev["+j+"] = "+j);                                                                                              
            }
         //suzinom kokio ilgio masyvai
         Print("после того как массивы собраны узнаем их длину");
         Print("ArrayRange(chPriceC, 0) = "+iC);         
         Print("фильтруем их от нулей, после фильтрции длина массивов меньше чем была до фильтрции");                 
         for(int k = 0; k <= iC; k++)        
         {            
            if(chPriceC[k] > 0)          
            {
               n++;                           
                ArrayResize(C,n);
                ArrayResize(T,n);
                C[n] = chPriceC[k];
               T[n] = chTime[k];        
               Print("naujo masyvo elementas C["+n+"] = "+C[n]);
               Print("naujo masyvo elementas irasytas T["+n+"] = ",T[n]);
               Print("naujo atfiltruoto masyvo ilgis n = ",n);
            }
         }         
       }              
     }
   }
Print("так масивы набирается свеча за свечой пока несработает 7 – ая часть кода"); 

   Print("----------- 6 массивы набирается------------------------end");
Print("----------- 7 массивы набраны------------------------end"); 

   //if(DayOfWeek()==0 || DayOfWeek()==6) return(0);
   
   if(((Hour() >  startHourEnd && Minute() > startMinEnd) &&                                          //jei jau laikas po 6.30
Print("если начялось время начала поиска конца флета"); 

      (volMA11 - volMA21 > 0 && volMA22 - volMA12 > 0))  ||                               //пересечение индикаторных линий
      (Hour() >  endHourEnd && Minute() > endMinEnd))
      {                                                      // или кончилось время флета
        susikirtimas = false; //сбрасываем флаг начала пересичения инд. линий на вход во флет
         flat = false;  //сбрасываем флаг начала флета
         i = -1; //Возвращаем начальные индексы массивов
         j = -1;
   //ищем линию регрении     
        ArrayChLR(C, y, max);//ArrayLR(x, y)
//ищем точки для фибо уровней
        double y161Plus_1 = y[1] + max/50 * 161;
        double y261Plus_1 = y[1] + max/50 * 261;
        double y361Plus_1 = y[1] + max/50 * 361;
        double y423Plus_1 = y[1] + max/50 * 423;
        
        double y161Minus_1 = y[1] - max/50 * 161;
        double y261Minus_1 = y[1] - max/50 * 261;
        double y361Minus_1 = y[1] - max/50 * 361;
        double y423Minus_1 = y[1] - max/50 * 423;
        
        double y161Plus_2 = y[n-1] + max/50 * 161;
        double y261Plus_2 = y[n-1] + max/50 * 261;
        double y361Plus_2 = y[n-1] + max/50 * 361;
        double y423Plus_2 = y[n-1] + max/50 * 423;
        
        double y161Minus_2 = y[n-1] - max/50 * 161;
        double y261Minus_2 = y[n-1] - max/50 * 261;
        double y361Minus_2 = y[n-1] - max/50 * 361;
        double y423Minus_2 = y[n-1] - max/50 * 423;
        
        //turim po dvi kainos koordinate, o laiko galim paimti is masyvo T[]
        //galim brezti linijas
        //y=(y2-y1)/(x2-x1)*(x-x1)+y1
        double y161Plus_3 = (y161Plus_2-y161Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y161Plus_1;
        double y261Plus_3 = (y261Plus_2-y261Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y261Plus_1;
        double y361Plus_3 = (y361Plus_2-y361Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y361Plus_1;
        double y423Plus_3 = (y423Plus_2-y423Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y423Plus_1;
        
        double y161Minus_3 = (y161Plus_2-y161Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y161Plus_1;
        double y261Minus_3 = (y261Plus_2-y261Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y261Plus_1;
        double y361Minus_3 = (y361Plus_2-y361Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y361Plus_1;
        double y423Minus_3 = (y423Plus_2-y423Plus_1)/(T[n]-T[1])*(StrToTime("20:00")-T[1])+y423Plus_1;
        //чертим линии 
        SetTLine(Thistle, "", T[1], y161Plus_1, StrToTime("20:00"), y161Plus_3, 0, 1);
        SetTLine(Thistle, "", T[1], y261Plus_1, StrToTime("20:00"), y261Plus_3, 0, 1);
        SetTLine(Thistle, "", T[1], y361Plus_1, StrToTime("20:00"), y361Plus_3, 0, 1);
        SetTLine(Thistle, "", T[1], y423Plus_1, StrToTime("20:00"), y423Plus_3, 0, 1);
        
        SetTLine(Thistle, "", T[1], y161Minus_1, StrToTime("20:00"), y161Minus_3, 0, 1);
        SetTLine(Thistle, "", T[1], y261Minus_1, StrToTime("20:00"), y261Minus_3, 0, 1);
        SetTLine(Thistle, "", T[1], y361Minus_1, StrToTime("20:00"), y361Minus_3, 0, 1);
        SetTLine(Thistle, "", T[1], y423Minus_1, StrToTime("20:00"), y423Minus_3, 0, 1);
        
         
      } 
      
   return(0);
 }

 //-----------------------------------------------------------------------------------------------------
 
void ArrayChLR(double& x[], double& y[], double& max) {
  double a, b, c, sx=0, sx2=0, sxy=0, sy=0;
  int    i, n=ArraySize(x);

  if (n>1) {
    for (i=0; i<n; i++) {
      sx+=i+1;
      sy+=x[i];
      sxy+=(i+1)*x[i];
      sx2+=(i+1)*(i+1);
    }
    a=sx*sy-n*sxy;
    c=sx*sx-n*sx2;
    if (c!=0) a=a/c; else a=0;
    b=(sy-a*sx)/n;
    ArrayResize(y, n);
    max = 0; 
    double dif[];
    ArrayResize(dif, n);
    for (i=0; i<n; i++) 
    {
      y[i]=a*(i+1)+b;
      dif[i] = MathAbs(Close[i] - y[i]);
      if(dif[i] > max) max = dif[i];      
    }
  } else Print("ArrayLR(): per mazas x masyvo elementu skaicius! n=", n);
}

 
파일:
 
Dikii :
시간 기록의 EA에서 프로그래밍 방식으로 가격(Ask 및 Bid)을 배울 수 있습니까? 예를 들어 10분 전 또는 10초 전에 묻습니다. 특정 시간의 시가와 종가, Hi-Lo가 있는 막대의 시계열을 구하는 기능이 알려져 있지만 특정 시점에 Ask와 Bid를 찾는 방법은 다음과 같습니다.

/history/servername/ 폴더에 ticks.raw 파일이 있습니다. 여기에서 이론적으로 현재 순간보다 짧은 시간 전에 Market Watch에서 기호로 입찰 및 질문을 모두 얻을 수 있습니다. 포럼을 검색하여이 방향으로 파고 ... 추억으로, 나는이 파일에 데이터를 저장하는 메커니즘에 대해 구체적으로 말할 수 없습니다.
 
gince :

여기에서 이전에 배열에 대해 질문했습니다. 분명히 여전히 뭔가를 이해하지 못했습니다. 테스터에서 실행할 때 0으로 나누는 것이 있습니다. 따라서 일부 배열에는 0이 있습니다. 오류가 어디에 있는지 알 수 없습니다. 첨부 파일의 코드입니다. WORDe의 러시아어 주석. 죄송합니다. 내 MetaEditor는 러시아어를 지원하지 않습니다.

버그를 찾는 데 도움을 주세요. 그리고 어렵지 않다면 설명하십시오.


각 분할 전에 인쇄 코드를 입력하는 것이 좋습니다(분할 기준). - 0이 어디에 있는지 즉시 알 수 있습니다.
 
alsu :

각 분할 전에 인쇄 코드를 입력하는 것이 좋습니다(분할 기준). - 0이 어디에 있는지 즉시 알 수 있습니다.

한 부서가 있습니다. 그리고 KIM 함수에 따르면(보충하긴 했지만) 그는 함수의 결과 배열에 데이터가 충분하지 않다고 씁니다. 왜 내가 이해할 수 없습니다. 이것은 0으로 나누는 것 입니다.