KimIV'ten faydalı özellikler - sayfa 51

 
Sevgili Igor! Birini kırdıysam özür dilerim... Aslında eleştirmedim, böyle görünmesi üzücü. Her durumda, ortaya konan prototip bir kereden fazla düzeltilecek ve iyileştirilecektir. Bulmaca olmaması için (hiçbir zaman yazarlık iddiasında bulunmadım), gelecekte size yazarın düzenlemesi için bir çalışma göndereceğim. Kendi adıma şu ana kadar gördüğüm ilk aşama 25 sayfa. Bitirdiğimde, sitenizde belirtilen adrese göndereceğim. Paha biçilmez çalışma ve ilgisiz deneyim alışverişi için teşekkür ederiz !!!
 
rid писал (а) >>

Bence mümkün. Görünüşe göre, her seviyede (kavşakta) açık pozisyonun mevcut lot büyüklüğünün ne olduğunu kontrol etmek gerekiyor. Ve kapatma mekanizmasını uygulamak bu kritere göre!

Bu tür işlevler (parti boyutunu döndürür) bu iş parçacığındadır. 17 ve 27. sayfalara bakın

Çok teşekkürler! Yaşasın! Artık devam edebilirim. Çok teşekkür ederim!

 

OpenPosition () fonksiyonunda parti büyüklüğüne göre ek kontrollere gerek olup olmadığını belirlemek için, nasıl yaptığınızı görmeniz gerekir. lot miktarını siz hesaplayın nasıl ve nerede çağrılır bu fonksiyonu şubede görmedim

 çift ll = GetSizeLot () ;

belki ben eksik.

Bu şekilde hesaplanırsa https://championship.mql5.com/2012/ru/news , o zaman 134 hatasıyla karşılaşabilirsiniz ve diyelim ki şampiyona ile uçtunuz :-)

 

Merhaba KimIV.Gönderilen bir şey geri yazmak zorunda kalacak. Kısacası, boom-boom programlamada öyleyim. ve genel olarak 3 hafta boyunca bir tüccar için çalışıyorum. gramer de berbat.

burada. Soru. CCi göstergesine dayalı bir Uzman Danışman yapmak mümkün müdür? Hangisini yazıp size göstereceğim.

CCi seviyeleri 250, 50, -50, -250. Mesele şu ki, örneğin, sırasıyla -50 ve 50'ye ulaştığında (geçerken) sırasıyla bir satış ve bir satın alma yapıldı. Ticaretin ne zaman bitmesi gerektiğini düşünün:

1Sonra (diyelim ki indirim var) grafik -250'yi, -250'yi ters yönde geçince (resimde görülüyor)

2 Grafik -250'ye ulaşmıyor -50 geri dönüyor

Satın almak aynı, tam tersi.

Euro/Dolar, herhangi bir zaman diliminde kote.

Böyle bir peluş danışmanın maliyeti ne kadar olacak????

Aynı fiyata daha iyi bir şey önerebilir misiniz?

Şimdiden teşekkürler. Umarım gider. Peki, FOREX kurslarına gittim.

Bu arada, ekmek ve tereyağı için forex'te para kazanmak gerçekten mümkün mü????

 

Hepiniz hoşgeldiniz.

Burada bir gösterge buldum, biraz değiştirdim - iyi trend çizgileri oluşturuyor.

Bir fonksiyon uydurmak ilginç olurdu ... (KimIV'ten sonra bir istek gibi).

Dosyalar:
tlbs.mq4  8 kb
 
Prival писал(а) >>

Hakkında

OpenPosition("GBPJPY", OP_SELL, 0.1, pb+23*po, pb-44*po);

Belki OpenPosition (" GBPJPY ", OP _ SELL , 0.1, 23, 44);

Bu öneri, Sergey, noktalarla belirlenen durakları ve kalkışları kullanmanın rahatlığını artırıyor. Peki ya durmalar ve alımlar fiyat seviyelerine göre belirlendiğinde? Örneğin, önceki çubuğun en yüksek veya en düşük noktasında durun. Ya da orada bir tür çizgi boyunca. Fonksiyonu çağırmadan önce puanlara ve fonksiyonun içinde fiyatlara geri dönülsün mü? Bunlar gereksiz işlemler. O yüzden olduğu gibi bırakacağım.

GetSizeLot() işlevini daha sonra ele alacağız (bu arada, şimdi onu GetLots() olarak adlandırıyorum). Öncelikle b-ForTest.mqh ve b-Positions.mqh kitaplıklarını tamamlamanız gerekir.

 

Test cihazı için CountOrders() işlevi.

EA'ların testimde (yalnızca MT4 test cihazında kullanılmak üzere tasarlanmış) sürümlerinde, CountOrders() işlevi şu işlevlerin yerini alır: ExistOrders() , ExistPositions() , NumberOfOrders() ve NumberOfPositions() . Yani, herhangi bir türdeki bir pozisyonun veya emrin varlığı hakkında ve ayrıca her türden alım satım işlemlerinin sayısı hakkında bilgi sağlayabilir. Böyle bir değiştirmenin, sipariş veritabanına tek tıklamayla erişimde ve bir seferde gerekli tüm bilgileri elde etmede ifade edilen avantajları vardır. Ve yukarıda belirtilen işlevler, özellikle kombinasyon halinde kullanıldıklarında, her biri aynı sipariş bazında bağımsız olarak çalışır ve dolayısıyla aynı çağrıları tekrar tekrar gerçekleştirir. Sonuç olarak, CountOrders() işlevi, bir geçişin süresini birkaç saniye azaltmanıza olanak tanır ve bu da optimizasyonlarda saatlerce tasarruf sağlar.

CountOrders() işlevi aşağıdaki parametreleri alır:

  • mo - Türe göre sipariş sayısı dizisi. Fonksiyonu çözdükten sonra dizi 6 (altı) elemana sahip olacaktır. Sıfır öğesi Buy tipindeki ticaret işlemlerinin sayısıdır , ilk öğe Sell sayısı , ikincisi BuyLimit , üçüncüsü SellLimit , dördüncüsü BuyStop , beşincisi SellStop'tur .
  • mn - Pozisyon veya emir tanımlayıcısı (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 03.08.2008                                                     |
//|  Описание : Рассчитывает количество ордеров по типам.                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    mo - массив количества ордеров по типам                                 |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//+----------------------------------------------------------------------------+
void CountOrders ( int & mo [ ] , int mn = - 1 ) {
   int i , k = OrdersTotal ( ) ;

   if ( ArraySize ( mo ) ! = 6 ) ArrayResize ( mo , 6 ) ;
   for ( i = 0 ; i < k ; i + + ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ) {
       if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) mo [ OrderType ( ) ] + + ;
     }
   }
}

PS Ekli, CountOrders() işlevini çevrimiçi olarak test etmek için bir komut dosyasıdır.

Dosyalar:
 

İyi günler, Igor ve herkes. GetFractalBar(NULL,0, 0) işlevi kullanılırken bir sorun oluştu. - Fraktal çubuk numarasını kendi numarasına göre döndürür. Daha doğrusu, sorun işlevde değildir. Ve yakınlarda bir yerde.

Bir yorum görüntülendiğinde, böyle bir görevde her şey yolundadır. Grafiğin köşesinde bir çubuk numarası VAR.

 int a ;
. . . . . .

int start ( )
   {
//----
if ( Time [ 0 ] = = prevtime )    return ( 0 ) ; //ждём нового бара
   prevtime = Time [ 0 ] ; //если появился новый бар , включаемся

if ( isFractalUp ( ) > isFractalDn ( ) )    { //если это Down-фрактал

   a = iLow ( NULL , 0 , GetFractalBar ( NULL , 0 , 0 ) ) ;
   
Comment ( GetFractalBar ( NULL , 0 , 0 ) ) ;              }

Ve bununla birlikte, her şey de normaldir. Lev cinsinden gösterilir. köşe dk. fraktallı bir çubuğun fiyat değerleri.

 if ( isFractalUp ( ) > isFractalDn ( ) ) { //если это Down-фрактал
   a = iLow ( NULL , 0 , GetFractalBar ( NULL , 0 , 0 ) ) ;

Comment ( iLow ( NULL , 0 , GetFractalBar ( NULL , 0 , 0 ) ) ) ;            }

Ama sonrası hiç net değil! Yoruma fonksiyonun kendisi yerine "a" değişkenini eklediğimde, fiyat değeri yerine yorum köşede bana bir birim döndürüyor! Tam burada :

 if ( isFractalUp ( ) < isFractalDn ( ) ) {
   a = iLow ( NULL , 0 , GetFractalBar ( NULL , 0 , 0 ) ) ;
   Comment ( a ) ;                          }
Oturduğum üçüncü saat, sorun ne anlamıyorum! Lütfen bana kimin...
 
Rita писал(а) >>
Yoruma işlevin kendisi yerine "a" değişkenini eklediğimde, yorum köşede fiyat değeri yerine bir tane döndürür!

"a" değişkeniniz bir tamsayı olarak bildirilir, yani:

int a;

Ve bunu gerçek olarak ilan etmeniz gerekiyor, yani:

çift a;

 

Test cihazı için ModifyOrder() işlevi.

Bu, önceden seçilmiş tek bir emir veya pozisyonun mutlak fiyat seviyelerini değiştirmek için sayfa 7'de yayınlanan ModifyOrder() fonksiyonunun basit bir versiyonudur.

ModifyOrder() işlevi aşağıdaki parametreleri alır:

  • pp - Sipariş verme fiyatı. Sıfırdan küçük veya sıfıra eşit bir değer geçerseniz, bu fiyat seviyesinde değişiklik yapılmayacaktır. Varsayılan değer -1'dir .
  • sl - Fiyat seviyesini durdur. Sıfırdan küçük bir değer geçerseniz, bu fiyat seviyesinde değişiklik yapılmayacaktır. Varsayılan değer 0'dır .
  • tp - Fiyat seviyesini alın. Sıfırdan küçük bir değer geçerseniz, bu fiyat seviyesinde değişiklik yapılmayacaktır. Varsayılan değer 0'dır .
  • ex - bekleyen siparişin sona erme tarihi. Varsayılan değer 0'dır .
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.03.2008                                                     |
//|  Описание : Модификация ордера. Версия функции для тестов на истории.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    pp - цена открытия позиции, установки ордера                            |
//|    sl - ценовой уровень стопа                                              |
//|    tp - ценовой уровень тейка                                              |
//|    ex - дата истечения                                                     |
//+----------------------------------------------------------------------------+
void ModifyOrder ( double pp = - 1 , double sl = 0 , double tp = 0 , datetime ex = 0 ) {
   int     dg = MarketInfo ( OrderSymbol ( ) , MODE_DIGITS ) , er ;
   double op = NormalizeDouble ( OrderOpenPrice ( ) , dg ) ;
   double os = NormalizeDouble ( OrderStopLoss ( )    , dg ) ;
   double ot = NormalizeDouble ( OrderTakeProfit ( ) , dg ) ;
   color   cl ;

   if ( pp < = 0 ) pp = OrderOpenPrice ( ) ;
   if ( sl < 0 ) sl = OrderStopLoss ( ) ;
   if ( tp < 0 ) tp = OrderTakeProfit ( ) ;
  
  pp = NormalizeDouble ( pp , dg ) ;
  sl = NormalizeDouble ( sl , dg ) ;
  tp = NormalizeDouble ( tp , dg ) ;

   if ( pp ! = op | | sl ! = os | | tp ! = ot ) {
     if ( MathMod ( OrderType ( ) , 2 ) = = 0 ) cl = clModifyBuy ; else cl = clModifySell ;
     if ( ! OrderModify ( OrderTicket ( ) , pp , sl , tp , ex , cl ) ) {
      er = GetLastError ( ) ;
       Print ( "Error(" , er , ") modifying order: " , ErrorDescription ( er ) ) ;
       Print ( "Ask=" , Ask , " Bid=" , Bid , " sy=" , OrderSymbol ( ) ,
             " op=" + GetNameOP ( OrderType ( ) ) , " pp=" , pp , " sl=" , sl , " tp=" , tp ) ;
     }
   }
}