0 beğenilme 0 beğenilmeme
987 kez görüntülendi
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ü.
Algoritmik Trading kategorisinde (90 puan) tarafından | 987 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba.

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

https://destek.matriksdata.com/?qa=blob&qa_blobid=16504233577959275486

 

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

 

(12,790 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,509 soru
7,511 cevap
4,405 yorum
8,736 kullanıcı