0 beğenilme 0 beğenilmeme
57 kez görüntülendi
Merhablaar,Attığım kod satırında fx alis ve fx satış ondataupdate de bir problem var mı acaba bakar mısıınz aptallıktan başka hiçbirşey yapmıyor.

using System;

using System.Collections.Generic;

using System.Linq;

using Matriks;

using Matriks.Data.Symbol;

using Matriks.Data.Tick;

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 Matriks.Trader.Core.TraderModels;

using Matriks.Enumeration;

using Matriks.IntermediaryInstitutionAnalysis.Enums;

using Newtonsoft.Json;

 

namespace Matriks.Lean.Algotrader

{

public class SMA_DENEME01 : 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("AAVE_USDT_FBIN")]

public string Symbol;

 

 

[Parameter(SymbolPeriod.Min15)]

public SymbolPeriod SymbolPeriod1;

 

 

[Parameter(Side.Buy)]

public Side orderSide;

 

 

[Parameter(22)]

public int EmaPeriod1;

 

[Parameter(5)]

public int SmaPeriod1;

 

[Parameter(3)]

public decimal Stop_zarar;

 

[Parameter(4)]

public decimal Stop_kar;

 

[Parameter(20)]

public int KaldiracOrani;

 

 

[Parameter(true)]

public bool AcigaSatisYapilsin;

 

[Parameter(false)]

public bool AksamSeansiniDahilEt;

 

List<string> orderIDList = new List<string>();

 

string orderID;

 

[Parameter(1)]

public decimal BuyOrderQuantity;

 

[Parameter(1)]

public decimal SellOrderQuantity;

 

EMA ema;

SMA sma;

 

 

 

public override void OnInit()

{

 

ema = EMAIndicator(Symbol, SymbolPeriod1, OHLCType.Close, EmaPeriod1);

sma = SMAIndicator(Symbol, SymbolPeriod1, OHLCType.Close, SmaPeriod1);

 

 

SendOrderSequential(true, orderSide);

WorkWithPermanentSignal(true);

if (AcigaSatisYapilsin)

{

SendOrderSequential(true, Side.All);

SendOrderSequentialForShort(true, Side.All);

}else

{

SendOrderSequential(true, orderSide);

}

SetLeverage(Symbol, KaldiracOrani);

SetLeverageType(Symbol, true);

 

}

/// <summary>

/// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir

/// </summary>

public override void OnInitCompleted()

{

}

 

/// <summary>

/// SetTimerInterval fonksiyonu ile belirtilen sürede bir bu fonksiyon tetiklenir.

/// </summary>

public override void OnTimer()

{

 

}

 

/// <summary>

/// AddNewsSymbol ve AddNewsKeyword ile haberlere kayit olunmuşsa bu fonksiyon tetiklenir.

/// </summary>

/// <param name="newsId">Gelen haberin id'si</param>

/// <param name="relatedSymbols">Gelen haberin ilişkili sembolleri</param>

public override void OnNewsReceived(int newsId, List<string> relatedSymbols)

{

 

}

 

/// <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(BarDataEventArgs barData)

{

if (CrossAbove(sma, ema, 0, 0))

{

FX_Alis();

StopLoss(Symbol, SyntheticOrderPriceType.Percent, Stop_zarar);

TakeProfit(Symbol, SyntheticOrderPriceType.Percent, Stop_kar);

}

if (CrossBelow(sma, ema, 0, 0))

{

FX_Satis();

StopLoss(Symbol, SyntheticOrderPriceType.Percent, Stop_zarar);

TakeProfit(Symbol, SyntheticOrderPriceType.Percent, Stop_kar);

}

 

}

 

public override void OnInitComplated()

{

FX_PiyasaTipi();

}

public void FX_Alis()

{

if (LastOrderSide.Obj != Side.Buy)

{

if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)

{

orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

StopLoss(Symbol, SyntheticOrderPriceType.Percent, Stop_zarar);

TakeProfit(Symbol, SyntheticOrderPriceType.Percent, Stop_kar);

Debug("Alış emri gönderildi.[ " + BuyOrderQuantity + " adet ]");

}else

{

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

// Açık pozisyonu kapat

orderID = SendMarketCloseShortOrder(Symbol, BuyOrderQuantity);

orderIDList.Add(orderID);

Debug("Açık pozisyonlar kapatıldı.[ " + BuyOrderQuantity + " adet ]");

 

// Al

orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Alış emri gönderildi.[ " + BuyOrderQuantity + " adet ]");

}else

{

// pozsiyon kapat ve al

orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

StopLoss(Symbol, SyntheticOrderPriceType.Percent, Stop_zarar);

TakeProfit(Symbol, SyntheticOrderPriceType.Percent, Stop_kar);

Debug("Alış emri gönderildi.[ " + (BuyOrderQuantity) + " adet ]");

}

}

LastOrderSide.Obj = Side.Buy;

}

}

public void FX_Satis()

{

if (LastOrderSide.Obj != Side.Sell)

{

if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)

{

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

if (AcigaSatisYapilsin)

{

orderID = SendShortSaleMarketOrder(Symbol, SellOrderQuantity);

orderIDList.Add(orderID);

Debug("Açığa satış yapıldı.[ " + (SellOrderQuantity) + " adet ]");

}else

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity) + " adet ]");

}

}else

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity) + " adet ]");

}

 

}else

{

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity) + " adet ]");

 

orderID = SendShortSaleMarketOrder(Symbol, SellOrderQuantity);

orderIDList.Add(orderID);

Debug("Açığa satış yapıldı.[ " + (SellOrderQuantity) + " adet ]");

}else

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity * 2) + " adet ]");

}

}

LastOrderSide.Obj = Side.Sell;

}

}

[Output]

public string Sembol1 = "";

 

[Output]

public string Sembol2 = "";

 

enum PiyasaTipleri

{

BISTPP,

BISTVIOP,

KRIPTOBINANCE,

KRIPTOBINANCEFUTURE,

KRIPTOBITMEX,

KRIPTOBTCTURK

}

PiyasaTipleri piyasaTipleri = PiyasaTipleri.BISTPP;

 

public void FX_PiyasaTipi()

{

Sembol1 = Symbol;

Sembol2 = Symbol;

 

var SymbolDetail = GetSymbolDetail(Symbol);

 

if (SymbolDetail.ExchangeDetail.ExchangeCode == PiyasaTipleri.BISTPP.ToString())

{

piyasaTipleri = PiyasaTipleri.BISTPP;

}else if (SymbolDetail.ExchangeDetail.ExchangeCode == PiyasaTipleri.BISTVIOP.ToString())

{

piyasaTipleri = PiyasaTipleri.BISTVIOP;

}else if (SymbolDetail.ExchangeDetail.ExchangeCode == "")

{

Sembol1 = Symbol.Split('_')[0];

Sembol2 = Symbol.Split('_')[1];

 

var _split = Symbol.Split('_');

 

if (_split.Count() == 3)

{

if (Symbol.Split('_')[2].Contains("BIN"))

{

piyasaTipleri = PiyasaTipleri.KRIPTOBINANCE;

} else if (Symbol.Split('_')[2].Contains("FBIN"))

{

piyasaTipleri = PiyasaTipleri.KRIPTOBINANCEFUTURE;

Sembol1 = Symbol;

Sembol2 = Symbol;

 

}else if (Symbol.Split('_')[2].Contains("BMEX"))

{

piyasaTipleri = PiyasaTipleri.KRIPTOBITMEX;

}

}else

{

piyasaTipleri = PiyasaTipleri.KRIPTOBTCTURK;

}

 

}

}

 

/// <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 && !orderIDList.Contains(order.CliOrdID) && AcigaSatisYapilsin)

{

if (order.OrdStatus.Obj == OrdStatus.Filled)

{

StopLoss(Symbol, SyntheticOrderPriceType.Percent, Stop_zarar);

TakeProfit(Symbol, SyntheticOrderPriceType.Percent, Stop_kar);

}

 

if (order.Side.Obj == Side.Buy)

{

Debug("Sentetik emir tetiklendi ");

LastOrderSide.Obj = Side.Sell;

 

orderID = SendMarketOrder(Symbol, order.OrderQty, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

LastOrderSide.Obj = Side.Buy;

 

Debug("Sentetik emrin kalan kısmı için alış emri gönderildi.[ " + order.OrderQty + " adet ]");

 

}else

{

Debug("Sentetik emir tetiklendi ");

LastOrderSide.Obj = Side.Buy;

 

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

orderID = SendShortSaleMarketOrder(Symbol, order.OrderQty);

orderIDList.Add(orderID);

}else

{

orderID = SendMarketOrder(Symbol, order.OrderQty, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

}

LastOrderSide.Obj = Side.Sell;

 

Debug("Sentetik emrin kalan kısmı için satış emri gönderildi.[ " + order.OrderQty + " adet ]");

}

}

}

 

/// <summary>

/// Strateji durdurulduğunda bu fonksiyon tetiklenir.

/// </summary>

public override void OnStopped()

{

}

}

}
Diğer kategorisinde (18 puan) tarafından | 57 kez görüntülendi

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

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.



8,391 soru
8,345 cevap
4,713 yorum
18,044 kullanıcı