MatriksİQ kodlarını metatrader5 e çevirme.

 

Merhabalar,

MatriksİQ platformunda bir kodlama geliştirdim de ( oradaki eğitim birimi yardımıyla ) ama MatriksİQ platformu borsa veya koinler üzerindne çalışma yaptığından bu deneyimi forexte değerlendiremiyorum. Acaba Kodların tamamını versem Metatrader5 formatında çevirebilecek varmı? yada çevirmeye yardımcı olacak bir site, videyo veya herhangi bir platform bilgisi olan paylaşabilir mi?

Kodlar:


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;

namespace Matriks.Lean.Algotrader
{
        public class Deneme : MatriksAlgo
        {
                [SymbolParameter("BTC_USDT_FBIN")]

public string Symbol;
                [Parameter(SymbolPeriod.Min5)]

public SymbolPeriod SymbolPeriod;

                [Parameter(0.002)]
public decimal BuyOrderQuantity;

                [Parameter(0.002)]
public decimal SellOrderQuantity;

                [Parameter(14)]
public int AlphatrendPeriod1;

                [Parameter(1)]
public decimal AlphatrendCoeff1;

                [Parameter(Momentum.MFI)]
public Momentum AlphatrendMomentum1;

                [Parameter(3)]
public int Kaldirac;

                [Parameter(3)]
public decimal Katsayi;

                [Parameter(5)]
public decimal İzSuren;

                AlphaTrend alphaTrend;

                [Parameter(5)]
public int KacSeferArtirsin;

                public int Carpan = 1;

                public override void OnDataUpdate(BarDataEventArgs barData)
                {
                        // alış koşulu
                        if (CrossBelow(alphaTrend, alphaTrend, 0, 1) && LastOrderSide.Obj != Side.Buy)
                        {
                                var adet = Carpan != 1? BuyOrderQuantity * Carpan:BuyOrderQuantity;

                                // Gerekli açığa satış
                                FX_Alis(Symbol, adet);
                                StopLoss(Symbol, SyntheticOrderPriceType.Percent, İzSuren);
                                // #Gerekli açığa satış
                        }
                        // satış koşulu
                        if (CrossAbove(alphaTrend, alphaTrend, 0, 1) && LastOrderSide.Obj != Side.Sell)
                        {
                                var adet = Carpan != 1? SellOrderQuantity * Carpan:SellOrderQuantity;

                                // Gerekli açığa satış
                                FX_Satis(Symbol, adet);
                                StopLoss(Symbol, SyntheticOrderPriceType.Percent, İzSuren);
                                // #Gerekli açığa satış
                        }
                }
                public override void OnInit()
                {
                        AddSymbol(Symbol, SymbolPeriod);

                        alphaTrend = AlphaTrendIndicator(Symbol, SymbolPeriod, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);

                        // Gerekli başla - Açığa satış
                        WorkWithPermanentSignal(true);
                        SendOrderSequential(true, HangiIslemleBaslasin);
                        SendOrderSequentialForShort(true, Side.All);
                        // #Gerekli bitti - Açığa satış

                        // Gerekli - Kaldıraç
                        SetLeverage(Symbol, Kaldirac); // kaldıraç oranı
                        SetLeverageType(Symbol, true); // kaldıraç tipi - true isolated, false cross
                        // #Gerekli - Kaldıraç
                        // Gerekli - Timestamp
                        SetTimerInterval(1);
                        // #Gerekli - Timestamp
                }
                // Gerekli başla - Açığa satış
                [Parameter(true)]

public bool AcigaSatisYapilsin;

                [Parameter(true)]
public bool AksamSeansiniDahilEt;

                [Parameter(Side.All)]
public Side HangiIslemleBaslasin;

                public bool FX_Alis(string sembol, decimal quantity)
                {
                        bool sonuc = false;

                        if (LastOrderSide.Obj != Side.Buy)
                        {
                                var _quantity = (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin || birseferlik) ? quantity:(LastOrderSideForShort.Obj == Side.All) ? quantity:quantity * 2;

                                SendMarketOrder(sembol, _quantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
                                Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");

                                LastOrderSideForShort = LastOrderSide;

                                var alphaDegeri = alphaTrend.Value[0][alphaTrend.CurrentIndex];
                                var close = GetSelectedValueFromBarData(GetBarData(), OHLCType.Close);
                                var fark = Math.Abs(alphaDegeri - close);

                                TakeProfit(Symbol, SyntheticOrderPriceType.PricePoint, fark * Katsayi);
                                StopLoss(Symbol, SyntheticOrderPriceType.PricePoint, fark);
                                Debug("Kar al seviyesi: " + fark * Katsayi + " Zarar durdur seviyesi: " + fark);
                                birseferlik = false;
                                sonuc = true;
                        }
                        return sonuc;
                }

                public bool FX_Satis(string sembol, decimal quantity)
                {
                        bool sonuc = false;
                        if (LastOrderSide.Obj != Side.Sell)
                        {
                                var _quantity = (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin || birseferlik) ? quantity:(LastOrderSideForShort.Obj == Side.All) ? quantity:quantity * 2;

                                SendMarketOrder(sembol, _quantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
                                Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");

                                LastOrderSideForShort = LastOrderSide;

                                var alphaDegeri = alphaTrend.Value[0][alphaTrend.CurrentIndex];
                                var close = GetSelectedValueFromBarData(GetBarData(), OHLCType.Close);
                                var fark = Math.Abs(alphaDegeri - close);

                                TakeProfit(Symbol, SyntheticOrderPriceType.PricePoint, fark * Katsayi);
                                StopLoss(Symbol, SyntheticOrderPriceType.PricePoint, fark);
                                Debug("Kar al seviyesi: " + fark * Katsayi + " Zarar durdur seviyesi: " + fark);
                                birseferlik = false;
                                sonuc = true;
                        }
                        return sonuc;
                }
                bool birseferlik = false;

                public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder)
                {
                        if (sOrder.SyntheticAlgoOrderType == SyntheticAlgoOrderType.StopLoss)
                        {
                                if (Carpan<KacSeferArtirsin)
                                {
                                        Carpan++;
                                }
                        }

                        if (sOrder.SyntheticAlgoOrderType == SyntheticAlgoOrderType.TakeProfit)
                        {
                                if (AcigaSatisYapilsin)
                                {
                                        if (LastOrderSide.Obj == Side.Sell)
                                        {
                                                LastOrderSide.Obj = Side.Buy;
                                                birseferlik = true;
                                        }
                                        else if (LastOrderSide.Obj == Side.Buy)
                                        {
                                                LastOrderSide.Obj = Side.Sell;
                                                birseferlik = true;
                                        }
                                }
                                Carpan = 1;
                        }

                        if (sOrder.EnableOrderSending && !birseferlik)
                        {
                                Debug("Sentetik emir tetiklendi");
                                if (AcigaSatisYapilsin)
                                {
                                        LastOrderSide.Obj = Side.All;
                                }
                        }
                }
                // #Gerekli bitti - Açığa satış
                // Gerekli - Timestamp

                public class OrderListTimestamp
                {
                        public string ID;
                        public string Symbol;
                        public decimal Adet;
                        public decimal Fiyat;
                        public OrdType EmirTipi;
                        public OrderSide orderSide;
                        public string EmirYonu;
                        public DateTime TetiklenmeZamani;
                        public int Sayac;
                        public bool AktifMI;
                }
                Dictionary<string, OrderListTimestamp> timestampDict = new Dictionary<string, OrderListTimestamp>();

                [Parameter(3)]
public int AyniEmirKacSeferGonderilsin;

                [Parameter(10)]
public int KacSaniyeSonraTekrarGonderilsin;

                string orderIDTimestamp = string.Empty;

                public override void OnTimer()
                {
                        var tutt = timestampDict.Where(x => x.Value.AktifMI == true && DateTime.Now >= x.Value.TetiklenmeZamani);

                        if (tutt.Count() >0)
                        {
                                foreach (var deger in tutt)
                                {
                                        LastOrderSide.Obj = deger.Value.orderSide == OrderSide.Buy? Side.Sell:Side.Buy;

                                        if (deger.Value.EmirTipi.Obj == OrdType.Limit)
                                        {
                                                orderIDTimestamp = SendLimitOrder(deger.Value.Symbol, deger.Value.Adet, deger.Value.orderSide, deger.Value.Fiyat);
                                                Debug(deger.Value.EmirYonu + " emri tekrar gönderildi.");

                                        }else if (deger.Value.EmirTipi.Obj == OrdType.Market)
                                        {
                                                orderIDTimestamp = SendMarketOrder(deger.Value.Symbol, deger.Value.Adet, deger.Value.orderSide);
                                                Debug(deger.Value.EmirYonu + " emri tekrar gönderildi.");
                                        }

                                        deger.Value.ID = orderIDTimestamp;
                                        deger.Value.AktifMI = false;
                                        timestampDict[orderIDTimestamp] = deger.Value;
                                        timestampDict.Remove(deger.Key);
                                }

                        }

                }

                public override void OnOrderUpdate(IOrder order)
                {
                        // Gerekli - Timestamp
                        if (order.OrdStatus.Obj == OrdStatus.Filled)
                        {
                                if (timestampDict.ContainsKey(order.CliOrdID))
                                {
                                        timestampDict.Remove(order.CliOrdID);
                                        Debug("Timestamp hatasına takılan emriniz gerçekleşti.");
                                }
                        }

                        if (order.OrdStatus.Obj == OrdStatus.Rejected)
                        {
                                if (!timestampDict.ContainsKey(order.CliOrdID))
                                {
                                        OrderListTimestamp orderList = new OrderListTimestamp();
                                        orderList.ID = order.CliOrdID;
                                        orderList.Symbol = order.Symbol;
                                        orderList.Adet = order.OrderQty;
                                        orderList.Fiyat = order.Price;
                                        orderList.EmirTipi = order.OrdType;
                                        orderList.TetiklenmeZamani = DateTime.Now;
                                        orderList.Sayac = 0;
                                        orderList.AktifMI = false;

                                        if (order.Side.Obj == Side.Buy)
                                        {
                                                orderList.orderSide = OrderSide.Buy;
                                                orderList.EmirYonu = "Alış";
                                        }else
                                        {
                                                orderList.orderSide = OrderSide.Sell;
                                                orderList.EmirYonu = "Satış";
                                        }
                                        timestampDict[order.CliOrdID] = orderList;
                                }
                                if (order.Text.Contains("Timestamp"))
                                {
                                        if (timestampDict.ContainsKey(order.CliOrdID))
                                        {
                                                if (timestampDict[order.CliOrdID].Sayac < AyniEmirKacSeferGonderilsin)
                                                {
                                                        timestampDict[order.CliOrdID].TetiklenmeZamani = DateTime.Now.AddSeconds(KacSaniyeSonraTekrarGonderilsin);
                                                        timestampDict[order.CliOrdID].Sayac++;
                                                        timestampDict[order.CliOrdID].AktifMI = true;

                                                        Debug("Emir Timestamp hatasından dolayı iptal oldu tekrar gönderilecek");
                                                }else
                                                {
                                                        timestampDict.Remove(order.CliOrdID);
                                                        Debug("Aynı emir üst üste " + AyniEmirKacSeferGonderilsin + " defa gönderildi.");
                                                }
                                        }
                                }
                        }
                }
                // #Gerekli - Timestamp
        }
}
 

Kıvanç beyin Alfa Trend göstergesini kullanmak istiyorsun.

Markette ücretliler var ve kaynak kodu kapalı. Ücretsiz versiyonunu bulabilirsen yardımcı olabilirim hocam.

 
Cuneyt Ates #:

Kıvanç beyin Alfa Trend göstergesini kullanmak istiyorsun.

Markette ücretliler var ve kaynak kodu kapalı. Ücretsiz versiyonunu bulabilirsen yardımcı olabilirim hocam.

(19) ALGORİTMA DÜNYASI 42 ALPHATREND İNDİKATÖRÜ - YouTube   Kıvanç >Bey in kodladığı bir indikatörmüş, ama süper trend indikatöründen çıkmış aslında. Belki bu video işinize yarar. 
ALGORİTMA DÜNYASI 42 ALPHATREND İNDİKATÖRÜ
ALGORİTMA DÜNYASI 42 ALPHATREND İNDİKATÖRÜ
  • 2022.04.27
  • www.youtube.com
AlphaTrend Matriks dosyaları:https://drive.google.com/drive/folders/1BWAoTlzDxGwPwOce4I3Zn4rKXk3I5KYZ?usp=sharingAlphaTrend MatriksIQ dosyaları:İndikatör: ht...
 
Trading de var aynı indikatör orada kullanıp metada işlem açabilirsiniz. Ben öyle yapıyorum. 
 
Senol Atis:

Merhabalar,

MatriksİQ platformunda bir kodlama geliştirdim de ( oradaki eğitim birimi yardımıyla ) ama MatriksİQ platformu borsa veya koinler üzerindne çalışma yaptığından bu deneyimi forexte değerlendiremiyorum. Acaba Kodların tamamını versem Metatrader5 formatında çevirebilecek varmı? yada çevirmeye yardımcı olacak bir site, videyo veya herhangi bir platform bilgisi olan paylaşabilir mi?

Kodlar:


indikatör kaynak kodları olmadan yapılamaz.

 
Serkan Pekcan #:
Trading de var aynı indikatör orada kullanıp metada işlem açabilirsiniz. Ben öyle yapıyorum. 
selamlar,trading den meta ya nasıl aktarıyoruz formülleri yardımcı olabilir misiniz.
Neden: