[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 418

 
sss2019 :


Teşekkür ederim. Yani M1 periyodu 1 değerine ve M5 periyodu 5 değerine karşılık geliyor, H1 periyodunun 60 değerine ve H4 - 240 periyoduna karşılık geldiği ortaya çıkıyor değil mi?


Evet -

PERIOD_M1 1 1 минута
PERIOD_M5 5 5 минут
PERIOD_M15 15 15 минут
PERIOD_M30 30 30 минут
PERIOD_H1 60 1 час
PERIOD_H4 240 4 часа
PERIOD_D1 1440 1 день
PERIOD_W1 10080 1 неделя
PERIOD_MN1 43200 1 месяц
0 (ноль) 0 Период текущего графика

 

Merhaba!

Lütfen çözmeme yardım et. Basit bir gösterge yazmaya çalışıyorum ama nedense boş değerler veriyor.

Bana öyle geliyor ki, hata bu yerde bir yerde yatıyor.

ExtVolumesBuffer[i]=dVolume;


çünkü ExtVolumesBuffer dizisindeki bu işlemin alanı hiçbir şeyi değiştirmez.

Bir yerde eğrilik gösterdiğimi anlıyorum, ama burada nasıl olduğunu anlamıyorum.

Şimdiden teşekkürler!

 #property indicator_separate_window
#property indicator_minimum 0
#property indicator_buffers 1
#property indicator_color1 Black
//---- indicator buffers
double ExtVolumesBuffer[];
double emaExtVolumesBuffer[];

//+------------------------------------------------------------------+
int init()
{
//---- indicator buffers mapping
SetIndexBuffer ( 0 ,emaExtVolumesBuffer);
//---- drawing settings
SetIndexStyle ( 0 , DRAW_LINE );
//---- sets default precision format for indicators visualization
IndicatorDigits ( 0 );
//---- name for DataWindow and indicator subwindow label
IndicatorShortName ( "emaVolumes" );
SetIndexLabel ( 0 , "emaVolumes" );
//---- initialization done
return ( 0 );
}
//+------------------------------------------------------------------+
int start()
{
int i,nLimit,nCountedBars;
//---- bars count that does not changed after last indicator launch.
nCountedBars= IndicatorCounted ();
//---- last counted bar will be recounted
if (nCountedBars> 0 ) nCountedBars--;
nLimit= Bars -nCountedBars;
//----
for (i= 0 ; i<nLimit; i++)
{
double dVolume=Volume[i];
ExtVolumesBuffer[i]=dVolume;
emaExtVolumesBuffer[i]= iMAOnArray (ExtVolumesBuffer, 0 , 10 , 0 , MODE_EMA ,i);

Print (Volume[i],Volume[i+ 1 ],Volume[i+ 2 ],Volume[i+ 3 ]);
Print (ExtVolumesBuffer[i],ExtVolumesBuffer[i+ 1 ],ExtVolumesBuffer[i+ 2 ],ExtVolumesBuffer[i+ 3 ]);
}
//---- done
return ( 0 );
}
//+------------------------------------------------------------------+
 
sss2019 :


Teşekkür ederim. Yani M1 periyodu 1 değerine ve M5 periyodu 5 değerine karşılık geliyor, H1 periyodunun 60 değerine ve H4 - 240 periyoduna karşılık geldiği ortaya çıkıyor değil mi?

M1 periyodu için case 1 değeri ve M15 periyodu için case 15 değeri seçildiğinde bu yapının çalışması gerekiyor. - sırayla?

 int CurrentGrafPeriod ()
{
   
int Ba;
int GrafPeriod = Period ();    
   switch (GrafPeriod)
    {
 
    case 1 :  Ba = 60 ; break ;
     case 5 :  Ba = 12 ; break ;
     case 15 : Ba = 4 ;  break ;
     case 30 : Ba = 2 ;  break ;
     case 60 : Ba = 1 ;  break ;
    }
return (Ba);
}

if (CurrentGrafPeriod () == 1 ){ваше исполнение}
if (CurrentGrafPeriod () == 5 ){ваше исполнение}
и так далее...
Ama bu bir teori - işe yarayıp yaramayacağını bilmiyorum ....
 
sss2019 :


Teşekkür ederim. Yani M1 periyodu 1 değerine ve M5 periyodu 5 değerine karşılık geliyor, H1 periyodunun 60 değerine ve H4 - 240 periyoduna karşılık geldiği ortaya çıkıyor değil mi?

M1 periyodu için case 1 değeri ve M15 periyodu için case 15 değeri seçildiğinde bu yapının çalışması gerekiyor. - sırayla?


İlk olarak, 1, 5 vb. sayılar yerine. adlandırılmış sabitleri kullanmak daha iyidir: PERIOD_M1, PERIOD_M5, vb.

İkincisi, örneğinizde bir hata var. Ba değişkeni her zaman 1 değerini alacaktır.

 
sss2019 :


Teşekkür ederim. Yani M1 periyodu 1 değerine ve M5 periyodu 5 değerine karşılık geliyor, H1 periyodunun 60 değerine ve H4 - 240 periyoduna karşılık geldiği ortaya çıkıyor değil mi?

M1 periyodu için case 1 değeri ve M15 periyodu için case 15 değeri seçildiğinde bu yapının çalışması gerekiyor. - sırayla?

1) her satıra ara eklerseniz bu işe yarar

2) 1, 5, 15 yerine PERIOD_M1 , PERIOD_M5 , PERIOD_M15 vb. kullanmak daha iyidir.

 

Tünaydın! Düşünün, bir kâra ulaşıldığında ticaret robotunun yaklaşık 50 kez pozisyon kapatmadığı gerçeğiyle karşılaştım. Daha sonra her şeyi, erteleyicileri ve her şeyi kapatmalı ve yeniden kurmalı. Kapanmama, sipariş karışıklığı ve dezavantajlar yaratır.

Bir düşünün, bazen TakeProfit'te yüz pound ile kapatılan bir siparişin OrderClosePrice'ın sıfıra eşit olduğu ortaya çıkıyor!!!!!

İşte, ekranda kendiniz görün, işte alttan beşinci satır, şartlı olarak 49 olarak adlandırılan emir, kâr al ile kapatıldı. Ve alttan dokuzuncu satırda OrderCloseFiyat sıfırdır!!!!!

 
PapaYozh :

İkincisi, örneğinizde bir hata var. Ba değişkeni her zaman 1 değerini alacaktır.

Ve neden? Yeterli mola yok mu?
 
dkfl.zrjdktdbx :

Tünaydın! Düşünün, bir kâra ulaşıldığında ticaret robotunun yaklaşık 50 kez pozisyon kapatmadığı gerçeğiyle karşılaştım. Daha sonra her şeyi, erteleyicileri ve her şeyi kapatmalı ve yeniden kurmalı. Kapanmama, sipariş karışıklığı ve dezavantajlar yaratır.

Bir düşünün, bazen TakeProfit'te yüz pound ile kapatılan bir siparişin OrderClosePrice'ın sıfıra eşit olduğu ortaya çıkıyor!!!!!

İşte, ekranda kendiniz görün, işte alttan beşinci satır, şartlı olarak 49 olarak adlandırılan emir, kâr al ile kapatıldı. Ve alttan dokuzuncu satırda OrderClosePrice sıfır!!!!!


Bu bir OrderClosePrice değil - bu bir Emir Kapanış Fiyatıdır - emrin kapanış fiyatı .

Danışmanınızın kodunun düzenlenmesi gerekiyor. Savaşan odur.

 

Anladım. Yani kodda o kadar karmaşık bir şey yok gibi görünüyor .. Şimdi göndereceğim

Sipariş verdiğimde wremjapomnim'deki zamanı hatırlıyorum. Kar al ile herhangi bir emir kapanır kapanmaz tüm emirleri silerim ve tekrar wremjapomnim sistemindeki zamanı hatırlayıp kurarım.

 for ( i= OrdersHistoryTotal ();i> 0 ;i--){ OrderSelect (i- 1 ,SELECT_BY_POS,MODE_HISTORY  );
Alert ( "wremjapomnim " ,wremjapomnim, "  OrderCloseTime(        )   " ,   OrderCloseTime ( ),   " " ,i , " OrderTakeProfit( ) " , OrderTakeProfit ( ),
   " OrderClosePrice(    )  " , OrderClosePrice (   ) );
if ( OrderTakeProfit ( )== OrderClosePrice (       )&&wremjapomnim< OrderCloseTime ( )|| ( NormalizeDouble ( OrderClosePrice ()- OrderTakeProfit (), Digits )< 2 * Point )
   &&wremjapomnim< OrderCloseTime (       )|| ( NormalizeDouble ( OrderClosePrice ()- OrderTakeProfit (), Digits )>- 2 * Point )&&wremjapomnim< OrderCloseTime (       )){C= 0 ;A= 1 ;   Alert ( "C" ,C, "A" ,A);
   for ( int ii= OrdersTotal ();ii> 0 ;ii--){ OrderSelect (ii- 1 ,SELECT_BY_POS );
   if ( OrderMagicNumber ( )== 2000 && OrderSymbol ()== Symbol ()|| OrderMagicNumber ( )== 1000 && OrderSymbol ()== Symbol ()){ 
   OrderDelete ( OrderTicket ( )) ; Alert ( "OrderDelete-vse" ,   GetLastError ( ) ); stsBUY= 0 ;stsSELL= 0 ;
   OrderClose ( OrderTicket ( ), OrderLots ( ), OrderClosePrice ( ) , 0 , CLR_NONE ); Alert ( "OrderClose-vse" ,   GetLastError ( ) ); C= 0 ; }     }              }
   
                                                      } 
 
 
melnikas :

Merhaba!

Lütfen çözmeme yardım et. Basit bir gösterge yazmaya çalışıyorum ama nedense boş değerler veriyor.

Bana öyle geliyor ki, hata bu yerde bir yerde yatıyor.


çünkü ExtVolumesBuffer dizisindeki bu işlemin alanı hiçbir şeyi değiştirmez.

Bir yerde eğrilik gösterdiğimi anlıyorum, ama burada nasıl olduğunu anlamıyorum.

Şimdiden teşekkürler!


Benim durumum çok zor değil mi?