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

 
hoz :

현재 작업은 다음과 같습니다. fastMa가 slowMa를 넘었 습니다... 그래서 구매처를 찾고 있습니다. 다음으로, 가격 즉. Ask (구매를 고려하고 있기 때문에) fastMa에 도달합니다 ( 글쎄, 정확한 값은 여기에 없을 것입니다. +- 약간의 편차가 필요하며 이것은 변수 i_thresholdFromMa 입니다 ) 그리고 가격이 fastMa에 접근하자마자 + - i_thresholdFromMa EA는 (fastMa + buyHear * pt) 가격에 BUYSTOP 을 해야 합니다.

한 터미널에서 나에게 일어난 일은 작동하지 않았고 다른 터미널에서는 작동했으며 세 번째 터미널에서는 항상 작동하지 않습니다. 일반적으로 뭔가 잘못되었습니다.

구매 기능의 마지막 버전은 다음과 같습니다.

다음은 입력 매개변수입니다.

화면에 오류가 표시됩니다(OrderSend()에서 가격은 빨간색 점 위에 있고 화면에서 볼 수 있는 것처럼 주문은 아래에 있습니다....).

나는 며칠 동안 결석했습니다 ... 제 생각에는 차트에 던져진 눈금이 계산에 사용 된 눈금과 동일한 매개 변수를 가지고 있습니까? 개가 그곳을 뒤진 건 아닐까?

(아직까지 코드를 파헤치고 분해할 시간이 없었습니다.)

나는 다음과 같은 기능을 만들 것입니다 :

 //-----------------------------------------------------------------------------+
double ma( int MAperiod, int MAmethod, int MAshift) { return ( iMA ( Symbol (), Period (), MAperiod, 0 , MAmethod, PRICE_OPEN ,MAshift));}
//-----------------------------------------------------------------------------+

매개변수를 얻기 위해 호출했습니다.

 

안녕하세요, 알려주세요! 매수 신호가 촉발되었습니다. 저는 다음 두 개의 양초를 확인한 후에만 주문을 엽니다.

 
Top2n :

안녕하세요, 알려주세요! 매수 신호가 촉발되었습니다. 저는 다음 두 개의 양초를 확인한 후에만 주문을 엽니다.


따라서 동시에 두 개의 마지막 캔들이 있고 두 바 전에 주문을 여는 조건이 있는지 확인하십시오.
 
Roger :

따라서 동시에 두 개의 마지막 캔들이 있고 두 바 전에 주문을 여는 조건이 있는지 확인하십시오.

그것을하는 방법?

 if (bay_min == true ) сработал сигнал на покупку ждем подтверждение
  
 if (Open[ 1 ]<Close[ 1 ] && Open[ 2 ]<Close[ 2 ] )
   
 if ( Bars ( 2 ).............


그렇다면 신호가 작동하면 신호 2 막대 위 또는 아래에서만 확인을 기다리고 있습니다.

그는 어떻게 든 신호의 막대, 신호 뒤의 막대를 기억하고 두 개의 오름차순 또는 내림차순을 비교하고 ....

 
Top2n :

그것을하는 방법?


그렇다면 신호가 작동하면 신호 2 막대 위 또는 아래에서만 확인을 기다리고 있습니다.

그는 어떻게 든 신호의 막대, 신호 뒤의 막대를 기억하고 두 개의 오름차순 또는 내림차순을 비교하고 ....

당신이 어떻게 bay_min을 얻었는지 보여주세요.
 
Top2n :

그것을하는 방법?


그렇다면 신호가 작동하면 신호 2 막대 위 또는 아래에서만 확인을 기다리고 있습니다.

그는 어떻게 든 신호의 막대, 신호 뒤의 막대를 기억하고 두 개의 오름차순 또는 내림차순을 비교하고 ....



 if (bay_min == true )   datetime T=Time[ 0 ] //сработал сигнал на покупку запоминаем время  бара

if (iBarShift( NULL , 0 ,T)== 2 ) //по времени, сигнал был на 2 баре
   {   
   if (Open[ 1 ]<Close[ 1 ] && Open[ 2 ]<Close[ 2 ] )   //и эти бары бичьи 
     { 
     // что-то делаем
     }
   }
   
// я думаю, как-то так.
 
전문가를 위한 질문

나는 간단한 고문을 쓰고 있는데, 나는 즉시 많은 문제에 부딪쳤다.

상태

현재 막대의 종가를 기억하고 이전 4번째 막대가 이동 평균에 있는 경우 시작 가격 변수에 입력합니다.


조건이 충족되면 막대의 종가, 즉 시작가를 나타내는 아이콘을 그립니다.

내가 한 것은 아이콘이 그려지는데 한 번뿐이지만 매번 필요합니다.

바의 종가가 0.00001의 불일치 시작가와 일치하지 않는 이유와 해결 방법은 무엇입니까?

반올림하고 5자로 자르려고 시도했지만 도움이 되지 않았습니다(

저널에서는 인쇄물을 사용하여 Startprice 값을 호출하고 숫자는 최대 4자 이하로만 표시됩니다.

터미널 데이터 창에서와 동일한 정확도를 달성하는 방법은 무엇입니까?

소수점 이하 부호가 있는 이 문제는 이동 평균 자체에도 적용됩니다. 인쇄를 통해 해당 값을 호출하면 로그에서 4자 이상을 얻지 못합니다.



#property copyright "Zuly"


 extern int MA_Period = 50 ; //периуд Ма
extern int MA_Method = MODE_SMA ;     //Метод усреднения скользящего среднего. Может быть любым из значений методов скользящего среднего (Moving Average):
                               //*MODE_SMA 
                              
 extern int Maximum_History = 0 ;         //Ограничение истории для расчетов, если 0 то расчет всей истории
 
   
    
   //начало кода советника
int start()


{      
     double MA4;                                 // Значение МА на 4 баре 
    
     double Startprice;
    
   { 
   MA4= iMA ( NULL , 0 ,MA_Period, 0 ,MA_Method, PRICE_CLOSE , 4 ); 
 
   
                       if   (Low[ 4 ]< MA4 && MA4 < High[ 4 ]) //условия если 4-я свеча лежит в скользящей
  
  {    
  
   Startprice=Close[ 0 ];
  
     //   Startprice=NormalizeDouble(Close[0],5); // пробуем округлить до 5-го знака, не помогло 
 
     //  Startprice=MathFloor(Close[0]*100000)/100000; // пробуем обрезать до 5-го знака не помогло
      
  
  
     
       //Print (Startprice); // распечатаем Startprice
     
      
   datetime TmR1=Time[ 0 ]; // запоминаем время текущего бара? 

   

   
       ObjectCreate ( "Rep1" , OBJ_ARROW , 0 , TmR1, Startprice); // создаем обьект 
      ObjectSet( "Rep1" , OBJPROP_COLOR , White); // устанавливаем обьект на график
       ObjectSet( "Rep1" , OBJPROP_ARROWCODE , 71 ); 
      
     return ( 0 ); 
 
 
 
}} }    
   
 테스트 매개변수 및 시간
 
DoubleToStr(number, Digits )을 사용하여 출력합니다. 숫자 대신 필요한 정확도를 입력할 수 있습니다. 아이콘 이름에 아이콘을 설치할 막대의 시간을 추가합니다.
 
artmedia70 :
DoubleToStr(숫자, 숫자)을 사용하여 출력합니다. 숫자 대신 필요한 정확도를 입력할 수 있습니다. 아이콘 이름에 아이콘을 설치할 막대의 시간을 추가합니다.


그렇다면

Startprice=DoubleToStr(Close[ 0 ], 5 );

작동하지 않습니다. '='에서 맹세합니다 - 호환되지 않는 유형 C:\fortest\experts\sve.mq4 (34, 14)

이것은 어떻게 올바르게 쓸 수 있습니까?

답변 감사합니다 지금 일주일째 작업중입니다

 
artmedia70 :
DoubleToStr(숫자, 숫자)을 사용하여 출력합니다. 숫자 대신 필요한 정확도를 입력할 수 있습니다. 아이콘 이름에 아이콘을 설치할 막대의 시간을 추가합니다.

그리고 출력의 경우 인쇄물이 항상 4-re 만 표시하고 부호보다 작다는 것을 깨달았습니다.

그런 다음 인쇄 (DoubleToStr(Startprice,5)); // 시작 가격 인쇄

그것은 5를 제공합니다.

그러나 여기에 막대 시간을 추가하는 방법이 있습니다.

이 줄은 막대 시간을 추가하지 않습니까?

  datetime TmR1=Time[ 0 ];