0 beğenilme 0 beğenilmeme
682 kez görüntülendi
bakiyem de btc vardı

quantitiy 1 ve 2 ye de bölerek girdim 0.025 ve 0.025 olarak satarken sattı ve usdt ye ekledi satınca.

fakat sonra al sinyali gelip otomatik emir iletince bakiye yetersiz dedi almadı yani btc'yi satınca doğal olarak usdt ye atıyor bakiyeyi fakat al sinyali gelince usdt'den neden btc alımı yapmıyor.

 

Neyi yanlış yapıyorum kod aşağıda.

Yardımınızı rica ederim. teşekkürler.

 

using AlphaTrend_IQ = Matriks.Lean.Algotrader.EmbeddedCustom54426694591230893994023139917079371111414384358.AlphaTrend_IQ;

using Matriks.AlgoTrader;

using Matriks.Data.Identifiers;

using System.ComponentModel;

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;

using Matriks.AI;

using Matriks.AI.AiParameters;

using Matriks.AI.Data;

using Matriks.Trader.Core.TraderModels;

 

namespace Matriks.Lean.Algotrader

{

public class alphadeneme : 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 Symbol1;

 

 

[Parameter(SymbolPeriod.Day)]

public SymbolPeriod SymbolPeriod1;

 

 

 

[Parameter(1)]

public decimal AlphatrendCoeff1;

 

[Parameter(14)]

public int AlphatrendPeriod1;

 

[Parameter(Momentum.MFI)]

public Momentum AlphatrendMomentum1;

 

[Parameter(100)]

public decimal OrderQuantity1;

 

[Parameter(100)]

public decimal OrderQuantity2;

 

[Parameter(true)]

public bool AcigaSatisYapilsin;

 

MatriksIndicator AlphaTrend_IQ;

public enum Momentum

{

MFI, RSI

}

public override void OnInit()

{

 

AlphaTrend_IQ = new AlphaTrend_IQ();

 

AlphaTrend_IQ.SetIndicatorParameters("Coeff", AlphatrendCoeff1);

AlphaTrend_IQ.SetIndicatorParameters("Period", AlphatrendPeriod1);

AlphaTrend_IQ.SetIndicatorParameters("Momentum", AlphatrendMomentum1); RegisterUserIndicator(AlphaTrend_IQ, Symbol1, SymbolPeriod1, OHLCType.Close, 5);

 

SendOrderSequential(true, Side.All);

WorkWithPermanentSignal(true);

 

//Alttaki fonksiyon açıldıktan sonra parametre olarak verilen saniyede bir OnTimer fonksiyonu tetiklenir.

// SetTimerInterval(3600);

 

//Alttaki fonksiyon ile tanımlanan sembol ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.

//AddNewsSymbol(Symbol);

 

//Alttaki fonksiyon ile tanımlanan anahtar kelime ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.

//AddNewsKeyword("KAP");

}

 

/// <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 (CrossBelow(AlphaTrend_IQ, AlphaTrend_IQ, 0, 1) && LastOrderSide.Obj != Side.Buy)

{

if (LastOrderSide.Obj == Side.All && AcigaSatisYapilsin)

{

SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy);

Debug("Alış Emri Gönderildi");

}else

{

SendMarketOrder(Symbol1, OrderQuantity1 * 2, OrderSide.Buy, includeAfterSession:false);

Debug("Alış Emri Gönderildi");

}

}

if (CrossAbove(AlphaTrend_IQ, AlphaTrend_IQ, 0, 1) && LastOrderSide.Obj != Side.Sell)

{

if (LastOrderSide.Obj == Side.All && AcigaSatisYapilsin)

{

SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Sell);

Debug("Satış Emri Gönderildi");

}else

{

SendMarketOrder(Symbol1, OrderQuantity1 * 2, OrderSide.Sell, includeAfterSession:false);

Debug("Satış Emri Gönderildi");

}

}

 

}

 

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

{

}

 

/// <summary>

/// Strateji durdurulduğunda bu fonksiyon tetiklenir.

/// </summary>

public override void OnStopped()

{

}

}

public class EmbeddedCustom54426694591230893994023139917079371111414384358

{

 

public enum Momentum

{

MFI, RSI

}

 

//Ilk parametre indikatörün adı, sınıfın adıyla aynı olmalıdır.

//Ikinci parametre indikatörün Dataserisinin üzerine mi yeni pencereye mi ekleneceğini belirtir. Yeni pencere için ->IndicatorDrawingArea.NewWindow , Data Serisi için IndicatorDrawingArea.OnDataSeries

[IndicatorInformationAttribute("AlphaTrend_IQ", IndicatorDrawingArea.OnDataSeries)]

//Indikatörün çizgilerinin isimleri

[IndicatorLineInformationAttribute(new []

{

"PrevAT(0,1,2)", "AlphaTrend_IQ(0,1,2)"

})]

 

public class AlphaTrend_IQ : MatriksIndicator

{

 

//Indicator opsiyon panelinde değerleri değiştirebildiğimiz parametreler. Int, Bool, Decimal ve Enum değerleri alabilir.Tüm değişken tiplerini DefaultValue ile tanımlarız.

[DefaultValue(1)]

public decimal Coeff

{

get; set;

}

[DefaultValue(14)]

public int Period

{

get; set;

}

[DefaultValue(Momentum.MFI)]

public Momentum Momentum

{

get; set;

}

 

 

MFI mfi;

 

RSI rsi;

 

ATR atr;

public sealed override void OnInit()

{

mfi = MFIIndicator(Symbol, SymbolPeriod, Period);

 

rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period);

 

atr = ATRIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period);

 

}

 

/// <summary>

/// Seçilen sembolün bardata'ları güncellendikçe bu fonksiyon tetiklenir.

/// </summary>

/// <param name="currentBar">Güncellenen bardata'nın indexteki sırası</param>

/// <param name="inputValue">Seçilen OHLC tipine göre gelen bardata'nın o anki değeri</param>

/// <param name="barDateTime">Bardata'ya gelen güncelleme zamanı</param>

public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)

{

var L = Instrument.SymbolBarData.Low[currentBar];

var H = Instrument.SymbolBarData.High[currentBar];

if (currentBar < Period)

{

//SetLine fonksiyonu indikatördeki noktaları kuran fonksiyondur

//Ilk paramatre indicatordeki hangi çizginin güncelleneceği bilgisidir.

//Ikinci parametre güncellenecek çizginin hangi indexinin güncelleneceği bilgisidir.

//Ucüncü parametre güncellenecek çizginin indexinin alacağı değerdir.

SetLine(0, currentBar, 0);

SetLine(1, currentBar, 0);

return ;

}

 

var upT = L - atr.Value[0][CurrentIndex] * Coeff;

var downT = H + atr.Value[0][CurrentIndex] * Coeff;

decimal mom = 0;

switch (Momentum)

{

case Momentum.MFI:

mom = mfi.Value[0][CurrentIndex];

break;

case Momentum.RSI:

mom = rsi.Value[0][CurrentIndex];

break;

}

var PREV = Value[1][currentBar -1];

var AlphaTrend_IQ = mom>50? (upT<PREV? PREV:upT) :(downT>PREV? PREV:downT);

SetLine(0, currentBar, Value[1][currentBar -2]);

SetLine(1, currentBar, AlphaTrend_IQ);

 

}

}

 

 

 

}

}
Algoritmik Trading kategorisinde (12 puan) tarafından | 682 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

Emir gönderilirken bizim tarafta hiçbir kontrol yapılmaksızın arcı kurumlara iletilir dönen uyarılar aracı kurumunuzdan gelmektedir.

Binance bakiyenizle ilgili uyarı veriyorsa emir adedi kadar alış yapabilecek bakiyenizin olup olmadıını kontrol edebilirsiniz. bekleyende emir var mı onları kontrol etmeniz gerekir kod taraında bir sorun yok.

ayrıca alphatrend indikatörünün gömülü olan versiyonu var ve bu versiyona göre yazılmış stratejisine algo kütüphanesinde ulaşabilirsiniz.

https://www.algokutuphanesi.com/Sistem/Detay/MatriksIq/AlphaTrendVadeliStratejisi

(15,892 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.



8,639 soru
8,593 cevap
4,826 yorum
19,840 kullanıcı