Selam Ben Telegram a msg yollamak icin ugrasirken API lerle de ilgilendim bu ornek isine yarayabilir.
Kendi telegram token ve id ni yazarsan telegrama msg olarak APPL hissesinin degeri
https://api.coingecko.com/api/v3/simple/price?ids={symbol}&vs_currencies=usd API sinden geliyor.
----------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Media;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
//yeni eklenenler
using Matriks.Data.Tick;
using Matriks.IntermediaryInstitutionAnalysis.Enums;
using Matriks.Enumeration;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using System.Windows.Forms;
using MessagePack;
using MessagePack.Resolvers;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;
namespace Matriks.Lean.Algotrader
{
public class TelegramBot
{
static readonly string token = "kendi tokeniyaz";
static readonly string chatId = "kendi id yaz";
public static string SendMessage(string message)
{
string retval = string.Empty;
string url = $"
https://api.telegram.org/bot{token}/sendMessage?chat_id={chatId}&text={message}";
using (var webClient = new WebClient())
{
retval = webClient.DownloadString(url);
}
return retval;
}
}
//==========================================================================
public class APIBot
{
public static async Task CheckStockMovementAsync(string symbol)
{
using (HttpClient client = new HttpClient())
{
try
{
//
https://query1.finance.yahoo.com/v8/finance/chart/GOOG bu calisiyor
//
https://api.marketdata.app/v1/stocks/candles/1/AAPL/?from=2022-01-01&to=2022-01-10&dateformat=timestamp buda calisiyor
string apiUrl = $"
https://api.coingecko.com/api/v3/simple/price?ids={symbol}&vs_currencies=usd";
//====================================================
// HttpRequestMessage oluştur
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, apiUrl);
// HTTP isteği gönder
HttpResponseMessage response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
string responseData = await response.Content.ReadAsStringAsync();
// Okunan veriyi kullanın veya işleyin
JObject json = JObject.Parse(responseData);
if (json.ContainsKey(symbol))
{
decimal price = (decimal) json[symbol]["usd"];
TelegramBot.SendMessage($"{symbol} Fiyatı: ${price}");
}
else
{
TelegramBot.SendMessage($"Belirtilen kripto para bulunamadı.");
}
}
else
{
TelegramBot.SendMessage($"API çağrısı başarısız. Durum Kodu: {response.StatusCode}");
}
}
catch (Exception ex)
{
TelegramBot.SendMessage($"Hata oluştu: {ex.Message}");
}
}
}
}
//============================================================================
public class APIORNEK : MatriksAlgo
{
// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.
[SymbolParameter("GARAN")]
public string Symbol;
[Parameter(SymbolPeriod.Min5)]
public SymbolPeriod SymbolPeriod;
[Parameter(26)]
public int MacdLongPeriod1;
[Parameter(12)]
public int MacdShortPeriod1;
[Parameter(9)]
public int MacdTriggerPeriod1;
[Parameter(1)]
public decimal OrderQuantity1;
MACD macd;
/// <summary>
/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır.
/// </summary>
public async override void OnInit()
{
AddSymbol(Symbol, SymbolPeriod);
//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir.
//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz.
SendOrderSequential(true);
WorkWithPermanentSignal(true);
string stockSymbol = "aapl"; // İzlemek istediğiniz hisse senedinin sembolünü buraya ekleyin
await APIBot.CheckStockMovementAsync(stockSymbol);
}
bool result = true;
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
var barData1 = GetBarData(Symbol, SymbolPeriod);
var ohlcData1 = GetSelectedValueFromBarData(barData1, OHLCType.Close);
var result = macd.Value[0][macd.CurrentIndex] > macd.Value[1][macd.CurrentIndex];
if (result)
{
//SendMarketOrder(Symbol, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
}
}
/// <summary>
/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
/// </summary>
/// <param name="barData">Emrin son durumu</param>
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled)
{
}
}
}
}