0 beğenilme 0 beğenilmeme
307 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 | 307 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,059 puan) tarafından
8,636 soru
8,590 cevap
4,821 yorum
19,799 kullanıcı