Uzmanlar için soru - sayfa 12

 
rid писал(а) >>

Bu konuda gerçekten iyi bir uzman değilim.

Ancak, 1. sinyalin yürütülmesinden sonra bayrağı "asarsanız", asmasına izin verileceği varsayımı vardır.

1. sinyal kendini çoktan tüketmiş olsa bile!

Ardından ikinci sinyal sorunsuz bir şekilde açılması için bir sinyal verecektir.

Soruyu doğru anladıysam...

Ama sonuçta, bayrak, anladığım kadarıyla bir değişkendir ve yeni bir onay işareti ile program, yeni verilere dayalı olarak bayrağın ilk veya hesaplanmış değerini görecektir. Belki de bayrağın ne olduğunu yanlış anlıyorum?

 
MQLBankir >> :

Ama sonuçta, bayrak, anladığım kadarıyla bir değişkendir ve yeni bir onay işareti ile program, yeni verilere dayalı olarak bayrağın ilk veya hesaplanmış değerini görecektir. Belki de bayrağın ne olduğunu yanlış anlıyorum?

bayrak - sayısal gösterimi sırasıyla 1 veya 0 olan doğru (doğru) veya yanlış (yanlış) değerine sahip mantıksal sabitler.

1. sinyalin koşulu (bir seçenek olarak, 2 arabanın kesişimi), o zaman bayrak doğru olarak ayarlanır, kavşak henüz gerçekleşmediyse, bayrak yanlış kalır! Göreviniz için... şöyle bir şey:

bool sinyal1=doğru;

int başlangıç()

if (sinyal1==yanlış) {dönüş();}

sinyal1 ......... tra la la alma sinyali

if (signal1 ==true) //ilk sinyalin göründüğü anlamına gelir

{

sinyal2 ..............tra la la alma sinyali

sinyal1=yanlış;

}

iyi, böyle bir şey olmalı)))

hakkında aşağıda zaten tanımlanmış yazarken)

 
MQLBankir >> :

Ama sonuçta, bayrak, anladığım kadarıyla bir değişkendir ve yeni bir onay işareti ile program, yeni verilere dayalı olarak bayrağın ilk veya hesaplanmış değerini görecektir. Belki de bayrağın ne olduğunu yanlış anlıyorum?

Kötü bir şekilde tanımlanmayan Değişken Türlerini okuyun, kendi başıma global olarak bildirilen değişkenlerin değerlerini koruduğunu ekleyebilirim

zorla değiştirilene veya program kapatılana kadar.

 

Bayrak koruması şu şekilde yapılır:

 int flag ;
int start ( )
{
 // функция принятия решения и установки флага
 if ( flag = = 1 )
   { flag = 0 ;
   // код защищенный от запуска флагом   
   } 
return ( 0 ) ;
}
bu arada
 // функция принятия решения и установки флага

eylem sırasını değiştirirken yazarın fikrine bağlı olarak herhangi bir yerde olabilir.

 
Urain писал(а) >>

Bayrak koruması şu şekilde yapılır:

bu arada

eylem sırasını değiştirirken yazarın fikrine bağlı olarak herhangi bir yerde olabilir.

Hepinize teşekkür ederim, sanırım anladım :)

 

İyi akşamlar. Sıkıntı bir yerden geldi.

Martingale ile danışman.

10 adım. Her adımda, pozisyonun kendi sihirbazı vardır.

İlk başta her şey iyi çalıştı. Birçok günler.

Ancak, aniden her şey çalışmayı durdurdu!

İlk pozisyon açılır - ve ardından bir sonraki çubukta kapanır!

Açıklanamaz bir şekilde.


Ve böylece sonsuz. Açılır ve kapanır.

Daha bugün başladı. Birden !

İşte pozisyon kapatma bloğu:

 //жжжжжжжжжжжж  Закрытие позиций жжжжжжжжжжжжжжжжжжжжжжж
 //(используются ф-и И.Кима
if ( NumberOfPositions ( NULL , OP_BUY , - 1 ) > 0 ) { //если есть открытые позиции
// если цена открытия первой позиции меньше текущей цены на тейкпрофит - закрываем её 
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic  ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic  ) > 0 )  ClosePositions ( NULL , OP_BUY , Magic ) ;

// если цена открытия второй  позиции меньше текущей цены на тейкпрофит - закрываем её 
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_2 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_2 ) > 0 ) ClosePositions ( NULL , OP_BUY , Magic_2 ) ;

 // если цена открытия след.  позиции меньше текущей цены на тейкпрофит - закрываем всё открытые позиции  
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_3 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_3 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_4 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_4 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;    
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_5 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_5 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;   
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_6 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_6 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;    
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_7 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_7 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;   
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_8 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_8 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;    
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_9 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_9 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_10 ) + TakeProfit_Buy * Point ) < = Bid & & PriceOpenLastPos ( NULL , OP_BUY , Magic_10 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;  

 } 

Belki birisi - hazırlıksız bir yanlışlık veya hata görecektir? (danışman açık fiyatlarla çalışır)

 

rid писал(а) >>

Açıklanamaz bir şekilde.

Belki birisi - hazırlıksız bir yanlışlık veya hata görecektir?

Yol boyunca sorun bu kodda değil, açılış pozisyonlarında veya hesaplamalarda. kâr_buy al. Büyük olasılıkla ikincisi.

Test cihazında yeniden üretilirse, Print yardımcı olacaktır.

 

TakeProfit_Buy'u hesaplamıyorum - sadece harici parametrelerde ayarladım.

extern int       TakeProfit_Buy=21;

Test cihazında - aynı saçmalık Ama bazı yerlerde. İlk başta her şey yolunda.

Ve sonra bu saçmalık ortaya çıkıyor. Ve her zaman değil.

Görmeniz gerekecek - bir yorum veya baskı eklemek için ...

Ayrıca. Şu anda başka bir hesapta (yatırımcının) - aynı DC'deki aynı danışman aynı enstrüman ve TF üzerinde iyi çalışıyor!

 

ashel bir hata gibi görünüyor. Ve elbette, başlangıçta baktığım yerde değil.

Yukarıdaki kapatmaya ek olarak, buna da sahibim:

 //----------------------- Закрытие позиций по текй профиту ----------------------------------

if ( NumberOfPositions ( NULL , OP_BUY , - 1 ) > 0 ) { // если есть открытые позиции
// если очередная  позиция закрылась по тейкпрофиту , то закрываем
// все остальные позиции  
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_3 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_4 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }    
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_5 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }   
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_6 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }    
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_7 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }   
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_8 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }    
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_9 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_10 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; } 
                                           }

Görünüşe göre işlev bayrağı
isCloseLastPosByTake ( )//если поза закрылась по тейку - возвращает единицу
yürütülmesinden sonra = 1'e eşittir, ancak diğer tüm pozisyonları kapattıktan sonra bire eşit kalır!Ve tabii ki, bir sonraki ilk pozisyonu magic = magic_1 ile açarken - hemen kapanır!

Bu hatanın neden iki gündür görünmediği belli değil mi?

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

Ve ilerisi. Söyle bana, - Bu bloğun hala düzgün çalışmasını nasıl sağlayabilirim?

Diğer bir deyişle, tüm pozisyonları kapattıktan sonra isCloseLastPosByTake() işlevi nasıl sıfırlanır?

 
rid >> :

Diğer bir deyişle, tüm pozisyonları kapattıktan sonra isCloseLastPosByTake() işlevi nasıl sıfırlanır?

Anladığım kadarıyla, kârla kapatılan bir pozisyonun, kalan küçük emirlerden daha uzun bir açılış süresine sahip olması gerekir, bu koşulu ekleyin ve her şey yoluna girecek.