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

 
Andrew1001 :

잘! 그런 다음 코드를 보고 수정할 수 있도록 배치하는 방법은 무엇입니까?
어드바이저의 작성자에게 소스 코드를 요청하고 그의 허가를 받아 게시하십시오.
 
nlp2311 :

제안해 주셔서 감사합니다.

촛불처럼 아름답지 않습니다. 그러나 양초로 그림을 그릴 수는 있지만 이것은 번거롭고 실용적이지 않습니다.

저에게는 거래 주간이 시작되며 당분간 죄송합니다. 더 이상 포럼에 글을 쓰고 답변하지 않겠습니다. 스스로 훈련합시다.

생각한 것을 프로그래밍 방식으로 쉽게 작성하려면 많은 경험이 필요하지만. 보통 1~3년.

 
Dimka-novitsek :

안녕하세요! 올바르게 쓰는 방법을 알려주세요

문제는 ObjectSetText가 아무 작업도 하지 않는다는 것입니다. 서명 상단 대신 텍스트가 비문을 받습니다.


GetLastError() 에는 무엇이 있습니까?
 
오프씨 욱제! 빨리 볼게요!!
 
4천2백. 예, 마침내 작동했습니다! 이와 같이
 ObjectCreate ( "вершина" ,   OBJ_TEXT , WindowOnDropped ( ) , Time[бар_вершина],  вершина+( 10 * Point )) ; 
     ObjectSetText ( "вершина" , "вершина" , 5 , "вершина" , Crimson ) ; Alert ( "GetLastError()" , GetLastError ());
       // ObjectSet(  "вершина",  OBJPROP_COLOR, Crimson) ;
 
알다시피, 나는 지표를 염두에 둘 수 없습니다. 지금 그는 그림을 그리고 있지 않습니다. 그는 그림을 그릴 때도 있고, 안 그릴 때도 있고, 지금은 안 그립니다. 또한 규칙성이 없습니다. 그래픽 개체를 추가했습니다. 그리고 그는 그림을 그리지 않습니다!
 //+------------------------------------------------------------------+
//|                                            ИндюкДимонакомпил.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"
#import "user32.dll"
   int    PostMessageA( int   hWnd, int   Msg, int   wParam, string lParam);
#import
#define WM_COMMAND                     0x0111
int delimiter = 0 ;

#property indicator_chart_window

#property indicator_buffers 3
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 DarkBlue
double ВерхняячертаBuffer1[];
double НижняячертаBuffer2[];
double СинняячертаBuffer3[];
 double вершина; 
 double основание_первого_снижения;
 double начало;
 double вершина_волны_3;
 extern int T= 4 ,K= 200 ;
 int timeframe, start ;
 int бар_вершина ;
 int бар_основание_первого_снижения;
 int бар_начало;
int pereklutsatel;
double naklon,linija2; int P; extern int RO=- 1 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators

SetIndexStyle ( 0 , DRAW_SECTION , STYLE_SOLID , 2 , CLR_NONE ); //Alert ("SetIndexStyle ",GetLastError( ) );
   SetIndexBuffer ( 0 ,ВерхняячертаBuffer1); //Alert ("SetIndexBuffer ",GetLastError( ) );
   SetIndexEmptyValue ( 0 , 0.0 );
   
   SetIndexStyle ( 1 , DRAW_SECTION , STYLE_SOLID , 2 , CLR_NONE ); //Alert ("SetIndexStyle ",GetLastError( ) );
   SetIndexBuffer ( 1 ,НижняячертаBuffer2); //Alert ("SetIndexBuffer ",GetLastError( ) ); 
   SetIndexEmptyValue ( 1 , 0.0 );
   
   SetIndexStyle ( 2 , DRAW_SECTION , STYLE_SOLID ,T, CLR_NONE ); //Alert ("SetIndexStyle ",GetLastError( ) );
   SetIndexBuffer ( 2 ,СинняячертаBuffer3); //Alert ("SetIndexBuffer ",GetLastError( ) ); 
   SetIndexEmptyValue ( 2 , 0.0 );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectDelete ( "вершина" );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int     counted_bars= IndicatorCounted ();
   int limit= Bars -counted_bars- 1 ;

   for ( int i=limit;i>= 0 ;i--) {
//----
 for ( int J= 0 ;J<=RO;J++){
//----

   // for(int i=Bars; i>=0;i--)
   i= Bars ;
      бар_вершина= iHighest ( NULL ,  timeframe, MODE_HIGH, K, start ) ;
       вершина =High[ бар_вершина ];
       бар_основание_первого_снижения= iLowest ( NULL ,  timeframe, MODE_LOW, NormalizeDouble ( бар_вершина/ 2 , 0 ), start ) ;
       основание_первого_снижения=Low[ бар_основание_первого_снижения ];
       бар_начало= iLowest ( NULL ,  timeframe, MODE_LOW, NormalizeDouble (бар_вершина* 1.5 , 0 ), бар_вершина ) ;
       начало=Low[ бар_начало ];
       
   ObjectCreate ( "вершина" ,   OBJ_TEXT , WindowOnDropped ( ) , Time[бар_вершина],  вершина+( 10 * Point )) ; 
     ObjectSetText ( "вершина" , "вершина" , 5 , "вершина" , Crimson ) ; Alert ( "GetLastError()" , GetLastError ());
       // ObjectSet(  "вершина",  OBJPROP_COLOR, Crimson) ;
      
   ObjectCreate ( "основание_первого_снижения" ,   OBJ_TEXT , WindowOnDropped ( ) , Time[бар_основание_первого_снижения],  основание_первого_снижения-( 10 * Point )) ; 
     ObjectSetText ( "основание_первого_снижения" , "основание_первого_снижения" , 5 , "основание_первого_снижения" , Crimson ) ;   
   
     ObjectCreate ( "начало" ,   OBJ_TEXT , WindowOnDropped ( ) , Time[бар_начало],  начало-( 10 * Point )) ; 
     ObjectSetText ( "начало" , "начало" , 5 , "начало" , Crimson ) ;   
           
   if (начало>основание_первого_снижения){naklon=(начало-основание_первого_снижения)/(бар_начало-бар_основание_первого_снижения);
   Alert ( "naklon  " , naklon);
    НижняячертаBuffer2[бар_начало]=начало;linija2=начало; for (i=бар_начало- 1 ;i>= 0 ;i--){linija2=linija2-naklon;
   
    НижняячертаBuffer2[i]=linija2;   Alert ( "linija2  " , linija2 );   Alert ( "НижняячертаBuffer2[i]  " , НижняячертаBuffer2[i] , "  i " , i);
     
   }
    НижняячертаBuffer2[бар_основание_первого_снижения]=основание_первого_снижения;}
    
    
         for (i= 0 ;i< 100 ;i++){  СинняячертаBuffer3[i]= Open[i];}
           for (i= 330 ;i< 500 ;i++){  СинняячертаBuffer3[i]= Open[i];}

     ВерхняячертаBuffer1[бар_начало]=начало;
     
 double точка 4 ; int бар_точка 4 ;   бар_точка 4 = iHighest ( NULL ,  timeframe, MODE_HIGH, бар_основание_первого_снижения, 3 ) ; 
  точка 4 =High[ бар_точка 4 ];  
   
   if (вершина>точка 4 ){naklon=(начало-точка 4 )/(бар_начало-бар_точка 4 );
   ObjectCreate ( "точка4" ,   OBJ_TEXT , WindowOnDropped ( ) , Time[бар_точка 4 ],  точка 4 +( 10 * Point )) ; 
     ObjectSetText ( "точка4" , "точка4" , 5 , "точка4" , Crimson ) ;  
   double linija1=начало; for (i=бар_начало- 1 ;i>= 0 ;i--){linija1=linija1-naklon;ВерхняячертаBuffer1[i]=linija1; }}
   
double vulf=НижняячертаBuffer2[ 0 ];
   if ( vulf==Ask&&vulf==Bid)vulf= 1 ;
   else { for (vulf=vulf+ Point * 10 ; vulf==НижняячертаBuffer2[ 0 ];vulf=vulf- Point ){
           if ( vulf==Ask&&vulf==Bid){vulf= 1 ;}} 
       for (vulf=vulf- Point * 10 ; vulf==НижняячертаBuffer2[ 0 ];vulf=vulf+ Point ){
           if ( vulf==Ask&&vulf==Bid)vulf= 1 ;} 
              
           
           
           }
           
           
   if (vulf== 1 ){ Comment ( "  Есть вульв!!! "   , "  timeframe " , timeframe); return ( 0 );  }
     if (vulf!= 1 &&pereklutsatel== 1 ) {    
   
     if (delimiter< 3 ){delimiter++; Comment (delimiter); return ( 0 );}
   delimiter= 0 ;
    fChangePeriod();P++;
                                 
                   }  } }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+

void fChangePeriod(){ int ii,hwd = WindowHandle ( Symbol (), Period ());
   switch ( Period ()){
       case PERIOD_W1     : ii = 33134 ; break ; //PERIOD_D1;
       case PERIOD_D1     : ii = 33136 ; break ; //PERIOD_H4;
       case PERIOD_H4     : ii = 33135 ; break ; //PERIOD_H1;
       case PERIOD_H1     : ii = 33140 ; break ; //PERIOD_M30;
       case PERIOD_M30    : ii = 33139 ; break ; //PERIOD_M15;
       case PERIOD_M15    : ii = 33138 ; break ; //PERIOD_M5;
       case PERIOD_M5     : ii = 33137 ; break ; //PERIOD_M1;
       case PERIOD_M1     : ii = 33141 ; break ; //PERIOD_W1;
   }     
   PostMessageA(hwd, WM_COMMAND, ii, 0 );
   return ;
}
 
많은 코드가 있습니다. 대단히 죄송합니다. 하지만 아마도 일종의 기본적인 문제가 있을 것입니다!
 

여기요 !!!!

시작 날짜를 변경하는 방법을 알려주지 마십시오. 텍스트 형식에 표시된 날짜부터 시작하지 않고 현재 날짜보다 주어진 일 수만큼 작은 날짜부터 시작합니까?

저것들. 시프트를 다시 설정(예: 3일)하면 해당 날짜의 00=00h부터 계산됩니다.


extern datetime TimeStart = D'2012.07.01 00:00'; // 분석 시작 시간

 
매일매일 차트마다 수동으로 옮기는것도 지겹고...)
 
Dimka-novitsek :
많은 코드가 있습니다. 대단히 죄송합니다. 하지만 아마도 일종의 기본적인 문제가 있을 것입니다!

오류를 찾는 대략적인 알고리즘:

1. 특히 왼쪽 막대의 표시기를 다시 계산할 때 모든 개체가 고유한 이름으로 생성되었는지 확인하십시오.

2. 차트에서 생성된 개체의 목록을 보고 속성을 살펴봅니다. 시간과 가격이 어디에나 정확하게 기록되어 있는지 여부: 종종 잘못된 것이 좌표에 입력됩니다.

삼.??? 지금은 충분합니다. 처음 두 가지 사항이 도움이 되지 않으면 더 생각할 것입니다.))

사유: