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.