0 beğenilme 0 beğenilmeme
818 kez görüntülendi
Bitmex stratejileri içerisinde Shortlama üzerine kodlama çalışmaktayım. Belirli koşulum sağlandığında robotumun sadece 'short' pozisyon açıp belirli Buy koşulum sağlandığında ise 'long' açmadan bu pozisyonu sadece kapatmasını istiyorum. Basitçe al satı, sat ala dönüştürmek istiyorum.

Hazırlamış olduğunuz örnek stratejide:
//'' Ilk emir gonderildiginde isaretlenir ve daha sonraki emirler ilk emrin 2 kati olarak gonderilir. Boylece pozisyon 1/0 seklinde degil, 1/-1 seklinde alinabilmektedir (LONG/NEUTRAL yerine LONG/SHORT)''

Bu dilde anlatacak olursam sanırım yapmak istediğim sadece (SHORT/NEUTRAL)
 

Sanırım bunu yapmak için içinde First Run 0 1 lerin olduğu bir kod kullanmayacağım. Aklıma gelen şey SendOrderSequential(true); set edip.

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

bu bölümde bulunan Buy ve Send if conditionların yerlerini değiştirmek. Doğru mudur?
Algoritmik Trading kategorisinde (289 puan) tarafından
tarafından düzenlendi | 818 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
En İyi Cevap
Merhaba,

Diyelimki  stratejiniz 100 short pozisyon açarak başlıyor ve nötr kalmak istediğinizde bu 100 pozisyonu kapatıyor. Bu durumda kodunuz şöyle olmalı:

 

Oninit()
{

......
SendOrderSequential(false);
.......

}

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{

    if(short yapma koşulu buraya yazılır)
    {
        SendMarketOrder(Symbol, 100, OrderSide.Sell);
        Debug("Satış Emri Gönderildi");
    }
    else if(Nört olma koşulu buraya yazılır)
    {
        SendMarketOrder(Symbol, 100, OrderSide.Buy);
        Debug("Alış Emri Gönderildi. böylelikle short pozisyonlar kapanacak.");
    }

}
(307 puan) tarafından
tarafından seçilmiş
0 0
Gene bir soru ile geri döndüm:)

Çünkü kodları yazıp backtestleri yaptığım zaman anladım ki, emirler sıralı gitmiyor. Koşullar sağlandığı zaman ilk satış ile başlıyor evet ama satış-alış-alış-satış-alış... şeklinde şeyler yapabiliyor. Örneğin 11 alış 8 satış yaptı birinde. Yani 2 tane alış yapabliyor üstüste. Ben satış ile başlayıp sıralı bir şekilde satış-alış-satış-alış... şeklinde gitmesini istiyorum.

Yani satış ile başla evet ama alış yaptıktan sonra satış yapmadıysan alışı kesinlikle yapma demek istiyorum. Emirler sıralı gitmeli yani.

Sanırım bunun için SendOrderSequential (true) set edilmeli ama ilk olarak Satışla başlayıp sıralı gitmesi için ne yapılmalı?
1 0
Merhaba,

 

satış ile başla evet ama alış yaptıktan sonra satış yapmadıysan alışı kesinlikle yapma

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{

    if(short_yapma_Kosulu == true && HiçShortYadaLongPosisyonYok == true)
    {
        SendMarketOrder(Symbol, 100, OrderSide.Sell);
        Debug("Satış Emri Gönderildi");
    }
    else if(Nört_olma_kosulu == true && AcıkPoziyonunYonu == Short && AcıkPozisyonVar == true)
    {
        SendMarketOrder(Symbol, 100, OrderSide.Buy);
        Debug("Alış Emri Gönderildi. böylelikle short pozisyonlar kapanacak.");
    }

}

 

şeklinde bir kod yazmalısınız. if koşullarının içerisine ne yazdığınız çok önemli. Yukarıda yazdığım if koşullarını derleyici kabul etmez. Kendi if koşullarınızı doğru yazabilmeniz için yukarda yazdığım koşullardan esinlenebilirsiniz.
0 0
Mantığı çok iyi anladım. Public class 'Parametre Tanımları' kısmına öncelikle

HicPozisyonYok

AcikPozisyonunYonu

AcikPozisyonVar

Short

gibi eylemleri tanıtmalıyım

Fakat tüm MatriksIQ örnek stratejilerine tek tek baktım, public class opsiyonu ile ilgili yardımcı doküman pdfleri okudum. Yağmak istediğim ile ilgili bulabildiğim tek şey bu kod:

        [Parameter(false)]
        public bool AcigaSatis;

Yani pozisyonun olup olmadığı, pozisyonun yönü, short terimi vb. basit eylemleri derleyiciye bunları daha sonra ilişkisel ve mantıksal operatörler ile birbirlerine bağlamak için nasıl öğretebilirim?
0 0
https://destek.matriksdata.com/?qa=433/hicpozisyonyok-pozisyon-olmad%C4%B1%C4%9F%C4%B1nda-fonksiyon-yazabilirim

isimli bir başlık açtım. Ezbere bilmiyorum, vaktim olduğunda cevabı dolduracağım veya belki benden önce cevap veren olur :)

Diğer koşullar için de böyle küçük başlıklar açarsanız yanıt yazması daha kolay olur :)
0 0
Harikasınız:)

Ben de diğerlerini aynı şekilde ayrı başlıklar halinde açıyorum.
7,503 soru
7,507 cevap
4,403 yorum
8,665 kullanıcı