0 beğenilme 0 beğenilmeme
16 kez görüntülendi
30 dakikalık kapanış fiyatinin yüzde 1,25 altına ve yüzde 1.25 üstüne otomatik al sat robotu yapmak istiyorum
önce Algoritmik Trading kategorisinde (12 puan) tarafından | 16 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

aşağıdaki kodu inceleyebilirsiniz.

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;
using Matriks.Data.Tick;
using Matriks.Enumeration;
using Matriks.IntermediaryInstitutionAnalysis.Enums;
using Newtonsoft.Json;
 
namespace Matriks.Lean.Algotrader
{
    public class ai3 : MatriksAlgo
    {
        [SymbolParameter("GARAN")]
        public string Symbol;
 
        [Parameter(SymbolPeriod.Min30)]
        public SymbolPeriod SymbolPeriod;
 
        [Parameter(1)]
        public decimal BuyOrderQuantity;
 
        [Parameter(1)]
        public decimal SellOrderQuantity;
 
        public override void OnInit()
        {
            AddSymbol(Symbol, SymbolPeriod);
            WorkWithPermanentSignal(true);
            SendOrderSequential(true);
        }
 
        public override void OnDataUpdate(BarDataEventArgs barData)
        {
            var barDataModel = GetBarData();
            decimal currentClose = barDataModel.Close[barData.BarDataIndex];
            int previousIndex = barData.BarDataIndex - 1;
            if (previousIndex >= 0)
            {
                decimal previousClose = barDataModel.Close[previousIndex];
                decimal lowerThreshold = previousClose * (decimal)0.9875;  // %1.25 altı
                decimal upperThreshold = previousClose * (decimal)1.0125;  // %1.25 üstü
 
                if (currentClose < lowerThreshold)
                {
                    SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
                    Debug("Kapanış fiyatı %1.25 altına düştü - Alış emri gönderildi");
                }
                else if (currentClose > upperThreshold)
                {
                    SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
                    Debug("Kapanış fiyatı %1.25 üstüne çıktı - Satış emri gönderildi");
                }
            }
        }
 
        public override void OnStopped()
        {
        }
    }
}

 

önce (16,339 puan) tarafından
9,708 soru
9,668 cevap
5,195 yorum
48,590 kullanıcı