모스 식 부호 - 페이지 7

 
또한, 어떤 통계/지표가 거래에 유용할 수 있는지에 대한 아이디어가 있으면 여기에 작성하십시오.

아무렇게나:

1. 선택한 영역에서 X핍을 뒤집은 횟수
2. 숫자는 같지만 N * X pip 롤백 없음 이동
3. 볼륨, 최소한 티크 볼륨
 

스포츠를 위해 계산을 수행하는 코드 부분을 보는 것은 흥미로울 것입니다....

아이디어에 관해서는 거래량 델타에 의해 형성된 양초를 볼 것입니다.

Karputov와 Siber는이 주제에 대한 좋은 지표를 가지고 ...

 
struct SPoint
{
     double mAsk;
     double mBid;
     double mLow;
     double mHigh;
     double mOpen;
     double mClose;
     double mPoint;
     double mSpread;
     double mVolume;
     datetime mTime;
};

struct SSymbol
{
     string mName;
     double mMean;
     double mUnit;
     double mOrder;
};

struct SSets
{
    SSymbol mSymbol;
     double mAsk[];
     double mBid[];
     double mLow[];
     double mHigh[];
     double mOpen[];
     double mClose[];
     double mPoint[];
     double mSpread[];
     double mVolume[];
     datetime mTime[];
};

struct SName
{
     string mData;
    SSets mSeries[];
};

int getCodes( int length)   // length - parameter that defines required sequence size
{
    SSets iSeries[];
    SName iCombinations[];

     int order = iSets.getPairs(iSeries, InpSymbols);   // split comma-separated string into array of structures iSeries
     int bars = iSets.getSourceSets(iSeries, PERIOD_CURRENT , order, InpDepth, InpShift);   // convert prices from array of structures MqlRates to iSeries

     if (bars < 1 )
    {
         return 0 ;
    }

     int codes[];

     ArrayResize (codes, length);

     for ( int k = 0 ; k < order; k++) // loop over all symbols in iSeries
    {
         ZeroMemory (codes);
         ArrayResize (iCombinations, k + 1 );
        iCombinations[k].mData = iSeries[k].mSymbol.mName;
        
         double point = SymbolInfoDouble (iSeries[k].mSymbol.mName, SYMBOL_POINT );

         do
        {
             string comboChain = NULL ;

             for ( int i = length - 1 ; i >= 0 ; i--)
            {
                comboChain = IntegerToString (codes[i]) + comboChain;   // get combination from 000 to 111 on each iteration
            }

             for ( int n = bars - 1 ; n >= length; n--)   // loop over prices for each symbol
            {
                 double pips = 0 ;
                 string comboSymbol = NULL ;

                 for ( int i = 0 ; i < length; i++)   //  comparison of price sequence with generated sequence
                {
                     string symbolUnit = "X" ; 
                     double range = iSeries[k].mClose[n - i] - iSeries[k].mOpen[n - i]; 

                     if (range > 0 ) 
                    {
                        symbolUnit = "1" ;
                        pips += range;
                    }

                     if (range < 0 ) 
                    {
                        symbolUnit = "0" ;
                        pips -= range;
                    }

                    comboSymbol = symbolUnit + comboSymbol;   // real prices define combination 
                }

                 if (comboChain == comboSymbol) // compare generated sequence and real sequence
                {
                     int index = - 1 ;
                     int count = ArraySize (iCombinations[k].mSeries);

                     for ( int i = 0 ; i < count; i++)
                    {
                         if (iCombinations[k].mSeries[i].mSymbol.mName == comboChain)
                        {
                            index = i;
                             break ;
                        }
                    }

                     if (index < 0 )
                    {
                         ArrayResize (iCombinations[k].mSeries, count + 1 );
                         ZeroMemory (iCombinations[k].mSeries[count]);
                        index = count;
                    }

                     // count matches, pips, etc

                    iCombinations[k].mSeries[index].mSymbol.mMean++;
                    iCombinations[k].mSeries[index].mSymbol.mOrder += iCombinations[k].mSeries[index].mSymbol.mMean + n;
                    iCombinations[k].mSeries[index].mSymbol.mUnit += MathAbs (pips / point);
                    iCombinations[k].mSeries[index].mSymbol.mName = comboChain;
                }
            }

        } while (iHelpers.getChain(codes, length)); // generate possible combinations from 000 to 111
    }

     string res = "\n" ;

     for ( int k = 0 ; k < order; k++)
    {
         int count = ArraySize (iCombinations[k].mSeries);

        res += iCombinations[k].mData + "\n" ;

         for ( int n = 0 ; n < count; n++)
        {
            res += 
                iCombinations[k].mSeries[n].mSymbol.mName + " : " + 
                 DoubleToString (iCombinations[k].mSeries[n].mSymbol.mMean, 1 ) + " : " + 
                 DoubleToString (iCombinations[k].mSeries[n].mSymbol.mOrder, 1 ) + " : " + 
                 DoubleToString (iCombinations[k].mSeries[n].mSymbol.mUnit, 1 ) + "\n" ;
        }
    }

    iHelpers.debug(res); // print to a file

    return 1 ;
}
시리즈의 크기는 매개변수에서 설정할 수 있을 뿐만 아니라 모든 쌍의 집합을 쉼표로 구분할 수 있기 때문에 코드가 번거로운 것으로 판명되었습니다.
 

멋지고 흥미로운 아이디어입니다.

적어도 촛대 분석을 통해 시장이 분석에 적합하지 않다는 것을 증명할 것입니다.

시장은 실제 거래자의 행동에 대한 반응입니다.

현재 트레이더가 100명이라면 0과 1의 조합은 몇 개나 될까요?

 
Renat Akhtyamov : 현재 트레이더가 100명이라면 0과 1의 조합은 몇 개나 될까요?
거래자 수는 시간 가격 차트와 어떤 관련이 있습니까?
 
Andy Sanders :
거래자 수는 시간 가격 차트와 어떤 관련이 있습니까?

얼마에 팔았는지, 얼마에 샀는지에 따라 양초가 형성됩니다.

즉, 촛불의 순서와 모양은 무작위입니다. 촛불 시퀀스의 엄청난 수의 조합이 있습니다.

패턴을 검색하고 분석하려는 시도는 유토피아입니다.

예를 들어 .
 

Renat Akhtyamov :

.. 캔들 시퀀스의 조합이 엄청나게 많습니다.
패턴을 검색하고 분석하려는 시도는 유토피아..

촛대 분석(결국 유토피아임)과 패턴 계산을 혼동하지 마십시오.

양초 자체는 이미 유토피아입니다. 양초 기간 내 변화의 성격을 대략적으로 표현한 것입니다.

그리고 패턴은 양초가 아니라 일련의 인용문을 기반으로 합니다. 패턴은 막대 여는 시간 과 관련이 없으며 임의의 길이일 수 있으며 평균 데이터 등을 기반으로 할 수 있습니다. 무작위가 아닌 패턴은 "단순한" 거래자에게 거의 유일한 기회이며, 그 본질을 이해하는 것은 "수익자" 클럽의 최소 통과 점수입니다.

 
User_mt5 :

촛대 분석(결국 유토피아임)과 패턴 계산을 혼동하지 마십시오.

양초 자체는 이미 유토피아입니다. 양초 기간 내 변화의 성격을 대략적으로 표현한 것입니다.

그리고 패턴은 양초가 아니라 일련의 인용문을 기반으로 합니다. 패턴은 막대 여는 시간 과 관련이 없으며 임의의 길이일 수 있으며 평균 데이터 등을 기반으로 할 수 있습니다. 무작위가 아닌 패턴 은 "단순한" 거래자에게 거의 유일한 기회이며, 그 본질을 이해하는 것은 "수익자" 클럽의 최소 통과 점수입니다 .

우와. 괜찮아.

행운을 빕니다!

추신:

모든 것이 너무 멋지기 때문에 패턴을 찾으려면 양초의 비례 비율, 크기의 최대 및 최소를 추가로 결정해야합니다.

즉, 코드 0,1,1은 다음과 같이 바뀝니다. 10,30,33

수익성 있는 매개변수를 설정하려면 각 패턴을 기록을 통해 실행해야 합니다.

그런 다음 패턴 데이터베이스를 만듭니다.

이것은 미래에 긍정적 인 결과를 가져올 수있는 거대한 작업입니다.

 
Renat Akhtyamov :

우와. 괜찮아.

행운을 빕니다!

추신:

모든 것이 너무 멋지기 때문에 패턴을 찾으려면 양초의 비례 비율, 최대 및 최소, 크기를 추가로 결정해야합니다.

즉, 코드 0,1,1은 다음과 같이 바뀝니다. 10,30,33

아니요. 두 번 세 번이면 고양이도 태어나지 않는다.

그러나 원칙적으로 .. 원칙적으로 모스 부호도 가능하지만 주의 사항이 있습니다. 최종 결과에 관심이 없는 경우입니다.

 
Renat Akhtyamov :

수익성 있는 매개변수를 설정하려면 각 패턴을 기록을 통해 실행해야 합니다.

그런 다음 패턴 데이터베이스를 만듭니다.

이것은 미래에 아마도 긍정적인 결과를 가져올 거대한 작업입니다.

우리는 이에 동의할 수 있습니다. 이 용어에서 - "가능하게"와 "나중에".

그 전에도 이 "각 패턴"을 정의해야 합니다. 그리고 그는 수익성이 없습니다. 이 방법은 일반적으로 이익 및 거래와 관련이 없습니다. 우리는 유사한 조각을 반복하는 것에 대해 이야기하고 있습니다. 저것들. 오른쪽 부분에서는 규칙적인 방향으로, 왼쪽 부분은 비슷합니다. 길이, 모양, 진폭, 주기, 기타 매개변수 - 이 모든 것이 연구 주제입니다.

네. 그리고 양초를 기준으로 똑같이하면 동일하지만 더 약하고 서투릅니다. 그리고 패턴이 더 적습니다. 양초의 정의입니다.

사유: