Meta Trader에서 스프레드 거래 - 페이지 144

 
Scorp1978 >> :

제거 감사합니다 좋은 아이디어(그러면 틱을 포기해야 함), 강력한 무익한 움직임의 필터는 "총 이익이 무언가보다 적으면 모든 포지션을 닫으십시오"라는 의미입니다 ......

아니요. 나는 원래 입력을 의미했습니다 - "/if
//첫 번째 캔들의 크기가 지정된 값보다 크면 거래가 금지됩니다..."

 
모두에게 좋은 하루! 이 날을 휴일로 생각하는 모든 분들을 축하합니다!
//----------------------------------------
질문이 생겼습니다. 다음은 막대의 마지막 NBar에 대한 도구 간의 평균 스프레드를 반환(계산)하는 함수입니다.
 double CalculateAvarageSpread( string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{
   int k;
   double N = 0 ;
   double Sum = 0 ;
   for (k = 0 ; k < iBars(Symbol_1,Timeframe); k++)
   {
      if (N == NBars)
         break ;

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k), true );
      if (symb2Shift != - 1 )
      {
         Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return (avarageSpread);
}
제발. 물어보는 방법을 알려주세요
//------------
정수 k;
이중 N = 0; 이중 합계 = 0;
for(k = 0; k < iBars( Symbol_1 ,Timeframe); k++)
{
if(N == Nbars)
//------------------------
함수가 막대의 모든 NBar가 아닌 평균 스프레드 값을 반환하도록
그리고 마지막 것을 제외한 NBars 막대의 경우.
즉, 나는 가장 마지막이 필요합니다. 바는 계산에 참여하지 않았습니다! 또는 가장 최근의 주어진 숫자까지. 막대는 계산에 포함되지 않았습니다.
이것을 "구성"하는 방법이 있습니까?
(그 대가로 5월 3일 월요일에 좋은 시장 진입을 할 수 있습니다. 이후 수익성 있는 마감의 높은 확률로!)
 
double CalculateAvarageSpread( string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars, int NBarsSkip)
{
   int k;
   double N = 0 ;
   double Sum = 0 ;
   if (NBars > iBars(Symbol_1,Timeframe)) NBars=iBars(Symbol_1,Timeframe); // если н больше чем баров на графике то обрезаем
   if (NBarsSkip >= NBars) NBarsSkip=0; // если пропускаем баров больше/равно чем NBars, то ничего не пропускаем
   for (k = NBarsSkip; k < NBars; k++)
   {

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k), true );
      if (symb2Shift != - 1 )
      {
         Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return (avarageSpread);
}
NBarsSkip은 계산에 포함되지 않을 건너뛴 막대의 수를 설정합니다. 계산에서 NBarsSkip에서 NBars로 참여합니다.
 
NCI 감사합니다!
이제 개인적으로 유망한 항목을 보내 드리겠습니다.
질문 하나 더.
이제 막 아이디어가 떠올랐습니다.
그리고 그것이 정말로 쉬운 일이라면. 다음과 같이 설정합니다.
대신 for(k = 0; k < iBars( Symbol_1 ,Timeframe); k++)
물어보기
for(k = M ; k < iBars(Symbol_1,Timeframe); k++),
여기서 M 계산에서 제외된 막대의 수입니다.
작동할까요?


 
k \u003d M이 아니라 k \u003d M + 1 ... 막대 M 그러면 고려하지 않습니다.
 
덕분에! 그래서 입력을 보냈습니다.
 
솔직히 말해서, 나는 처음에 NBars가 동시에 두 개의 악기에 존재하는 막대로만 계산되어야 한다는 것을 알아차리지 못했습니다. 그러면 제가 게시한 코드가 그러한 논리에 해당하지 않습니다. M 사용한 구성 도 올바르지 않습니다. 이 경우 다음을 수행할 수 있습니다.
 double CalculateAvarageSpread( string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars, int NBarsSkip)
{
   int k;
   double N = 0 ;
   int NReal = 0 ;
   double Sum = 0 ;
   for (k = 0 ; k < iBars(Symbol_1,Timeframe); k++)
   {
      if (N == NBars)
         break ;

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k), true );
      if (symb2Shift != - 1 )
      {
         N++;
         if (N>NBarsSkip)
         {
            Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
            NReal++;  // счетчик Н которые не пропущены и посчитаны
         }
      }
   }
   if (NReal== 0 ) return ( 0 ); // так как у нас не получилось рассчитать ни одного бара
   else
   {
      double avarageSpread = Sum / NReal;
      return (avarageSpread);
   }
}


 
덕분에. 어떤 이유로 처음에는 코드가 컴파일되지 않았습니다. - 오류가 반환되었습니다(대괄호)
참을 때까지 함수 이름 "...., int NBarsSkip"에서
고문의 외부 매개변수에
extern int NBarsSkip = 2
왜 오류가 발생했는지 이해가 되지 않습니다.
하지만 옮기고 보니 모든 것이 정상이 되었습니다.
 

나는 145쪽의 모든 글을 처음부터 끝까지 읽었다. 모두에 대한 존중: rid, leonid553, fduch, 신고전주의, getch, forex-k, goldtrader, timbo, fortrader . Dofigischi 정보, 여전히 소화 중입니다. 나 자신에 대한 주요 결론은 다음과 같습니다. 여기를 파야합니다. 그만한 가치가 있습니다. 추신 : 일반적으로 합리적인 가지, 홍수가 거의 없었습니다. 다시 한 번 감사합니다 2 제거

 

덕분에!

"생각을 위한 정보".

월요일부터 ZM-ZL(밀가루 버터, 5:6) 스프레드

!