콘텐츠로 이동

심볼 심리

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);
    }
}