Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 573

 
Merhaba! Bir danışmana fraktalları belirlemeyi nasıl öğreteceğimi söyleyebilir misiniz?
 
skyjet :
Merhaba! Bir danışmana fraktalları belirlemeyi nasıl öğreteceğimi söyleyebilir misiniz?

Soru daha ayrıntılı olurdu. Fraktallar çizip bulabilen bir sürü farklı hindi var. Danışmanın bunları tanımlamasına gerek yoktur. Bir hindi alırsınız ve bir hindi tamponlarından bir veya başka fraktalın değerlerine yapışırsınız. Bu konuya dikkat ederseniz karmaşık bir şey yok.
 

Güzel gün! Beyler, bana bu konudan bahsedin: Test cihazında, exp, sonraki ortalama alma için kanalın boyutunu artırma algoritmasına ve şemasına göre siparişleri açar - bu resimde görülebilir - her bir sonraki ortalama, daha büyük bir mesafede açılır. önceki (Ilan'da olduğu gibi). Ancak aynı zamanda, baskıda ortalamanın oluşmaması gereken bu tür ifade değerleri verilmiştir, çünkü açılış koşulları 25'ten fazla değil 2856, 2197, 1690. Bu koşula ve açık pozisyonlara nasıl giriyor? Her şeyi küme parantezleriyle kaplamaya karar verdim - yardımcı olmuyor ...

Açılış fiyatı testi. İşte kod ve resim:

...
// Внешние переменные (оптимизируются)
extern string A1 = " Параметры ММ " ;
extern double Lots = 0.02 ;         // Стартовый лот

//-------------------                                  
extern double LotExponent = 2.7 ;   // на сколько умножать стартовый лот в степени - схема по Илану                                   

extern string A2 = " В настоящих пипсах " ;
extern int StopLossPips_BUY = 100 ;   // уровень стартового усреднения в бай  объёма позиции в пипсах 


// Увеличение шага усреднений по схеме

extern double PipStepExponent_BUY  = 1.3 ; // н а сколько умножать стартовый шаг в степени 

//-----------------------------------------------------------------------

.....

// если стартовая открыта и достигнут уровень усреднения, то усреднить на  Lots * MathPow(LotExponent,NumberOfPositions(Symbol(), -1, MN_L));  
     if (NumberOfPositions( Symbol (), - 1 , MN_L)>= 1 && 
       GetProfitOpenPosInCurrency( Symbol (), - 1 , MN_L)< 0 )   
       // if (MathAbs (GetProfitOpenPosInPoint(Symbol(), -1, MN_L)) > StopLossPips)  
          {
           if (GetTypeLastOpenPos( Symbol (), MN_L)== OP_BUY ) 
               if ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L)< 0 ) // надо ли усреднять
                {
                 if (NumberOfPositions( Symbol (), - 1 , MN_L)== 1 ) 
                    { // при первом усреднении, усреднять через стартовое количество пунктов - StopLossPips_BUY
                     if ( NormalizeDouble (( MathAbs ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L))/ Point ), 0 )>StopLossPips_BUY)                 
                     {WmOrderSend( Symbol (), OP_BUY ,  NormalizeLots(Lots* MathPow (LotExponent,NumberOfPositions( Symbol (), OP_BUY ,MN_L))), Ask , 0 , TP_START_BUY, " первое усреднение вверх " , MN_L);
                       Print ( " первое усреднение " );
                     }
                    } 
                 if (NumberOfPositions( Symbol (), - 1 , MN_L)> 1 ) // при последующих - усреднять через  MathPow(LotExponent,NumberOfPositions(Symbol(),OP_BUY,MN_L))  
                    {
                     if ( NormalizeDouble (( MathAbs ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L))/ Point ), 0 ) > 
                           NormalizeDouble ((StopLossPips_BUY* MathPow (PipStepExponent_BUY,NumberOfPositions( Symbol (), OP_BUY ,MN_L)- 1 )), 0 ))                                           
                     {
                       WmOrderSend( Symbol (), OP_BUY ,  NormalizeLots(Lots* MathPow (LotExponent,NumberOfPositions( Symbol (), OP_BUY ,MN_L))), Ask , 0 , TP_START_BUY, " усреднение вверх " , MN_L);          
                       Print ( " последующие, если это больше " , NormalizeDouble (( MathAbs ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L))/ Point ), 0 ),
                               " этого, то открыть бай " , NormalizeDouble (StopLossPips_BUY* MathPow (PipStepExponent_BUY,NumberOfPositions( Symbol (), OP_BUY ,MN_L)- 1 ), 0 ));
                     }
                    }
                 }   
                     
              
           if (GetTypeLastOpenPos( Symbol (), MN_L)== OP_SELL ) 
               if ((PriceOpenLastPos( Symbol (), OP_SELL , MN_L)- MarketInfo ( OrderSymbol (), MODE_ASK ))< 0 )
               
                   if (NumberOfPositions( Symbol (), - 1 , MN_L)== 1 )
                     {
                       if ( NormalizeDouble (( MathAbs (PriceOpenLastPos( Symbol (), OP_SELL , MN_L)- MarketInfo ( OrderSymbol (), MODE_ASK ))/ Point ), 0 )>StopLossPips_SELL)           
                      WmOrderSend( Symbol (), OP_SELL ,  NormalizeLots(Lots* MathPow (LotExponent,NumberOfPositions( Symbol (), OP_SELL ,MN_L))), Bid , 0 , TP_START_SELL, " усреднение вниз " , MN_L);         
                     }
                     
          }           
.....

 
skyjet :
Merhaba! Bir danışmana fraktalları belirlemeyi nasıl öğreteceğimi söyleyebilir misiniz?

Navigatöre bakın. Bununla ilgiliyse, evet.
 
Roman. :

Güzel gün! Beyler, bana bu konudan bahsedin: Test cihazında, exp, sonraki ortalama alma için kanalın boyutunu artırma algoritmasına ve şemasına göre siparişleri açar - bu resimde görülebilir - her bir sonraki ortalama, daha büyük bir mesafede açılır. önceki (Ilan'da olduğu gibi). Ancak aynı zamanda, baskıda ortalamanın oluşmaması gereken bu tür ifade değerleri verilmiştir, çünkü açılış koşulları 25'ten fazla değil 2856, 2197, 1690. Bu koşula ve açık pozisyonlara nasıl giriyor? Her şeyi küme parantezleriyle kaplamaya karar verdim - yardımcı olmuyor ...

Açılış fiyatı testi. İşte kod ve resim:


Anladığım kadarıyla, kodun tamamını görmeden ve burada nasıl çalıştığını incelemeden, birinin size söylemesi olası değildir. Bu blokta kullanılan tüm fonksiyonlar sadece sizin tarafınızdan bilinmektedir. Yol boyunca her şeyi yazmak ve mesajları takip etmek en iyisidir.
 
hoz :

Anladığım kadarıyla, kodun tamamını görmeden ve burada nasıl çalıştığını incelemeden, birinin size söylemesi olası değildir. Bu blokta kullanılan tüm fonksiyonlar sadece sizin tarafınızdan bilinmektedir. Yol boyunca her şeyi yazmak ve mesajları takip etmek en iyisidir.

Tüm işlevler düzgün çalışıyor - bunlar Kim I.V.'nin işlevleri. "Yalnızca Kim I.V'den kullanışlı özellikler." İşlevlerin adı ile amaçları açıktır.
 

Anlaşıldı - her şey düzgün çalışıyor. Bir pozisyon açmadan ÖNCE yazdırmak gerekliydi.

 if (GetTypeLastOpenPos( Symbol (), MN_L)== OP_BUY ) 
               if ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L)< 0 ) // надо ли усреднять
                {
                 if (NumberOfPositions( Symbol (), - 1 , MN_L)== 1 ) 
                    { // при первом усреднении, усреднять через стартовое количество пунктов - StopLossPips_BUY
                     if ( NormalizeDouble (( MathAbs ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L))/ Point ), 0 )>StopLossPips_BUY)                 
                        {
                         Print ( " первое усреднение " , NormalizeDouble (( MathAbs ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L))/ Point ), 0 ),
                                 " StopLossPips_BUY = " ,StopLossPips_BUY, " MODE_BID = " , DoubleToStr ( MarketInfo ( OrderSymbol (), MODE_BID ), Digits ), " PriceOpenLastPos = " , DoubleToStr (PriceOpenLastPos( Symbol (), OP_BUY , MN_L), Digits ), "P = " , DoubleToStr ( Point , Digits ));                 
                         WmOrderSend( Symbol (), OP_BUY ,  NormalizeLots(Lots* MathPow (LotExponent,NumberOfPositions( Symbol (), OP_BUY ,MN_L))), Ask , 0 , TP_START_BUY, " первое усреднение вверх " , MN_L);
                        }
                    } 
                 if (NumberOfPositions( Symbol (), - 1 , MN_L)> 1 ) // при последующих - усреднять через  MathPow(LotExponent,NumberOfPositions(Symbol(),OP_BUY,MN_L))  
                    {
                     if ( NormalizeDouble (( MathAbs ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L))/ Point ), 0 ) > 
                         NormalizeDouble ((StopLossPips_BUY* MathPow (PipStepExponent_BUY,NumberOfPositions( Symbol (), OP_BUY ,MN_L)- 1 )), 0 ))                                           
                     {
                         Print ( " последующие, если это больше " , DoubleToStr ( NormalizeDouble (( MathAbs ( MarketInfo ( OrderSymbol (), MODE_BID )-PriceOpenLastPos( Symbol (), OP_BUY , MN_L))/ Point ), 0 ), Digits ),
                               " этого, то открыть бай " , DoubleToStr ( NormalizeDouble (StopLossPips_BUY* MathPow (PipStepExponent_BUY,NumberOfPositions( Symbol (), OP_BUY ,MN_L)- 1 ), 0 ), Digits ),
                               " MODE_BID = " , DoubleToStr ( MarketInfo ( OrderSymbol (), MODE_BID ), Digits ), " PriceOpenLastPos = " , DoubleToStr (PriceOpenLastPos( Symbol (), OP_BUY , MN_L), Digits ));
                       WmOrderSend( Symbol (), OP_BUY ,  NormalizeLots(Lots* MathPow (LotExponent,NumberOfPositions( Symbol (), OP_BUY ,MN_L))), Ask , 0 , TP_START_BUY, " усреднение вверх " , MN_L);          
                                           }
                    }
                 }   
           

Ve ortalama pozisyonun algoritmaya ve PriceOpenLastPos( Symbol (), OP_BUY , MN_L) - fonksiyonuna göre açıldığı ortaya çıktı - bu açık pozisyonun değerini şimdi döndürdü, bu yüzden sorular vardı.

teşekkürler hoz .

 

Roman , iyi ki yapmışsın :) Üstelik çok hızlı.

Genel olarak derleyicim tekrar küfür etmeye başladı. Kendi içinde bir sınıf kullanan bir kütüphane var. Ess sınıfı ancak kütüphaneye dahil edilmiştir:

 #include <HOZ_Code\Classes\CLogging.mqh>

CLogging logging;

CLogging.mqh sınıfını kullanan bu kütüphaneyi derlerken derleyici şöyle yemin eder:

'#property' - name expected     CLogging.mqh    6       1

Bu satırdaki sınıfta:

Bütün bunlar ne anlama gelebilir?

 
Bir komut dosyasıyla işlem seviyelerinin görüntülenmesi nasıl etkinleştirilir/devre dışı bırakılır?
 

Yardım!!!

Forumdaki genel erişim danışmanında, bir ticarete girme koşuluna 3 çubukluk bir kalıp eklenmiştir.

Optimizasyon ve testten (3,5 yıl) sonra, her birinde ayrı ayarlar bulunan bir demo hesaba bir düzine pencere kurdum, bu da baykuşun ateş oranını günde en az 1,5 işlem sağladı. Her birinde bir pencere olmak üzere sunucumun 10 sanal bilgisayarında aynı atış hızını sağladım.

Bir hafta geçti, ancak hiçbir yerde tek bir anlaşma yapılmadı.

Ne yapalım?

=========================

int GetSignal()
{
double LevelADX = iADX(NULL,TF_ADX, PeriodADX ,4,MODE_MAIN,0);
double Delta_01_ADX =(iADX(NULL,TF_ADX,PeriodADX,4,MODE_MAIN,0)
- iADX(NULL,TF_ADX,PeriodADX,4,MODE_MAIN,2));
çift mas, maf;
mas=iMA(BOŞ,TF_MA,Yavaş.dönem,0,Yavaş.yöntem,Yavaş.fiyat,1);
maf=iMA(NULL,TF_MA,Hızlı.dönem,0,Hızlı.yöntem,Hızlı.fiyat,1);
//-----------------
çift delta1,delta2;

delta1=NormalizeÇift((Kapat[1]-Kapat[2])/Nokta,5);
delta2=NormalizeÇift((Kapat[2]-Kapat[3])/Nokta,5);

double body3=NormalizeDouble((Aç[3]-Kapat[3])/Nokta,5);
//-----------------
int STsig=-1;
if(CrossLevel && Lines>0) {
int yukarı,dw;
int up_l,dw_l;
for(jj=0;jj<8;jj++) {
if(ST[jj][0]<LevelDw) dw++; başka{
if(ST[jj][0]>LevelUp) up++;
}
if(ST[jj][1]<LevelDw) dw_l++; başka{
if(ST[jj][1]>LevelUp) up_l++;
}
}
if(up<=8-Satır && up_l>8-Satır) STsig=1;
if(dw<=8-Satır && dw_l>8-Satır) STsig=0;
}
if(STsig==-1 && BreakSweep) {
çift büyük, küçük;
double big_l,small_l;
for(jj=0;jj<8;jj++) {
if(ST[jj][1]>big_l) big_l=ST[jj][1];
if(ST[jj][1]<small_l || small_l==0) small_l=ST[jj][1];
}
if(big_l-small_l<=Süpür && (small_l>=LevelUp || big_l<=LevelDw)) {
for(jj=0;jj<8;jj++) {
if(ST[jj][0]>büyük) büyük=ST[jj][0];
if(ST[jj][0]<küçük || küçük==0) küçük=ST[jj][0];
}
if(büyük-küçük>Süpür)

{

//---------------------- ince ayarlarım Cilt [], ayrıca Aç [] ve Kapat [] ----------------- ------------

if(Close[1]>Close[2]&& Close[2]>Close[3]&& Close[3]<Open[3] && Close[2]>Yüksek[3]]
&& body3>=Body3 && delta1>=Delta1 && delta2>Delta2 && big_l<=LevelDw && maf>mas)
ST işareti=0;

if(Kapat[1]<Kapat[2]&& Kapat[2]<Kapat[3]&& Kapat[3]>Aç[3] && Kapat[2]<Düşük[3]
&& body3>=Body3 && delta1>=Delta1 && delta2>Delta2 && small_l>=LevelUp && maf<mas)
STig=1;
}

}

}

if(Volume[0]<2 && Volume[1]>Cilt1 && Volume[2]>Cilt2
&& Delta_01_ADX > DeltaADX && LevelADX < StopADX && STsig==0) return(OP_BUY);

if(Volume[0]<2 && Volume[1]>Cilt1 && Volume[2]>Cilt2
&& Delta_01_ADX > DeltaADX && LevelADX < StopADX && STsig==1) return(OP_SELL);
dönüş(-1);

}

===============================================

Şimdiden teşekkürler!