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

 

Merhaba. durumla başa çıkmama yardım et.

neden bir durumda testF2 Buf0[i]=iCCI(NULL,0,8,PRICE_OPEN,i-1)-iCCI(NULL,0,8,PRICE_OPEN,i); çıkarırken testF2; her şey olması gerektiği gibi harika gidiyor

ve diğer durumda testF1 aynı eylemlerle Buf0[i]=iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,i-1)-iMA(NULL,0,8,1,MODE_SMA,PRICE_OPEN,i) ; son çubuk çöküyor mu? neden iCCI durumunda bu olmuyor, ancak iMA durumunda çubuk çöküyor??????

bu bir şekilde düzeltilebilir mi?

Dosyalar:
testf1.mq4  1 kb
testf2.mq4  1 kb
 

Buf0[i]=iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN, i-1 )-iMA(NULL,0,8,1,MODE_SMA,PRICE_OPEN,i);

ema için i=0 iken -1 barı hesaplarken sizi sonsuzluğa atar

böyle daha iyi:

Buf0[i]=iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,i ) -iMA(NULL,0,8,1,MODE_SMA,PRICE_OPEN,i+1);

ve sağa 1 bar ile verdiğiniz varyantta olduğu gibi bir kaydırmaya ihtiyacınız varsa, bunu SetIndexShift (0,1) aracılığıyla init içinde açıkça uygulamak daha iyidir;

 
ALXIMIKS :

Buf0[i]=iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN, i-1 )-iMA(NULL,0,8,1,MODE_SMA,PRICE_OPEN,i);

ema için i=0 iken -1 barı hesaplarken sizi sonsuzluğa atar

böyle daha iyi:

Buf0[i]=iMA(NULL,0,8,0,MODE_EMA,PRICE_OPEN,i ) -iMA(NULL,0,8,1,MODE_SMA,PRICE_OPEN,i+1);

ve sağa 1 bar ile verdiğiniz varyantta olduğu gibi bir kaydırmaya ihtiyacınız varsa, bunu SetIndexShift (0,1) aracılığıyla init içinde açıkça uygulamak daha iyidir;



çok teşekkür ederim, ama bunu çok iyi anlıyorum, ama neden iCCI ile yuvarlanıyor da iMA ile değil ???
 
       if (( NormalizeDouble (priceopen+start* Point , Digits )<= Bid )&&( NormalizeDouble ( Bid -sl* Point , Digits )> NormalizeDouble (dist* Point , Digits )))
         {   
                sl= NormalizeDouble ( Bid -dist* Point , Digits ); 
Eckburg:


doğru bir durum değil, sipariş vermek için fiyattan teklife olan mesafeyi hesaplıyorsunuz, ancak fiyattan mevcut durağa kadar gerekli! :)

aynı zamanda uzunlar ve kısalar için farklı hesaplamalar yapılmalıdır;) Aksi takdirde, bazı durumlarda hesaplama negatif, diğerinde pozitif olacaktır. Buna göre, takip bazı yönlerde çalışacak, ancak diğerlerinde çalışmayacaktır.

burada iki bloğa ihtiyacınız var, eğer kısa ise, o zaman onu ilk bloğa gönderir, eğer uzunsa - ikinci, bundan sonra hesaplamalar, kontroller ve takip vardır.


hala hiçbir şey çıkmıyor ... Sadece uzun süre deniyorum, o kadar çok şey denedim ki ne yaptığımı ya da yapmadığımı hatırlamıyorum))
 
clubsmi :


çok teşekkür ederim, ama bunu çok iyi anlıyorum, ama neden iCCI ile yuvarlanıyor da iMA ile değil ???


ve burada ve orada hatalar sadece SGK'daydı, hesaplamaların özellikleri göz önüne alındığında görsel değiller,

ve MA'nın, özellikle de EMA'nın kullanılması, bence, görünürlüklerine yol açıyor.

 
vadynik :

yine de hiçbir şey çıkmıyor ... Sadece uzun süre deniyorum, o kadar çok şey denedim ki ne yaptığımı ya da yapmadığımı hatırlamıyorum))

sl'yi OrderStopLoss() ile değiştirin
 
Vinin :

Yani ipuçlarıyla mı yaşayacaksın?
Bu konuda uzman olana kadar.
Artık ipuçlarına ihtiyacın yok, değil mi? :)
 

EURAUD ve AUDUSD gibi iki alım veya satım emri açan bir program var. Program, yalnızca bu veya diğer çiftler için terminalde herhangi bir sipariş açılmadığında çalışır. Terminalde en az bir sipariş varsa, fırsatlar açılmaz. Soru - terminalde açık emir olup olmadığına bakılmaksızın emirlerin açılması nasıl programlanır? Cevabınız için şimdiden teşekkür ederiz.

 extern double lotAU= 1.3 ;
extern double lotEA= 1.0 ;
extern double Profit= 30 ;
extern int Operation= 0 ;
extern string Сomment           = "KVAZ" ;
extern int Magic                = 1111 ;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

double prof;
double bidEA = MarketInfo ( "EURAUD" , MODE_BID );
double askEA = MarketInfo ( "EURAUD" , MODE_ASK );
double bidAU = MarketInfo ( "AUDUSD" , MODE_BID );
double askAU = MarketInfo ( "AUDUSD" , MODE_ASK );

string symEA = "EURAUD" ;
string symAU = "AUDUSD" ;

for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
 OrderSelect (i, SELECT_BY_POS );
 prof=prof+ OrderProfit ();
 Print ( "Profit=" +prof);
}
if (prof>=Profit)
{
 for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
 {
   OrderSelect (i, SELECT_BY_POS );
  {
   if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()!=Magic) continue ;
   OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 5 , 0 );
  }
 }
}
if ( OrdersTotal ()== 0 )
{
 if (Operation== 0 )
 {
   OrderSend (symEA, OP_BUY ,lotEA,askEA, 3 , 0 , 0 , "KVAZ" ,Magic, 0 ,Blue);
   OrderSend (symAU, OP_BUY ,lotAU,askAU, 3 , 0 , 0 , "KVAZ" ,Magic, 0 ,Blue); 
 }
 if (Operation== 1 )
 {
   OrderSend (symEA, OP_SELL ,lotEA,bidEA, 3 , 0 , 0 , "KVAZ" ,Magic, 0 ,Red);
   OrderSend (symAU, OP_SELL ,lotAU,bidAU, 3 , 0 , 0 , "KVAZ" ,Magic, 0 ,Red);
 }
}  
   return ( 0 );
  }
 
alexey1979621 :

EURAUD ve AUDUSD gibi iki alım veya satım emri açan bir program var. Program, yalnızca bu veya diğer çiftler için terminalde herhangi bir sipariş açılmadığında çalışır. Terminalde en az bir sipariş varsa, fırsatlar açılmaz. Soru - terminalde açık emir olup olmadığına bakılmaksızın emirlerin açılması nasıl programlanır? Cevabınız için şimdiden teşekkür ederiz.


Çeki kaldır
 if ( OrdersTotal ()== 0 )
 
evillive :

Çeki kaldır
Evet, şimdi açılıyor, ancak bir sürü anlaşma var, ancak belirli çiftler için, örneğin EURAUD ve AUDUSD için sadece iki anlaşmanın açılmasına ihtiyacım var.