Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

0

Matriksıqda Tillsonn T3 al sat robotu yapma

Soruldu
Görüntülenme
1.541 görüntülenme
Durum
Cevaplandı
Matriksıqda Tillsonn T3 kullanarak cizgi kırmızı başlangıcında sat ve yeşil cizgi başlangıcında al sinyali üreten ve al sat yapan ve önce alacak sonra satacak, sürekli alım yada satım yapmayacak ayrıca alım satım arasında en az % 5 fark olacak treder botu yapmak istiyorum. Kod yazmanız mümkü mü.
Paylaş

1 Cevap

0

Merhaba.

Tillson renk değişim stratejisi için linkteki stratejiyi alıp inceleyiniz lütfen.

/dosya/cvgepukmlljk23oqr7nhpsrmc/TilsonRenkDegisimi.mtxiq

 

Sonraki talebinizi biz önermiyoruz.

İyice düşünün lütfen. Zarar çok derinleşirse ne yapacaksınız. 

Aşağıya zararda ise satmayan örnek bir strateji ekliyorum. onu inceleyip, kendiniz ona göre düzenlemeyi deneyebilirsiniz.

Mutlaka uygulayacaksanız, bizce mutlaka bir zarar stopu eklemelisiniz.

İyi çalışmalar

ZARARDA İSE SATMA için örnek kod:

using System;
using System.Collections.Generic;
using System.Linq;
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;

//===========================================ACIKLAMA=======================================//
// TSF indikatöründe, fiyat çubuklarınının TSF bandının üstüne kırdığı anda al,                                       //
// altına kırdığı anda sat sinyali üretilir.                                                                                                                                           //
// Emirler piyasa fiyatından gönderilecektir.                                                //
// Emir gönderimi ile birlikte strateji raporunda Debug sekmesine "Alış emri gönderildi." //
// ve "Satış emri gönderildi." ifadesi yazdırılmaktadır.                                            //

namespace Matriks.Lean.Algotrader
{
            public class TSFmartingale : 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("ASELS")]
                        public string Symbol;

                        [Parameter(SymbolPeriod.Min)]
                        public SymbolPeriod SymbolPeriod;

                        [Parameter(100)]
                        public int BuyOrderQuantity;

                        [Parameter(100)]
                        public int SellOrderQuantity;

                        [Parameter(5)]
                        public int Period;

                        TSF tsf;

                        /// <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 override void OnInit()
                        {
                                   tsf = TSFIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period);

                                   AddSymbol(Symbol, SymbolPeriod);

                                   // Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur.
                                   // true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir.
                                   WorkWithPermanentSignal(true);

                                   //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);
                        }

                        //Dictionary<string, Dictionary<string, IOrder>> orders = new Dictionary<string, Dictionary<string, IOrder>>();
                        string lastBUYorderid = "NULL";
                        string lastSELLorderid = "NULL";
                        decimal LastBuyOrderPrice = 0;
                        decimal LastSellOrderPrice = 0;
                        int position = 0;
                        
                        public override void OnDataUpdate(BarDataEventArgs barData)
                        {
                                   var barDataModel = GetBarData();
                                   Debug("Working...");
                                   if (CrossAbove(barDataModel, tsf, OHLCType.Close))
                                   {
                                               lastBUYorderid = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
                                               Debug("Alış Emri Gönderildi");
                                               Debug("Close:" + Math.Round(barData.BarData.Close,2));
                                               Debug("Tsf:" + Math.Round(tsf.CurrentValue,2));
                                               //LastBuyOrderPrice = orders[Symbol][lastBUYorderid].LastPx;  //islem yapilan fiyati kaydediyoruz
                                               //Debug("orders[Symbol][lastBUYorderid].LastPx = " + orders[Symbol][lastBUYorderid].LastPx);
                                   }

                                   if (CrossBelow(barDataModel, tsf, OHLCType.Close))
                                   {
                                               if(barData.BarData.Close < LastBuyOrderPrice)
                                               {
                                                           Debug("Satis fiyati alis fiyatindan dusuk. Emir gonderilmedi");
                                               }
                                               
                                               if(barData.BarData.Close > LastBuyOrderPrice)
                                               {
                                                           lastSELLorderid =SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
                                                           Debug("Satış Emri Gönderildi");
                                                           Debug("Close:" + Math.Round(barData.BarData.Close,2));
                                                           Debug("Tsf:" + Math.Round(tsf.CurrentValue,2));
                                               }
                                   }
                        }
                        
                        public override void OnOrderUpdate(IOrder order)
                        {
                                   //if (!orders.ContainsKey(order.Symbol)) orders.Add(order.Symbol, new Dictionary<string, IOrder>());
                                   //orders[order.Symbol][order.CliOrdID] = order;
                                   
                                   if (lastBUYorderid == order.CliOrdID && order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Buy)
                                   {
                                               LastBuyOrderPrice = order.LastPx;
                                               Debug("Buy Order filled @ " + LastBuyOrderPrice);
                                               position += 1;
                                   }
                                   if (lastSELLorderid == order.CliOrdID && order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
                                   {
                                               LastSellOrderPrice = order.LastPx;
                                               Debug("Sell Order filled @ " + LastSellOrderPrice);
                                               position -= 1;
                                   }
                        }
            }
}

 

BağlantıBayraklailhan69Matriks Destek14.380

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol