0 beğenilme 0 beğenilmeme
256 kez görüntülendi
Başka bir platformdan API kullanarak veri çekmek ve bu verilerin değerlerine bağlı olarak Matriks IQ üzerinden bir strateji oluşturmak istiyorum bu mümkün mü ?
Algoritmik Trading kategorisinde (12 puan) tarafından | 256 kez görüntülendi

2 Cevaplar

0 beğenilme 0 beğenilmeme
Merhaba,

Veriyi anlık olarak içeri alamazsınız.

Bununla beraber, aldığınız veriyi bir uygulamada işleyerek, elde edeceğiniz sinyallerle MatriksIQ üzerinden emir iletimi ve takibi yapabilirsiniz.

Eğitim birimi ile irtibata geçiniz.

İyi çalışmalar.
(12,900 puan) tarafından
0 beğenilme 0 beğenilmeme
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)

{

 

}

}

}

}
(88 puan) tarafından
0 0
Merhaba öncelikle cevap için çok teşekkürler. Telegram üzerinden gelecek olan bildirim ile matriks IQ üzerinden bu verileri kullanarak algoritmik trade yapabilir miyim peki ? Bilginiz var ise paylaşırsaniz memnun olurum.
7,647 soru
7,642 cevap
4,448 yorum
11,169 kullanıcı