Bir sınıf olarak satın al stop Sat stop Grid Expert Advisor - sayfa 2

 

Yavaş yavaş işlevsellik ekliyorum. Başlangıçta pozisyon ve bekleyen emir yoksa bekleyen stop emirleri verilir. Sürüm açıklaması, sınıf dosyasında sabitlenmiştir:

 //+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//+------------------------------------------------------------------+

ds

 

İlginç - CBuyStopSellStopGrid::RefreshRates(void) işlevinde, teklif teklifi sıfır değerleri için kontrol edilir.

Bu gerçekçi bir durum mu?

Genel olarak, daha fazla yorum yok, kod oldukça şeffaf ve net.

 
George Merts :

İlginç - CBuyStopSellStopGrid::RefreshRates(void) işlevinde, teklif teklifi sıfır değerleri için kontrol edilir.

Bu gerçekçi bir durum mu?

Genel olarak, daha fazla yorum yok, kod oldukça şeffaf ve net.


Evet, hayat bu ve burada her şey mümkün. Genel olarak, test cihazı nedeniyle sıfır değerleri için bir kontrol başlattım (yaklaşık bir yıl önce bir durum vardı: başlangıçta, ilk m = birkaç tik, test cihazı sıfır verdi).

Yavaş yavaş işlevsellik ekliyorum. OnTradeTransaction'da bir pozisyon ("DEAL_ENTRY_IN") varsa, bekleyen emirleri sileriz ve tekrar bekleyen iki stop emri yerleştiririz:

 //+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//+------------------------------------------------------------------+ 

BuyStopSellStopGrid 1.002

Şimdiye kadar, bunlar eksiklikler:

  1. her tikte, pozisyon sayısı ve bekleyen emirler kontrol edilir
  2. alım satım işlemlerinin yürütülmesi üzerinde herhangi bir kontrol yoktur (bekleyen emirlerin verilmesi) - danışman, bekleyen bir emir verilmemişse durumları hiçbir şekilde işlemez
  3. boyutsuz bir dizi pozisyon - durumlar, örneğin işe alındıklarında, işe alım pozisyonları aldıklarında ve ardından bam ve Satış pozisyonu çalıştığında hiçbir şekilde ele alınmaz ...
 
Vladimir Karputov :

Evet, hayat bu ve burada her şey mümkün. Genel olarak, test cihazı nedeniyle sıfır değerleri için bir kontrol başlattım (yaklaşık bir yıl önce bir durum vardı: başlangıçta, ilk m = birkaç tik, test cihazı sıfır verdi).

Yavaş yavaş işlevsellik ekliyorum. OnTradeTransaction'da bir pozisyon ("DEAL_ENTRY_IN") varsa, bekleyen emirleri sileriz ve tekrar bekleyen iki stop emri yerleştiririz:


Şimdiye kadar, bunlar eksiklikler:

  1. her tikte, pozisyon sayısı ve bekleyen emirler kontrol edilir
  2. alım satım işlemlerinin yürütülmesi üzerinde herhangi bir kontrol yoktur (bekleyen emirlerin verilmesi) - danışman, bekleyen bir emir verilmemişse durumları hiçbir şekilde işlemez
  3. boyutsuz bir dizi pozisyon - durumlar, örneğin işe alındıklarında, işe alım pozisyonları aldıklarında ve ardından bam ve Satış pozisyonu çalıştığında hiçbir şekilde ele alınmaz ...

Ekrandaki algoritma, nasıl çevirirseniz çevirin çalışmayacaktır. Algoritmanın çalışması için şunu yapmanız gerekir:

Bir satın alma sinyali alındığında, ilk mumun yükseğinin üzerine bir ALIŞ DURDUR emri ızgarası yerleştirilir. SATIŞ DURDUR emrinin kapanış fiyatının altında. Emirleri kâr veya zarar gerçeğiyle değil, başka bir sinyalle kapatmak gerekir. Az ya da çok makul sinyallerle, böyle bir sistem her zaman çalışacaktır.

Bu sadece bir seçenektir, her şey farklı şekilde yapılabilir.

 
Ibragim Dzhanaev :

Az ya da çok makul sinyallerle, böyle bir sistem her zaman çalışacaktır.

"Düşük fiyatlardan alıp tepeden satarsan, her zaman kâr edersin" diye yazmak daha iyi olur.

Kim tartışıyor? Burada bütün sorun "aklı başında sinyalleri" bulmaktır.

 

Sürüm 1.003:

 //+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//+------------------------------------------------------------------+

  • şimdi, bir pozisyon açarken, TÜM zıt pozisyonlar kapalı.
  • cari fiyatları almak, PlacesBuy ve PlacesSell fonksiyonlarının içine taşındı - bu, boşluklara ve kaymalara karşı korumadır.
  • OnTradeTransaction'da bekleyen siparişler bir süre döngüsünde verilir - tabiri caizse, sunucuyu sonuna kadar zorluyoruz :) - en iyi çözüm değil, ama şimdilik öyle kalacak.

Aslında şimdi düşünebilirsiniz:

  1. Pozisyonları artırmanın en iyi yolu (lot hacimlerinin hesaplanması)
  2. Zıt pozisyonlarla ne yapmalı...

 
George Merts :

"Düşük fiyatlardan alıp tepeden satarsan, her zaman kâr edersin" diye yazmak daha iyi olur.

Kim tartışıyor? Burada bütün sorun "aklı başında sinyalleri" bulmaktır.


En basit ve en belirgin seçenek.


 
Size katılabilir miyim?
 

Ya da öyle.


 
Artiom Morochin :
Size katılabilir miyim?

Hazır. Repository'ye bağlanın , proje dosyalarını Repository'den güncelleyin.