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

 

그리고 또 다른 질문.

(i=1; i<StartBar; i++) StartBar를 더 높은 기간(extern int = ... ; //W1, MN1)의 지정된 굽힘(extern int b= 2)이 있는 막대로 만드는 방법 )

 
 


코드를 작성할 수 있습니까?

 
gince :


(i=1; i<StartBar; i++) StartBar를 더 높은 기간(extern int = ... ; //W1, MN1)의 지정된 굽힘(extern int b= 2)이 있는 막대로 만드는 방법 )


개정

지정된 기간의 두 꼭짓점의 일치(매주 및 월간이라고 가정)

 

맞을까?

조건 tf1 > tf2

datetime GetExtremumZZ_2TF_Bars(string sy="", int tf1=0, int tf2=0, int ne=0, int dp=12, int dv=5, int bs=3) 
{
  if (sy=="" || sy=="0") sy=Symbol();
  double zz1, zz2, p1, p2;
  int    i, k1=iBars(sy, tf1), ke=0;
  int    j, k2=iBars(sy, tf2);
  datetime t;
  
  for (i=1; i<k1; i++) 
  {
    zz1=iCustom(sy, tf1, "ZigZag", dp, dv, bs, 0, i);
    if (zz1!=0) 
    {
      ke++;
      if (ke>ne) 
         {p1=zz1;}
    }
  }
  for (j=1; j<Bars; j++) 
  {
    zz2=iCustom(sy, tf2, "ZigZag", dp, dv, bs, 0, j);
    if (zz2!=0) 
    {
      p2=zz2;
      t=iTime(sy, tf2, j);
      if(p1==p2)
      return(t);
    }
  }
  return(0);
}
 

질문은 다음과 같습니다. MQL4에 있는 MQL 4 에서. 지역 사회 "GV 변수의 속성" 섹션의 "GlobalVariables" 장에서 "GV 변수는 double 유형만 될 수 있습니다"라고 말합니다. 아래 " GlobalVariableDel() function " 섹션에는 다음 내용이 포함된 globalvar.mq4 Expert Advisor의 예가 있습니다.

 //--------------------------------------------------------------------
// globalvar.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int     Experts;                                 // Колич. экспертов
double Depo= 10000.0 ,                             // Заданный депозит
       Persent= 30 ,                               // Заданный процент     
       Money;                                   // Искомые средства
string Quantity= "GV_Quantity" ;                   // Имя GV-переменной
//--------------------------------------------------------------------
int init()                                       // Спец. функция init
  {
   Experts= GlobalVariableGet (Quantity);         // Получим тек. знач.
   Experts=Experts+ 1 ;                           // Колич. экспертов
   GlobalVariableSet (Quantity, Experts);         // Новое значение
   Money=Depo*Persent/ 100 /Experts;               // Средства для эксп.
   Alert ( "Для эксперта в окне " , Symbol (), " выделено " ,Money);
   return ;                                       // Выход из init()
  }
//--------------------------------------------------------------------
int start()                                     // Спец. функция start
  {
   int New_Experts= GlobalVariableGet (Quantity); // Новое колич. эксп.
   if (Experts!=New_Experts)                     // Если изменилось
     {
      Experts=New_Experts;                       // Теперь текущ. такое
      Money=Depo*Persent/ 100 /Experts;           // Новое знач. средств 
       Alert ( "Новое значение для эксперта " , Symbol (), ": " ,Money);
     }
   /*
   ...
   Здесь долен быть указан основной код эксперта,
   в котором используется значение переменной Money
   ...
   */
   return ;                                       // Выход из start()
  }
//--------------------------------------------------------------------
int deinit()                                     // Спец. ф-ия deinit
  {
   if (Experts == 1 )                             // Если эксперт один..
       GlobalVariableDel (Quantity);               //..удаляем GV-перемен
   else                                          // А иначе..
       GlobalVariableSet (Quantity, Experts- 1 );   //..уменьшаем на 1
   Alert ( "Эксперт выгружен из окна " , Symbol ()); // Сообщ. о выгрузке
   return ;                                       // Выход из deinit()
  }
//-------------------------------------------------------------------- 

질문: 앞에서 설명한 것처럼 이러한 변수가 double 유형이어야 하는 경우 int 유형 의 이 예에서 GV 변수 Expert New _ Expert 가 있는 이유는 무엇 입니까?

귀하의 응답에 미리 감사드립니다

 
gince :

맞을까?

조건 tf1 > tf2


문제가 있습니까?

첫 번째 사이클에서는 이전 TF에서 지정된 벤드의 가격을 찾으려고 시도합니다. 발견된 벤드까지 순환합니다. 저는 더 어린 시간대에 두 번째 주기를 시작합니다. 여기서 막대별로 각 굽힘의 가격과 차트에 몇 개나 있는지 찾아보고 첫 번째 주기에서 찾은 가격과 비교합니다. 그런 가격을 찾으면이 TF에서이 굽힘 막대의 시간을 늘립니다.

테스터에서 2000.01.01부터 시작되었습니다.

잡지 내용

2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1688
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2495
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1192
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2315
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1069
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3161
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2351
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.4535
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.338
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.4249
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.416
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2596
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3353
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2658
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.3138
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0344
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1537
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0608
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.1216
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.079
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.2401
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0104
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 1.0917
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 0.8227
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p2= 0.9596
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: t1 1992.09.01 00:00
2012.06.17 10:29:39 2001.07.06 03:30 zz_date v3 EURUSD,M15: p1 1.4104

2000년, 즉 테스트 기간이 시작될 때에도 똑같은 일이 일어났습니다.

실수가 어디 있습니까? 나는 약한 프로그래머입니다. 테스트 프로그램을 작성하고 싶습니다. 얻기가 어렵습니다. 받은 데이터에 따라 차근차근 하기 때문에 누구에게도 물어볼 수 없다.

이 곳에서 도와주세요. 그리고 마지막 페이지에서 NewZZ() 함수를 작성하는 데 도움을 요청했습니다.

누군가 오류를 수정하고 설명해주시면 감사하겠습니다.

 datetime GetExtremumZZ_2TF_Bars( string sy= "" , int tf1= 0 , int tf2= 0 , int ne= 0 , int dp= 12 , int dv= 5 , int bs= 3 ) 
{
   if (sy== "" || sy== "0" ) sy= Symbol ();
   double zz1,  zz2, p1, p2;
   int     i, k1= iBars (sy, tf1), ke= 0 ;
   int     j;
   datetime t;
  
   for (i= 1 ; i<k1; i++) 
  {
    zz1= iCustom (sy, tf1, "ZigZag" , dp, dv, bs, 0 , i);
     if (zz1!= 0 ) 
    {
      ke++;
       if (ke>ne) 
         {p1=zz1; datetime t1= iTime (sy,tf1,i);}
    }
    
  }
   Print ( "                                  p1   " ,p1);
   Print ( "                                  t1   " , TimeToStr (t1,  TIME_DATE|TIME_MINUTES));
   for (j= 1 ; j< Bars ; j++) 
  {
    zz2= iCustom (sy, tf2, "ZigZag" , dp, dv, bs, 0 , j);
     if (zz2!= 0 ) 
    {
      p2=zz2;
       Print ( "p2=   " ,p2);
      t= iTime (sy, tf2, j);
       if (p1==p2)
      {
         Print ( "skaiciavimo pradzia nuo   " , TimeToStr (t, TIME_DATE|TIME_MINUTES));
         return (t);
      }
    }
  }
   return ( 0 );
}
 
gince :


문제가 있습니까?

약한 사람을 도우십시오.

 

안녕하세요. 사이트에서 후행 함수를 찾았습니다.

for(i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 계속;
if(주문유형()==OP_BUY)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop_)
{
if(OrderStopLoss()<Bid-Point*TrailingStop_)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop_,OrderTakeProfit(),0,녹색);
리턴(0);
}
}
}

if(주문 유형()==OP_SELL)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop_))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop_)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop_,OrderTakeProfit(),0,빨간색);
리턴(0);
}
}
}
}

전략을 테스트할 때 첫 번째 주문이 열린 후 이 기능은 정상적으로 작동합니다. 즉, 후행이 계속되고 주문이 닫힙니다. 그러나 두 번째 차수를 연 후 후행 함수를 호출하면 0 나누기 오류가 발생합니다. 두 번째 주문, 세 번째 주문 등의 후행 작업을 할 수 있도록 도와주세요.

 
포럼 전체에 대해 말씀드리지는 않겠지만 개인적으로 들여쓰기가 없는 소스 코드를 보면 작성자에게 아무 설명도 해봐야 소용없다는 강박이 있습니다.