"Otomatik Alım Satım Sistemleri Oluşturmada Yeni Bir Yaklaşım Olarak Otomat Tabanlı Programlama" makalesi için tartışma - sayfa 3

 
Rorschach:

"3. Merak ettim ve gerçek kenelerin beyaz gürültüsünü duymak istedim ve WaveLab 6.0 yazılımını kullanarak bunu yapabildim."

Hee. Görünüşe göre böyle düşünen tek deli ben değilmişim))))) Elde ettiğim şey şu. Adobe Audience aracılığıyla yaptım.

Fiyatı nasıl normalleştirdiniz?

Her zamanki gibi, uzun kuyrukları keserek, 3*sko'nun ötesine geçen her şey bu değere getirilir.
 

Bir araba dolusu duygu

1) Bir sürü bukaf hiçbir şey...

2) Buna bakınca neden Mars'ta bizim değil de Amerikalıların olduğunu anlamaya başlıyorsunuz.

3) Gerisi hakkında sessiz kalmayı tercih ederim (sadece duygular için).

 

Makaleyi, özellikle de modern program geliştirme ve dokümantasyon uygulamalarını beğendim. İşte böyle.

Tabii ki, makalede en azından otomata yöntemine dayalı en basit Uzman Danışman gösterilmeliydi. Yoksa bir sonraki makale için mi planlanıyor?

Ve bence otomata yönteminin büyük bir sorunu var. Gerçek Uzman Danışmanlar için Durumu kesin olarak tanımlamak imkansızdır. Uzman Danışmanın durumu, kullanıcının bilgisayarındaki bazı dahili değişkenler ve sunucudaki pozisyonların durumu (mevcut oran, öz sermaye, emirlerin yerine getirilmesi) tarafından belirlenir. Dahili durum kesin olarak belirlenir, ancak sunucudaki pozisyonların durumu bilinmeyebilir, gecikmeli olarak bilinebilir, belirsiz bir durumda olabilir (bazı emirler ve talepler yerine getirilir ve bazıları yerine getirilmez ve nedenini kimse bilmez).

Ve danışmanın mevcut durumu bilinmediğinden, emirler ve istekler yerine getirilmediğinden, net bir otomat mantığı oluşturmak imkansızdır. Gerçekte, bu algoritmayı elde ederiz:

comp: Bana birkaç yüz avro al, sunucu.

sunucu: Siktir git comp, talepteki durakların yanlış.

comp: Neden yanlışlar?

sunucu: bu yüzden fiyat sıçradı.

comp: iyi, o zaman duraksız satın alın.

sunucu sessiz

comp: peki̇, ne satin aldiniz?

sunucu sessi̇z

Siktir git. Sekiz dakika kestirelim.

Sekiz dakika sonra müşteri: Nasıl gidiyor?

sunucu: Eurobucks aldım, ama alırken fiyat başka bir yere gitti.

Comp: Siktir et. Bir saat daha kestirelim.

Ve böyle devam eder.

 
evrim daireler çiziyor - (sonlu olmayan) otomatlara dönmenin zamanı geldi, o zaman Turing makineleri inşa edeceğiz.
 
Virty:

...

Ve bence otomata yönteminin büyük bir sorunu var. Gerçek Uzman Danışmanlar için Durumu kesin olarak tanımlamak imkansızdır. Uzman Danışmanın durumu, kullanıcının bilgisayarındaki bazı dahili değişkenler ve sunucudaki pozisyonların durumu (mevcut oran, öz sermaye, emirlerin yerine getirilmesi) tarafından belirlenir. Dahili durum kesin olarak belirlenir, ancak sunucudaki pozisyonların durumu bilinmeyebilir, gecikmeli olarak bilinebilir, belirsiz bir durumda olabilir (bazı emirler ve talepler yerine getirilir ve bazıları yerine getirilmez ve nedenini kimse bilmez).

EA'nın mevcut durumu bilinmediğinden, emirler ve talepler yerine getirilmediğinden, net bir otomat mantığı oluşturmak imkansızdır.

...

Bu yeni bir şey. Sadece HERHANGİ BİR (istisnasız) TS, TS durumlarının analizine ve net bir şekilde anlaşılmasına dayanır. En basit durumlar: bir emrin açılması/kapanması/değiştirilmesi için sinyallerin işlenmesi, vb. vb.

"EA'nın mevcut durumu açıkça bilinmiyorsa", o zaman kesinlikle bir EA değildir ve kesinlikle bir program değildir ve bir EA ile ilgili olarak "algoritma" kelimesinin üzeri çizilmeli ve sonsuza kadar unutulmalıdır.

 

Çok fazla duygu.

Pekala, tartışmayı pratik bir yöne çevirmeyi öneriyorum. Sonlu otomatlar teorisine dayanan somut bir algoritmayı analiz edelim. Güçlü ve zayıf yönlerini tartışalım. Ben kendim bu yöntemle yazmıyorum, ancak soruya ve algoritmalara biraz aşinayım, bu yüzden şimdi bu kontrolün genel prensibini çizeceğim:

//СХЕМА + ПСВЕДОКОД
enum eTradeState {NoTradeRegim, BuyRegim, SellRegim, WaitRegim};
eTradeState TradeState = eTradeState.NoTradeRegim;
int Trade()
{
   switch (TradeState)
   {
       case eTradeState.NoTradeRegim:
          NoTradeRegim();
          break;
       case eTradeState.WaitRegim:
          WaitRegim();
          break;
       case eTradeState.SellRegim:
          SellRegim();
          break;
       case eTradeState.BuyRegim:
          BuyRegim();
          break;
   }
}
//Burada Uzman Danışmanın ticarete başlayacağı koşulları açıklıyoruz. Örneğin
void NoTradeRgim()
{
   //Diğer sözde kodlar aşağıdadır. 
   if(CurrentDay == WorksDays && Market.Enable = true)
      TradeState = eTradeState.WaitRegim;
}
//Burada uzun veya kısa pozisyona girmek için sinyalleri yakalarız.
void WaitRegim()
{
   if(CheckForNoTrade() == true)
   {
      TradeState = eTradeState.NoTradeRegim;
   }
   if(CheckForBuy() == true)
   {
      BuyAtStop(...)
      TradeState = eTradeState.BuyRegim;
   }
   if(CheckForSell() == true)
   {
      SellAtStop(...);
      TradeState = eTradeState.SellRegim;
   }
}
//Bu fonksiyonda uzun bir anlaşmaya eşlik ediyoruz
void BuyRegim()
{
   //Buraya anlaşmanın hangi koşullar altında kapatıldığını veya stop loss veya diğer parametrelerin değiştirildiğini vb. yazın.
   if(StopLossChanged() == true)
      NewStop = ...;
   if(profit >= takeprofit)
   {
      CloseDeal(...);
      TradeState = eTradeState.WaitRegim;
   }

}
//Bu fonksiyonda kısa bir ticarete eşlik ediyoruz
void SellRegim()
{
   //Buraya anlaşmanın hangi koşullar altında kapatıldığını veya stop loss'unun hareket ettirildiğini vb. yazın.
   if(StopLossChanged() == true)
      NewStop = ...;
   if(profit >= takeprofit)
   {
      CloseDeal(...);
      TradeState = eTradeState.WaitRegim;
   }

}

Şematik olarak açıklanmıştır, ancak temel fikrin açık olduğunu düşünüyorum. Zamanın her anında Uzman Danışmanın yalnızca bir durumu vardır (piyasa dışı mod, sinyal bekleme modu, satın alma modu, satış modu). Her durumda, mevcut durumdan diğerine geçişin gerçekleşeceği belirli bir dizi eylem ve koşul vardır. Buradaki fikir, her bir durumu açıkça kontrol ettiğimiz ve bu nedenle iç mantığın kesinlikle yerelleştirildiği ve var olmayan veya zaten kapalı olan bir işlemi kapatmak gibi mantıksal hataların meydana gelemeyeceğidir.

Ben kendim bu teknikle yazmıyorum, tüm algoritmalar için uygun olmadığını düşünüyorum. Ancak yine de bazı görevleri klasik yaklaşımdan daha iyi çözüyor.

Uzmanlar bu konuda ne düşünüyor?

 
C-4:
...

Ben kendim bu teknikle yazmıyorum, tüm algoritmalar için uygun olmadığını düşünüyorum. Ama yine de bazı problemleri klasik yaklaşımdan daha iyi çözüyor.

Uzmanlar bu konuda ne düşünüyor?

Ve "klasik yaklaşım" ifadesiyle ne kastettiğinizi sorabilir miyim?

Çünkü herkesin kendine göre bir gerçeklik yansıması var.

 
Urain:

"Klasik yaklaşım" derken neyi kastettiğinizi sorabilir miyim?

Çünkü herkesin kendine göre bir gerçeklik yansıması vardır.

Yanlış söylemiş olmalıyım. Tabii ki herkes kendi tarzında yazıyor. Her adımda sistemin durumunun açıkça tanımlanmadığı çoğu yaklaşımı kastetmiştim. Sadece Uzman Danışmanın yürütülmesi sırasında değil, belirlenmesi gerekir. En basit örnek, bir blok OnTick () içinde yazılan koddur. Hiçbir mod analiz edilmemiştir. Bir çözüm seçimi, blok dallanma if(...) temelinde yapılır.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
C-4:
Her adımdaki sistem durumunun açıkça tanımlanmadığı çoğu yaklaşıma atıfta bulunuyordum. EA'nın yürütülmesi sırasında belirlenmesi gerekir.

Durum "açıkça tanımlanmamışsa", "açıkça tanımlanmamış" olanı nasıl tanımlayabilirsiniz? Emirlerle/pozisyonlarla çalışma durumunda, EA'nın her adımda hangi durumda olduğunu anlaması gerekli değil midir? Yoksa EA her tikte "tanımlanmamış bir durumda" mı? Her tikte ne yapacağını bilmeyen ne tür bir EA'dır?

 

Makale, bir anahtar olması dışında konuyu hiç kapsamıyor. Var olup olmaması önemli değil, if'ler ile değiştirilebilir.

Bir keresinde bir EA yazıyordum, emirleri olan çok karmaşık bir sistem vardı. Ciddi bir şekilde analiz etmek ve durumların bir listesini yapmak zorunda kaldım: emir yok, bir bekleyen, bir piyasa emri, iki bekleyen emir, bir bekleyen ve bir piyasa emri vb. Ancak bu şekilde üstesinden gelebildim. Ancak bunun çok evrensel, hızlı bir şekilde yeniden programlanabilir bir şey olduğu ortaya çıktı. Bir makale için oldukça iyi bir konu.