포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 908

 
AlexeyVik :

죄송합니다. 무례하지 마십시오. 그렇다면 왜 프로그래밍을 귀찮게 할까요?

그러나 무엇을 위한 것인지 설명하는 대신 코드 조각을 작성하는 사람들이 많이 있습니다. 기다려야 합니다.

그리고 나는 설명하는 것을 선호하지만 조각을 쓰는 것은 아닙니다.

알았다! 이 같은. 고마워.

int bar1=iBarShift(Symbol(), PERIOD_M1 , iTime(Symbol(),PERIOD_D1,0));//인쇄(bar1); //첫 번째 막대
정수 MaxVol = 0;
정수 i=0, n=0;
(i=bar1, i>0, i--)
{
//if(i<바);
//if (TimeMinute(Time[i])!=Minute()) break;
if (iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i);
n=나;
}
//인쇄(MaxVol, "MaxVol", n, "n");
}
날짜 시간 MaxVolT = iTime(NULL, PERIOD_M1, n);

 
sashasonik :

알았다! 이 같은. 고마워.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//인쇄(bar1); //첫 번째 막대
정수 MaxVol = 0;
정수 i=0, n=0 ;
(i=bar1, i>0, i--)
{
//if(i<바);
//if (TimeMinute(Time[i])!=Minute()) break;
if (iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i);
n=나;
}
//인쇄(MaxVol, "MaxVol", n, "n");
}
날짜 시간 MaxVolT = iTime(NULL, PERIOD_M1, n );

자, 여기 이상한 것이 있습니다.

이제 코드를 줄이고 단순화하는 것에 대해 생각할 수 있습니다.

여기에서 첫 번째 막대를 찾았습니다. 이것은 너무 많은 막대가 배열에 복사되어야 함을 의미합니다. 그래서 코드가 세 줄로 줄었습니다.

1. 첫 번째 막대를 찾습니다.

2. 첫 번째 예에 따라 볼륨을 어레이에 복사합니다.

 int    CopyTickVolume (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   int               start_pos,         // откуда начнем (с нулевого или первого)
   int               count,             // сколько копируем(первым пунктом определили)
   long              volume_array[]     // массив для копирования тиковых объемов (предварительно объявляем массив глобального уровня или локального)
   );

3. ArrayMaximum (이 어레이에서)


그리고 왜 변수 n 을 사용하는지 명확하지 않습니다.

 

견적 아카이브를 다운로드하십시오. 다음은 한 항목의 예입니다.
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
필드 헤더는 다음과 같습니다. lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
처음 2개의 필드는 무엇을 의미합니까?

 
PostoronnimV :

견적 아카이브를 다운로드하십시오. 다음은 한 항목의 예입니다.
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
필드 헤더는 다음과 같습니다. lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
처음 2개의 필드는 무엇을 의미합니까?

처음 세 개의 열은 안전하게 버릴 수 있으며 MT4에 대한 따옴표를 만드는 데 실용적이지 않습니다.
 

안녕하세요!

저는 EA에서 많은 블록을 사용하며 각 블록에는 동일한 표시기가 있습니다. 이 표시기를 OnTick()에서 한 번 선언한 다음 각 블록에서 비트를 다시 선언할 필요가 없도록 어떻게든 만들 수 있습니까?

 
abeiks :

안녕하세요!

저는 EA에서 많은 블록을 사용하며 각 블록에는 동일한 표시기가 있습니다. 이 표시기를 OnTick()에서 한 번 선언한 다음 각 블록에서 비트를 다시 선언할 필요가 없도록 어떻게든 만들 수 있습니까?

할 수 있다
 
어떻게? 예를 들어 보여주세요.
 void OnTick ()
{
double MA_High = iMA ( NULL , 0 , 9 , 1 , MODE_EMA , PRICE_LOW , cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks :
어떻게? 예를 들어 보여주세요.
다양한 수준의 코드에서 선언된 변수의 가시성에 대한 매뉴얼을 연기하십시오.
 double MA_High=0; 
void OnTick ()
{
double MA_High = iMA ( NULL , 0 , 9 , 1 , MODE_EMA , PRICE_LOW , cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive :
다양한 수준의 코드에서 선언된 변수의 가시성에 대해 매뉴얼을 연기하십시오.
고맙습니다!
 

여보세요,

경고가 있는 이유를 알려주십시오. '문자열'에서 '숫자'로의 암시적 변환 및 변수 위치에서 '숫자'에서 '문자열'로의 암시적 변환(int 명령 이후 및 메시지 이후)입니다. 같은 경고인가요? 나는 프로그래밍을 잘 못한다.

코드가 작동하지만 경고만 표시된다면 그게 나쁜 건가요? 그것은 무엇에 영향을 미칩니 까?

그리고 한 가지 더 질문입니다. 메시지에 현지 시간을 표시하는 방법은 무엇입니까? 나는 message= TimeLocal()+.....를 쓰고 아무 일도 일어나지 않는다.


코드 스니펫:

 if (last_sell_1_price== 0 || TimeCurrent ()-last_sell_1_price>alarm_limit_notification* 60 )
                 {
                   Print ( "" );
                   if (Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/ Point , 0 );
                     int sell2=DoubleToStr( (Bid - Price_Line2)/ Point , 0 );
                     int rsi=DoubleToStr(ExtRSIBuffer[ 0 ] - Price_RSI_Line, 2 );
                                  
                     message=
                     TimeCurrent ()+ "  (Level)" + "   \n" +
                     "\n" +
                     Symbol ()+ "  TF:" +TF_in_String()+ "   \n" +
                     "Price: " +DoubleToStr(Bid, 4 )+ "   \n" +
                     "sell_1: " +(sell1> 0 ? "+" : "" )+sell1+ "   \n" +
                     "sell_2: " +(sell2> 0 ? "+" : "" )+sell2+ "   \n" +
                     "RSI:  " +(rsi> 0 ? "+" : "" )+rsi;
  
                     SendNotification (message);
                     Print (message);
                     if (mail_message==on)
                     SendMail ( Symbol (),message);

                    }
                  last_sell_1_price= TimeCurrent ();
                 }
              }