QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE

Программирование

QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE.
Ticaret robotları , program koduna benzer şekilde belirli bir dilde yazılabilir. QPILE bunlardan biri, bu makale bu dili ele alacak, QPILE ve
LUA dillerini karşılaştıracak ve ayrıca bu dilde robot örnekleri verecektir.

QPILE hakkında genel bilgiler

QPILE, QUIK Programmable Interface ve Logic Environment anlamına gelen bir kısaltmadır.

Bu, QUIK iş istasyonu tarafından yorumlanan bir dizi komuttur. Esas olarak menkul kıymet portföylerinin fiyatını hesaplamak için kullanılır. Dil ayrıca şunlar için kullanılır:

  • komisyoncu masaüstünde ve portföylerinde müşterilerin varlıklarının fiyatlarının dinamik olarak yeniden hesaplanması. İkinci durumda, toplam fiyatları da yeniden hesaplanır;
  • marj kredisi için kendi algoritmalarını ve verilerini kullanarak eksik göstergeleri bulmak;
  • doğru ticaret stratejisini geliştirmek.

Dil, tablonun yapısını tanımlar: sütunların ve satırların atanması, formüller. İkincisinde, matematiksel işlemler, değişkenler, diğer tablolardan alınan veriler hesaplama için kullanılabilir. QUIK sunucusundan veya kullanıcının diskinden yüklenen program kodu, formüllerdeki değerleri hesaplayan dil yorumlayıcısı tarafından işlenir. Bir programın tabloları bir veri kaynağına sahiptir, ancak hesaplamalar tekrarlanmaz ve sistemin verimliliğini etkilemez. QUIK tablolarıyla çalışırken, QPILE üzerindeki tabloların standart işlevleri vardır. İşyerindeki QUIK, bir QPILE kod hata ayıklayıcı ile donatılmıştır. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Bu dil, belirli bir yapıya sahip yeni tabloları tanımlamanıza, belirli değerlere sahip hücreleri vurgulamanıza, alanları matematiksel ve mantıksal ifadelere dayalı olarak hesaplamanıza olanak tanır. Kullanıcı, sesli sinyal veya metin mesajı şeklinde bildirimler alacaktır. QPILE üzerindeki tablolar ODBC ve DDE sunucusu aracılığıyla düzenlenebilir, yazdırılabilir, kopyalanabilir, dışa aktarılabilir. İlk veriler QUIK tablolarından alınmıştır:

  • icra ve kişisel olmayan işlemler dahil;
  • tezgah üstü işlemler için durdurma emirleri dahil emirler ve emirler – uzlaşma anlaşmalarındaki işlemler için raporlar;
  • “müşteri portföyü”, “al/sat”
  • Katılımcının para, ticaret hesapları, enstrüman ile pozisyonlarından elde edilen veriler.

QPILE tabanlı tablolar, içerik menüsü aracılığıyla bir metin dosyasına kopyalanamaz ve teknik analiz sistemlerine aktarılamaz ve bunlara dayalı grafikler geliştirilemez. QPILE tabanlı tablolar filtrelenemez veya sıralanamaz.

Bir masa ile çalışmak

Program kodunu yüklemek için hizmetler menüsünü ve ardından QPILE komut dosyalarını seçmeniz gerekir. Ctrl+F11 kombinasyonunu da kullanabilirsiniz. “Ekle” ye tıklamanız ve istediğiniz dosyayı seçmeniz gerekiyor. Bir .qpl uzantısına sahiptir ve adı Kullanılabilir Komut Dosyaları listesinde görünecektir.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE Programda bir hata varsa, sistem “Mesaj Penceresi”nde hatalı dosyanın adını ve hatanın olduğu satır numarasını içeren bir bildirim yapacaktır. Dosyada herhangi bir hata bulunmazsa, alanlarda aşağıdaki veriler gösterilecektir:

  • Tablo ismi;
  • sütun ve istemci sayısı;
  • tanımlayıcıların ve müşterilerin listesi;
  • parametre listesi ve dosyanın kaynak kodu.

QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE “Yerel olarak indir” düğmesi, tabloyu bir dosyadan almanızı sağlar ve “Sunucuya yükle”, programı tüm kullanıcıların erişebilmesi için sunucuya gönderir. Bir tablo oluşturmak için Tablo Oluştur’a tıklayın. “Mevcut komut dosyaları”nda, yürütmeniz gereken programı seçin, “İstemci Filtresi” aracılığıyla satır sayısını ayarlayın, gerekli sütunları ve bunların sırasını tanımlayın.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE Hesaplamayı duraklatma ve sürdürme, hesaplamayı yeniden başlatma ve hata ayıklama modunda, açıklamayı bir dosyaya kaydetme, formülü gösterme ve komut dosyası parametreleri bağlam menüsünde mevcuttur.

QPILE yapıları

Veri tipleri

  • Dize – dize.
  • Double, kayan noktalı bir sayıdır.
  • Koleksiyon – bir koleksiyon.
  • Harita – bir ilişkisel dizi – anahtarla bilgi almanıza izin veren bir çift dizisi.

İfade

Toplama, çıkarma, çarpma, bölme aritmetik işlemleri uygulanır. “Ve”, “veya”, eşittir, daha fazla, daha az, eşitsizlikler, koşullu yapı “eğer … o zaman …” mantıksal ifadeleri de kullanılır.

Fonksiyonlar

Fonksiyonlar programın herhangi bir yerinde bulunabilir ve farklı adlara sahip olabilir. Tabloların ve parametrelerin, ilişkisel dizilerin, tabloların bir listesinin ve diğer görevlerin değerlerini elde etmek için toplam 18 grup matematiksel fonksiyon ve fonksiyon mevcuttur. Birinci sınıf:

  1. Bağımsız değişkenin sinüs, kosinüs, tanjant, kotanjant değerini döndürmenize, bağımsız değişkenin üssünü hesaplamanıza, rastgele bir sayı oluşturmanıza vb. izin veren matematiksel işlevler .
  2. Genel komutlar : NEW_GLOBAL global bir değişken başlatmak için ve MESSAGE mesajları açmak için.

Çalışmak için işlevler:

  • Nesne koleksiyonları (Koleksiyon) . Yeni bir koleksiyon oluşturmanıza, gerekli sayıda öğeyi döndürmenize, istediğiniz değerleri değiştirmenize veya eklemenize izin verir.
  • İlişkili Diziler (MAP) . Diziyi oluşturmaya ve yönetmeye yardımcı olun.
  • Dosyalar – metin dosyalarıyla çalışma, programın günlük kaydını tutma. Dosya adı, ona giden yolu içerebilir.
  • Dizeler .
  • Grafikler _ Mum verilerine erişmek için GET_CANDLE ve ilişkisel bir dizi döndürmek için GET_CANDLE EX işlevleri.
  • Uygulamalar _ Emirlerin oluşturulması ve ticaret sistemine gönderilmesi.
  • Etiketler . Yapıları ve kurulumları çizelgede. Bir veya tüm etiketleri ekleme, silme, belirli bir etiket için parametreleri alma ve ayarlama.

Şunlar için de işlevler vardır:

  1. Rastgele QUIK tablolarının satırlarına ve mevcut parametre listelerine erişmek için . İşyeri tablosu verilerine erişim. Bunlar, MAP döndürmek için GET_ITEM ve giriş sayısını döndürmek için GET_NUMBER_OF içerir.
  2. Programlanabilir bir tablo ile çalışmak için . Bu komutlar OWN tablosunda çalışır. Önceki paragraftaki standart işlevler ve bu işlevler tarafından okunabilir. Bu grup, indeksli bir satır ekleme, değiştirme ve silme ve KENDİ tablosunu tamamen temizleme komutlarını içerir.

Değerleri almak için şunu kullanın:

  1. Cari işlem tabloları . GET_PARAM (_EX) komutlarını kullanarak değişim bilgisi parametrelerinin alınması.
  2. Alıntı pencereleri . Enstrüman alıntılarının değerlerinin alınması.
  3. Enstrümanlara ve paraya göre pozisyon tabloları . Bir müşteri, firma, enstrüman, depo hesabı hakkında kod ile veri elde etme.

Servis fonksiyonları – mevcut işlem seansının tarihini, ilişkisel serileri, mevcut tarih ve saati döndürme, bağlantı durumunu belirleme, hesaplama modunu kesme.

Hata ayıklama programları

Programın çalışması üzerinde adım adım kontrol “Hata Ayıklama” penceresinde gerçekleştirilir. “Hata ayıklama modunda hesaplamayı başlat” bağlam menüsünden açılır. Breakpoint() komutu ile de açılabilir ve program satırı kırmızı ile vurgulanacaktır. Pencere, program kodu ve değişken değerleri olan alanlar içerir. Pencerenin altında “Sonraki adım”, “Yürütmeye devam et”, “Hesaplamayı durdur” düğmeleri bulunur. F5’e basmak programın yürütülmesine devam edecek, Shift + F5 kombinasyonu hata ayıklamayı durduracak, F10 tuşu bir sonraki satıra yönlendirecektir.

QPILE veya LUA?

LUA, ticaret robotları oluşturmak için yeni bir programlama dilidir. QPILE gibi, QUIK terminalinde uygulanır. https://articles.opexflow.com/programming/lua.htm Ticaret için ticaret robotlarının geliştirilmesine adanmış bir site, LUA dilinin QPILE’a göre avantajlarını gösterir. Böylece, geliştirici araçları ve nesne yönelimli programlama mekanizmaları ile donatılmış, derlenmemiş bir komut dosyası ve bayt kodu olarak işlev görebilir. Diğer programlama dillerinde yazılan nesneler LUA programlarına bağlanabilir. LUA, metatablolar dahil 8 veri türü sağlar. LUA dili çok iş parçacıklı, hızlıdır ve işlemler ile terminal olayları eşzamansızdır. LUA, QPILE’den daha yaygındır ve bunun için birçok uzantı yazılmıştır.

QPILE dili artık kullanımdan kaldırılmıştır. Forumlardaki uzmanlar LUA’yı kullanmanızı tavsiye ediyor. Faydalı ve etkili programlar olmasına rağmen halen kullanılmaktadır.

Ancak, QPILE dili LUA’ya kıyasla basittir, bu nedenle programlama konusunda deneyiminiz yoksa QPILE’ı seçmek daha iyidir. Bu dilde, karmaşık hesaplamalar yapmanız gerekmiyorsa basit bir robot yazabilirsiniz.

QPILE’de bir ticaret robotu nasıl oluşturulur?

Bir ticaret danışmanı oluşturmak için aşağıdaki programlara ihtiyacınız olacak:

  1. Quik.
  2. Notepad++ kod düzenleyicisi.
  3. QPILE Kılavuzu.
  4. Notepad++’da kod algılama için XML eklentisi.

Bu programları indirin ve kurun. userDefineLang.xml dosyasını C:\Users\User\ AppData\Roaming\Notepad++\ yoluna yerleştirerek dil sözdizimini etkinleştirin
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE İlk olarak, aşağıdaki ticaret stratejisini oluşturalım. Komut dosyası, her dakika son birkaç mum için Hi ve Low’u hesaplamalı, enstrümanın mevcut fiyatını kontrol etmelidir. Enstrümanın fiyatı dönem için maksimum veya minimum değere ulaşırsa gerekli yönde bir pozisyon açılır. Kısa bir sinyal alındığında, uzun pozisyon otomatik olarak kapatılır. Robot GAZP aracını kullanır, zaman çerçevesi 1 dakikaya ayarlanır. Yüksek-düşük ölçüm derinliği 5 mum olarak ayarlanmıştır. Uzun girmek için, bir kural belirlenir ve dönem için maksimum değerin mevcut fiyatının kesişimi. Mevcut fiyat bu 5 mum için minimum değeri geçerse robot Kısa’ya girer. Temel ayarlar ve sunucu tarih ve saati ile Notepad++ ile bir kod bloğu yazın. Bu kod aşağıdaki resimde gösterilmiştir.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE İlk 4 kod satırı program başlığını oluşturur. 6. ve 44. satırlar arasında robotun içeriğini içeren programın gövdesi bulunur. 7 – 12 arasındaki satırlar, cihaz, grup ve müşteri kodlarını, MICEX üzerindeki hesap numarasını içeren kullanıcı ayarlarını içerir. Bu değerler program yürütme sırasında değişmez. 13 – 16 arasındaki satırlar değişkenlerin başlangıç ​​değerleridir. Her yineleme geçişinde sıfırlanırlar. 17 – 21 satırları, sunucu tarih ve saatini kullanmak için bir gösterge içerir. Bu veriler DATETIME işlevine iletilir ve metin biçimine dönüştürülür. 22 – 29. satırlar alınan verileri tabloya gönderir. Kodun kaydedilmesi ve qpl uzantısının belirtilmesi gerekir.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE Ctrl+F10 tuşlarına basarak ve oluşturulan qpl dosyasını seçerek programı QUIK’te açın. “Portföylerle Çalış” penceresini açmak için Ctrl+F11 kombinasyonunu kullanın ve portföy hesaplama süresini 5 dakikaya ayarlayın. Tabloda görüntülenecek sütunları ayarlamak için Ctrl+F12 tuşlarına basın. Resim robotun çalışmasının sonucunu göstermektedir.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE Programımıza birkaç fonksiyon ve koşul daha ekleyelim.
“Kullanıcı ayarları” bloğu, son N çubuğu alma işlevinde kullanılacak SAYI ve ARALIK değişkenleri ile desteklenir. DATETIME işlevi, sunucu tarih ve saatini ayarlar ve geçerli tarih ve saat işlevleri CURDATE ve CURTIME bundan çağrılır. Geçerli saat, 24. satırdaki bir sayıya dönüştürülür. 26. satır, algoritmanın 10:00:01 ile 18:40:00 UTC arasında çalışacağı zamanı ayarlar.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE Çoğu zaman, göstergeler, osilatörler, istatistiksel hesaplamalar, grafiğin son N mumuyla hesaplanır. QPILE’nin N dönem önceki mum sayısını bu şekilde toplama işlevi yoktur, ancak grafikteki mumlara tarih ve saate göre metin biçiminde erişen bir GET_CANDLE işlevi vardır. Kodumuz, son N çubukları OHLC() alma işlevini içerir. KOLEKSİYON listesindeki son mumların parametreleriyle bir koleksiyon oluşturur. Program INTERVAL değerini kontrol eder ve 0…60 aralığında değilse, değerin izin verilen aralığa karşılık gelmediğine dair bir mesaj görüntülenir. 88. satırda mumlarla bir MAP koleksiyonu oluşturulur. Yeni mumdan eski muma ARALIK adımıyla grafiği gerekli derinliğe kadar sorgulayan bir FOR döngüsü. 90. satırda, döngü bildirildikten sonra robot bir aralık geri gider. GET_CANDLE ile bir mum aldığınızda, INSERT_COLLECTION_TEAM işlevini kullanarak BARLIST koleksiyonuna yerleştirin. OHLC() komutunun çalışmasının bir sonucu olarak, BARLIST, alet tablosundan NUMBER miktarındaki son mumlarla doldurulur. Koleksiyondaki öğelerin sayısı, GET_COLLECTION_COUNT() komutu tarafından istenir ve BARCOUNT değişkeni tarafından rapor edilir. Sunucu tarih, saat, INSTRUMENT ve BARCOUNT değişkenlerinin değerleri OUTPUT’ta SET_VALUE() fonksiyonu ile raporlanır. Bu dizi, CREATE_MAP() komutuyla oluşturulur. Veriler, aşağıdaki fotoğrafta görülebilen özel tabloya düşer. INSTRUMENT ve BARCOUNT değişkenlerinin değerleri OUTPUT’ta SET_VALUE() işlevi tarafından raporlanır. Bu dizi, CREATE_MAP() komutuyla oluşturulur. Veriler, aşağıdaki fotoğrafta görülebilen özel tabloya düşer. INSTRUMENT ve BARCOUNT değişkenlerinin değerleri OUTPUT’ta SET_VALUE() işlevi tarafından raporlanır. Bu dizi, CREATE_MAP() komutuyla oluşturulur. Veriler, aşağıdaki fotoğrafta görülebilen özel tabloya düşer.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE

QPILE’de ticaret robotları – hazır çözümler

Hareketli ortalama robot

Demo robotu gerçek ticaret için uygun değil.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE Robot 5 parametre içerir. TARİH, SAAT, FİYAT tanımlayıcı değerleri seviye 30 olarak ayarlanmıştır. HAREKET ve TP tanımlayıcıları sıfır hassasiyete ayarlanmıştır. QPILE altında yazılan hareketli ortalamadaki robot kodu:

N. Moroshkin konum hesaplayıcısı

Mevcut talep ve teklif fiyatlarında uzun ve kısa pozisyonlar için izin verilen maksimum düşüş seviyelerini ve hedefini hesaplamak için bir program. Seviyeler, pozisyon giriş hacminin 2 değeri için hesaplanır. Robot, çubuğun yukarı yönünde pozisyon açma hesaplaması ile açılış fiyatından tek adımda stop emri atarken izin verilen pozisyon hacmini bulur. Bulunan seviyeler, daha sonra fiyat tablosuna yansıtılan terminal penceresine girilir. İşlemler, belirli bir araç için sabittir. Bir pozisyon açılırsa, robot parametrelerini hesaplamaya başlar. Pozisyon değişikliğine bağlı olarak, atanan emirler ayarlanır.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE

Hacim filtresi

Mum hacminin aritmetik ortalamasını hesaplamak ve bunu X katsayısı ile ortalama ürünle karşılaştırmak için bir robot portföyü Seçilen bir zaman diliminde çizilen grafiklerle doğru şekilde çalışır.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE

Seçenekler Yunanlılar

Seçeneklerin “Yunanlılarını” hesaplamak ve görüntülemek için portföy. Black-Showers yönteminden farklıdır.
QUIK için ticaret robotlarını programlamak için algoritmik dil QPILE

QUIK için TRIX ticaret robotu

Program TRIX Göstergesine dayanmaktadır. Gösterge, belirtilen seviye olan sıfır çizgisinin üzerine kapandığında robot Uzun pozisyon alır. Pozisyon Kâr Al, Zarar Durdur veya takip eden stop ile kapatılır.

M4 Önişlemci

QPILE ve Lua ile çalışma programı. Yürütülebilir dosyalar, belgeler ve düzenli ifade ayrıştırma ile DLL dosyaları içeren arşivleri içerir. Programı kullanmak için yürütülebilir dosyaları açmanız ve regexp2’yi C:\Windows yoluna yerleştirmeniz gerekir. QUIK için QPILE üzerine dersler: https://youtu.be/vMTXwDUujpI Quik terminalinde QPILE üzerine bir komut dosyası yükleme: https://youtu.be/0B7qL8Svh7I Github’da yerleşik QPILE algoritmik dilinin kullanımını açıklayan bir bölüm. Bağlantıda bulunan QUIK sistem iş istasyonu – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE eski bir dildir, ancak oldukça basit ve acemi tüccarlar için bile erişilebilir. Ticaret robotları ve uzun süredir kendini kanıtlamış programlar üzerinde çalışmaya devam ediyor. Ancak, daha karmaşık görevler için LUA kullanmak daha iyidir.

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    Yanıtla