asadıda yazdığım kodun 3 kosulu acığa satış 4 kosulu asığa satı kapat seklinde duzeltip kodu tekrar yazar mısınız(btc de acığa satıs cıkmadığı için kosul 3 ve 4 satış olarak secmek zorunda kaldım) . 1 kosulum alış .2 kosulumum aldığımı satmak 3 kosulum. asığa satış 4 kosulum acığa satı kapat olucak. teşekkürler  

using System;

using System.Collections.Generic;

using System.Linq;

using Matriks;

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 dene : 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("BTCDOM_USDT_FBIN")]

public string Symbol1;

 

[SymbolParameter("BTC_USDT_BIN")]

public string Symbol2;

 

 

[Parameter(SymbolPeriod.Min10)]

public SymbolPeriod SymbolPeriod1;

 

 

 

[Parameter(10)]

public int PmaxindicatorAtrPeriod1;

 

[Parameter(10)]

public int PmaxindicatorMovPeriod1;

 

[Parameter(3)]

public decimal PmaxindicatorCoeff1;

 

[Parameter(MovMethod.E)]

public MovMethod PmaxindicatorMovMethod1;

 

[Parameter(10)]

public int PmaxindicatorAtrPeriod2;

 

[Parameter(10)]

public int PmaxindicatorMovPeriod2;

 

[Parameter(3)]

public decimal PmaxindicatorCoeff2;

 

[Parameter(MovMethod.E)]

public MovMethod PmaxindicatorMovMethod2;

 

[Parameter(1)]

public decimal OrderQuantity1;

 

[Parameter(0)]

public decimal OrderPrice1;

 

[Parameter(1)]

public decimal OrderQuantity2;

 

[Parameter(1)]

public decimal OrderQuantity3;

 

[Parameter(1)]

public decimal OrderQuantity4;

 

[Parameter(0)]

public decimal OrderPrice4;

 

PMaxIndicator pmaxIndicator;

PMaxIndicator pmaxIndicator2;

 

 

 

public override void OnInit()

{

 

pmaxIndicator = PMaxIndicators(Symbol1, SymbolPeriod1, PmaxindicatorAtrPeriod1, PmaxindicatorMovPeriod1, PmaxindicatorCoeff1, PmaxindicatorMovMethod1);

pmaxIndicator2 = PMaxIndicators(Symbol2, SymbolPeriod1, PmaxindicatorAtrPeriod2, PmaxindicatorMovPeriod2, PmaxindicatorCoeff2, PmaxindicatorMovMethod2);

 

 

SendOrderSequential(true, Side.Sell);

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 (CrossAbove(pmaxIndicator2, pmaxIndicator2, 1, 0) && pmaxIndicator.Value[1][pmaxIndicator.CurrentIndex] > pmaxIndicator.Value[0][pmaxIndicator.CurrentIndex])

{

SendLimitOrder(Symbol2, OrderQuantity1, OrderSide.Buy, OrderPrice1, includeAfterSession:false);

}

if (CrossBelow(pmaxIndicator2, pmaxIndicator2, 1, 0))

{

SendMarketOrder(Symbol2, OrderQuantity2, OrderSide.Sell, includeAfterSession:false);

}

if (CrossBelow(pmaxIndicator2, pmaxIndicator2, 1, 0) && pmaxIndicator.Value[1][pmaxIndicator.CurrentIndex] < pmaxIndicator.Value[0][pmaxIndicator.CurrentIndex])

{

SendMarketOrder(Symbol2, OrderQuantity3, OrderSide.Sell, includeAfterSession:false);

}

if (CrossAbove(pmaxIndicator2, pmaxIndicator2, 1, 0))

{

SendLimitOrder(Symbol2, OrderQuantity4, OrderSide.Sell, OrderPrice4, includeAfterSession:false);

}

 

}

 

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

{

}

}

}