콘텐츠로 이동

심볼 심리

SymbolSentiment 인터페이스와 SymbolSentimentUpdatedEventArgs 클래스를 통해 API로 실시간 시장 심리 데이터에 접근할 수 있습니다. 주어진 심볼에 대해:

  • Symbol.Sentiment.BuyPercentage는 매수 활동의 총합 비율을 제공하며, Symbol.Sentiment.SellPercentage는 매도 활동의 총합 비율을 반환합니다.
  • SymbolSentimentUpdatedEventArgs는 심리 업데이트 이벤트를 위한 데이터 캐리어입니다. 이 클래스를 통해 해당 심볼에 대한 업데이트된 심리 데이터에 접근할 수 있습니다.

경고

심볼 심리 API 객체는 .NET 6 알고리즘에서만 지원되며 클라우드 또는 cTrader CLI에서는 작동하지 않습니다.

팁

자동화된 거래 전략에 시장 심리 데이터를 통합하여 의사 결정을 강화하고, 수익성 있는 거래 가능성을 높이며, 위험 관리를 강화하세요.

심볼 심리 API 객체는 알고리즘에서 다음과 같은 작업을 수행할 수 있습니다:

기능 또는 작업 예시
감정 기반 거래 감정 편향으로 거래
극단적인 감정에 반대하여 거래
감정과 캔들 결합
감정 발산 시 종료
적응형 위험 설정 잡음 거래 필터링
감정에 따라 거래 규모 조정
시장 활동에 기반한 전략 조절
감정에 따라 손절매 설정
모니터링 및 분석 감정 기반 알림 생성
감정 히트맵 전략 실행
감정을 통해 돌파구 발견
지표 신호 검증

참고

감정 데이터는 실시간으로만 제공되기 때문에, 과거 또는 저장된 데이터가 없으므로 백테스트나 최적화에 사용할 수 없습니다.

감정 기반 거래

감정 편향으로 거래

트렌드 편향을 확인한 후에만 거래를 진입하거나 감정이 방향과 일치할 때만 거래하도록 cBot을 프로그래밍할 수 있습니다. 예를 들어, cBot은 최소 70%의 감정이 강세일 때 매수하고, 70%가 약세일 때 매도합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void OnBar()
{
    if (Symbol.Sentiment.BuyPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }
    else if (Symbol.Sentiment.SellPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}

극단적인 감정에 반대하여 거래

강한 감정 합의에 반대하여 거래를 진입하는 cBot을 고려해보세요. 알고리즘의 반전 접근 방식은 군중이 극단에서 종종 틀리거나 매우 높은 비율의 트레이더가 한쪽에 있을 때 시장이 반전할 준비가 되었다고 가정합니다. 예를 들어, 80% 이상의 트레이더가 매수 중이라면 cBot은 반전을 예상하여 매도합니다. 대부분이 매도 중일 때도 동일한 논리가 적용됩니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
protected override void OnBar()
{
    if (Symbol.Sentiment.BuyPercentage > 80)
    {
        // Everyone is buying. Consider selling
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
    else if (Symbol.Sentiment.SellPercentage > 80)
    {
        // Everyone is selling. Consider buying
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }
}

감정과 캔들 결합

시장 감정과 캔들 방향이 모두 일치할 때만 행동하도록 cBot을 설정할 수 있습니다. 강세 캔들이 나타나고 감정이 60% 이상 강세라면 cBot은 매수합니다. 캔들이 약세이고 감정이 동의한다면 cBot은 매도합니다. 이 접근 방식은 약한 신호를 걸러내고 잘못된 진입을 피하는 데 도움이 됩니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
protected override void OnBar()
{
    bool bullishCandle = Bars.LastBar.Close > Bars.LastBar.Open;
    if (bullishCandle && Symbol.Sentiment.BuyPercentage > 60)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }

    bool bearishCandle = Bars.LastBar.Close < Bars.LastBar.Open;
    if (bearishCandle && Symbol.Sentiment.SellPercentage > 60)
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}

감정 발산 시 종료

감정이 더 이상 포지션을 지지하지 않을 때 거래를 종료하도록 cBot을 설정할 수 있습니다. 예를 들어, 매수 포지션을 보유 중이고 감정이 60% 이상 약세로 뒤집히면 cBot은 이를 종료합니다. 감정이 강세로 돌아섰을 때 매도 포지션에도 동일하게 적용됩니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
protected override void OnBar()
{
    foreach (var position in Positions)
    {
        if (position.TradeType == TradeType.Buy && Symbol.Sentiment.SellPercentage > 60)
            ClosePosition(position);
        if (position.TradeType == TradeType.Sell && Symbol.Sentiment.BuyPercentage > 60)
            ClosePosition(position);
    }
}

적응형 위험 설정

잡음 거래 필터링

명확한 감정 편향이 없을 때 거래를 피하는 cBot을 개발할 수 있습니다. 예를 들어, 감정이 거의 균등하고 차이가 10% 미만이라면 cBot은 거래를 건너뜁니다. 이 설정은 잡음을 걸러내고 우유부단한 시장으로부터 보호합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
protected override void OnBar()
{
    var diff = Math.Abs(Symbol.Sentiment.BuyPercentage - Symbol.Sentiment.SellPercentage);

    if (diff < 10)
    {
        // Sentiment is too neutral. Avoid trading
        return;
    }

    // Continue strategy logic here
}

감정에 따라 거래 규모 조정

감정이 한 방향으로 얼마나 강하게 기울어져 있는지에 따라 포지션 크기를 조정하도록 cBot을 설정할 수 있습니다. 예를 들어, 강세 감정이 약세를 크게 앞지르면 cBot은 거래량을 늘립니다. 감정이 중립에 가까우면 cBot은 더 작은 규모로 거래합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
protected override void OnBar()
{
    double sentimentStrength = Math.Abs(Symbol.Sentiment.BuyPercentage - Symbol.Sentiment.SellPercentage);
    long volume = (long)(10000 * (sentimentStrength / 100.0)); // Adjust volume dynamically

    if (Symbol.Sentiment.BuyPercentage > Symbol.Sentiment.SellPercentage)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }
    else
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}

시장 활동에 기반한 전략 조절

감정이 포화된 시장의 징후를 보일 때 거래를 일시 중지하도록 전략을 설정할 수 있습니다. 예를 들어, 90% 이상의 트레이더가 매수 또는 매도 중이라면 cBot은 시장이 반전할 가능성이 높을 때 포지션 진입을 피하기 위해 거래를 중지합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
protected override void OnBar()
{
    if (Symbol.Sentiment.BuyPercentage > 90 || Symbol.Sentiment.SellPercentage > 90)
    {
        Print("Extreme sentiment detected. Halting trading temporarily.");
        return;
    }

    // Continue normal trading logic
}

감정에 따라 손절매 설정

감정 강도를 측정하고 적절한 손절매 크기로 응답하도록 cBot을 지시할 수 있습니다. 예를 들어, 강세 감정이 80%를 초과하면 cBot은 20핍의 좁은 손절매를 사용합니다. 감정이 덜 확신적이라면 cBot은 더 넓은 50핍의 손절매를 설정하여 더 많은 여유를 줍니다.

1
2
3
4
5
6
7
8
protected override void OnBar()
{
    double stopLossPips = Symbol.Sentiment.BuyPercentage > 80 ? 20 : 50;
    if (Symbol.Sentiment.BuyPercentage > Symbol.Sentiment.SellPercentage)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000, "buy", stopLossPips, null);
    }
}

모니터링 및 분석

감정 기반 알림 생성

실시간으로 감정을 모니터링하고 극단적인 수준에 도달했을 때 알림을 보내는 cBot을 고려해보세요. 예를 들어, 매수 감정이 90%를 초과하면 cBot은 강세 알림을 기록하거나 출력합니다. 매도 감정이 동일한 임계값을 넘어서면 극단적인 약세를 알립니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// This method handles the SymbolSentiment_Updated event
// It is triggered whenever the symbol sentiment data is updated
private void SymbolSentiment_Updated(SymbolSentimentUpdatedEventArgs obj)
{
    if (obj.Sentiment.BuyPercentage > 90)
        Print("Extreme bullish sentiment detected!");

    if (obj.Sentiment.SellPercentage > 90)
        Print("Extreme bearish sentiment detected!");
}

감정 히트맵 전략 실행

여러 자산에 걸쳐 감정 스캔을 실행하고 최고의 거래 기회를 식별하는 cBot을 고려해보세요. 예를 들어, cBot은 사용 가능한 모든 심벌을 순회하며 매수 및 매도 비율을 출력하고, 가장 극단적인 강세 또는 약세 감정을 보이는 심벌에 집중할 수 있습니다.

1
2
3
4
5
6
7
8
protected override void OnStart()
{
    var symbols = Symbols.GetSymbols();
    foreach (var sym in symbols)
    {
        Print($"{sym.Name} - Buy %: {sym.Sentiment.BuyPercentage}, Sell %: {sym.Sentiment.SellPercentage}");
    }
}

감정을 통해 돌파구 발견

감정의 급격한 변화를 돌파구 또는 높은 시장 변동성의 징후로 감지하도록 cBot을 프로그래밍할 수 있습니다. 예를 들어, 매수 감정이 15% 이상 급등하거나 급락하면 cBot은 변동성 움직임의 초기 징후로 스파이크를 기록합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Field to store the previous buy percentage value
private double previousBuy;

protected override void OnStart()
{
    previousBuy = Symbol.Sentiment.BuyPercentage;

    // Subscribe to the sentiment updated event
    // This will trigger the SymbolSentiment_Updated method whenever sentiment data is updated    
    Symbol.Sentiment.Updated += SymbolSentiment_Updated;
}

// obj is an instance of SymbolSentimentUpdatedEventArgs, which carries the updated sentiment data
private void SymbolSentiment_Updated(SymbolSentimentUpdatedEventArgs obj)
{
    double change = Math.Abs(obj.Sentiment.BuyPercentage - previousBuy);
    if (change > 15)
        Print("Spike in sentiment detected. Breakout or heightened volatility coming soon");

    previousBuy = obj.Sentiment.BuyPercentage;
}

지표 신호 검증

지표만 의존하는 대신, 지표와 감정 조건이 모두 일치할 때만 행동하도록 cBot을 프로그래밍하여 전략을 강화할 수 있습니다. 예를 들어, RSI가 과매도 상태를 나타내고 감정이 70% 이상 강세라면 cBot은 매수합니다. RSI가 과매수 신호를 보내고 감정이 70% 이상 약세라면 cBot은 매도합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
private RelativeStrengthIndex rsi;

protected override void OnStart()
{
    rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, 14);
}

protected override void OnBar()
{
    if (rsi.Result.LastValue < 30 && Symbol.Sentiment.BuyPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }

    if (rsi.Result.LastValue > 70 && Symbol.Sentiment.SellPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}