çalışan robotları topluca durdurup ertesi gün aynı robotları topluca nasıl çalıştırırım?
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 2.352 görüntülenme
- Durum
- Çözüldü
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.
Kabul edilen cevap
--------------------------------------------------------------------------------------------------
Önemli Linkler:
MatriksIQ Yardım Dokumanı
MatriksIQ Algo Teknik Dokuman
MatriksIQ’nun öne çıkan özellikleri - Canlı Yayın'dan kayıt
MatriksIQ Videolar
IQ Algoritma Sihirbazını Nasıl Kullanırız
Ilk emir ne gelirse onunla baslamasi icin SendOrderSequential'a bir opsiyon daha ekledik. SendOrderSequential(true,true); seklinde yazdiginizda emirler hala sirali gidecektir fakat ilk emrin alis olmasi sarti olmayacaktir. Bu sekilde sirali emir gonderimini acik tutarak bi stratejiyi basit bir sekilde istedigimiz emirle baslamasi yonunde de degistirebiliriz. Asagida basit bir ornek paylasiyorum.
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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;
namespace Matriks.Lean.Algotrader
{
public class sendOrderSeq_YENI : 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("GARAN")]
public string Symbol;
[Parameter(SymbolPeriod.Min5)]
public SymbolPeriod SymbolPeriod;
[Parameter(1)]
public decimal OrderQuantity;
[Parameter(14)]
public int Period;
[Parameter(70)]
public int UpLevel;
[Parameter(30)]
public int DownLevel;
[Parameter(false)]
public bool SatislaBasla;
// indikator tanımları.
RSI rsi;
int firstRun = 1;
/// <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()
{
AddSymbol(Symbol, SymbolPeriod);
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period);
WorkWithPermanentSignal(true);
SendOrderSequential(true,true);
}
/// <summary>
/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir.
/// </summary>
/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
if (firstRun == 1)
{
if (CrossAbove(rsi, DownLevel) && !SatislaBasla)
{
SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
firstRun = 0;
}
if (CrossBelow(rsi, UpLevel) && SatislaBasla)
{
SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
firstRun = 0;
}
}
else
if (CrossAbove(rsi, DownLevel))
SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
if (CrossBelow(rsi, UpLevel))
SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
}
/// <summary>
/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
/// </summary>
/// <param name="barData">Emrin son durumu</param>
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled)
{
}
}
}
}
Bu olay için bir tavsiyem var.
Kullanıcı stratejileri sekmesine, login olunan hesabı seçebileceğimiz bir açılır kutu eklenip, yanına da seçilen stratejileri bu hesaba bağlayarak default ayarlar ile çalıştırmayı sağlayacak bir buton koyabilirseniz çok güzel olur.
Eğer bu olayı çalıştırılmış stratejiler alanında yapıyorsanız da, strateji her durdurulduğunda çalıştırılmış stratejiler sekmesine kayıt yapılmamalı. Bu alanda her stratejiden sadece bir adet bulunmalı. Böylece fazla sayıda sistem çalıştıranlar aynı sistemleri ayıklama zahmetine girmeden "Tümünü seçerek" çalıştırabilirler.
Sitenin çalışması için gerekli çerezleri kullanıyoruz. Ziyaretleri anlamak için analitik çerezleri yalnızca onayınızla kullanırız. Çerez Politikası