0 beğenilme 0 beğenilmeme
204 kez görüntülendi
Merhabalar;

C# ile verdiğim emir gerçekleştiğinde yada ital edildiğinde sonucunu nasıl alabilirim?
Algoritmik Trading kategorisinde (20 puan) tarafından | 204 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Aşağıdaki gibi bir yapı ile birlikte emirlerinizi mail olarak almanız mümkündür.

Dilerseniz inceleyiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using System.Net.Mail;
using System.Net;
using Matriks.Trader.Core.TraderModels;


namespace Matriks.Lean.Algotrader
{
	public class EmailNotificationStrategy : 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("VET_USDT_BIN")]
			public string Symbol1;


		[Parameter(SymbolPeriod.Min15)]
			public SymbolPeriod SymbolPeriod1;


		[Parameter(3)]
			public int MavilimwFirstMovPeriod1;

		[Parameter(5)]
			public int MavilimwSecondMovPeriod1;

		[Parameter(500)]
			public decimal OrderQuantity1;

		[Parameter(5)]
			public decimal StopLevel1;

		MAVILIMW mavilimw;



		public override void OnInit()
		{

			mavilimw = MAVILIMWIndicator(Symbol1, SymbolPeriod1, MavilimwFirstMovPeriod1, MavilimwSecondMovPeriod1);

			SendOrderSequential(true, Side.Buy);
			WorkWithPermanentSignal(false);

			//Alttaki fonksiyon açıldıktan sonra parametre olarak verilen saniyede bir OnTimer fonksiyonu tetiklenir.
			// SetTimerInterval(3600);

			//Alttaki fonksiyon ile tanımlanan sembol ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
			//AddNewsSymbol(Symbol);

			//Alttaki fonksiyon ile tanımlanan anahtar kelime ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
			//AddNewsKeyword("KAP");
		}

		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var barData1 = GetBarData(Symbol1, SymbolPeriod1);

			if (CrossBelow(mavilimw, barData1, OHLCType.Low, 0))
			{
				SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);

				TrailingStopLoss(Symbol1, SyntheticOrderPriceType.Percent, StopLevel1);

				MailGonder("alış emri gönderildi.");
			}
		}
		public void MailGonder(string icerik)
		{

			MailMessage mail = new MailMessage();
			SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

			// Gönderecek mail adresi
			mail.From = new MailAddress("gonderecekmailadresi@gmail.com");

			// gönderilecek adres
			mail.To.Add("gonderilecekmailadresi@gmail.com");

			mail.Subject = "MatriksIQ ";

			mail.Body += "    <!DOCTYPE html>     ";
			mail.Body += "    <html lang='tr'>     ";
			mail.Body += "    <head>     ";
			mail.Body += "    <title>MatriksIQ</title>     ";
			mail.Body += "    <meta charset='utf-8'>     ";
			mail.Body += "    <meta name='viewport' content='width=device-width, initial-scale=1'>     ";
			mail.Body += "    </head>     ";
			mail.Body += "    <body>     ";
			mail.Body += "    <div style=‘width: 100%; max-width: 1140px; padding: 0 15px; margin: 0 auto;’>     ";
			mail.Body += "    <div style=‘text-align: center;’>     ";
			mail.Body += "    <img src=‘https://destek.matriksdata.com/assets/images/category-logo-matriks.png‘ alt=‘Matriks Data’ width=‘400’ height=‘auto’>     ";
			mail.Body += "    </div>     ";
			mail.Body += "    <h2 style=‘text-align: center; background-color: #539AC8; color: white; margin: 0 1px; padding: 10px 0;’>";
			mail.Body += icerik;
			mail.Body += "    </h2>     ";
			mail.Body += "    </div>     ";
			mail.Body += "    </body>     ";
			mail.Body += "    </html>    ";




			mail.BodyEncoding = System.Text.Encoding.GetEncoding(28599);
			mail.IsBodyHtml = true;
			SmtpServer.Port = 587;
			// mail adresi ve şifresi
			SmtpServer.Credentials = new System.Net.NetworkCredential("mailadresi@gmail.com", "mailadresisifresi");
			SmtpServer.EnableSsl = true;

			SmtpServer.Send(mail);
		}

		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
			{
				MailGonder("Satış emri gerçekleşti");
			}
		}

	}
}



İyi çalışmalar.

(11,069 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



7,591 soru
7,598 cevap
4,441 yorum
10,455 kullanıcı